349 lines
12 KiB
Plaintext
349 lines
12 KiB
Plaintext
GuildInfoPage = class("GuildInfoPage", SubView)
|
|
|
|
autoImport("GuildHeadCell")
|
|
autoImport("GuildActivityCell")
|
|
|
|
GuildInfoPage.GuildAassetId = 146;
|
|
GuildInfoPage.GuildItemId = 5500;
|
|
|
|
function GuildInfoPage:Init()
|
|
self:InitUI();
|
|
self:MapEvent();
|
|
end
|
|
|
|
local tempArgs = {};
|
|
function GuildInfoPage:InitUI()
|
|
self.guildName = self:FindComponent("GuildName", UILabel);
|
|
self.guildlv = self:FindComponent("GuildLv", UILabel);
|
|
self.expSlider = self:FindComponent("ExpSlider", UISlider);
|
|
self.chairManName = self:FindComponent("ChairManName", UILabel);
|
|
self.chairManSex = self:FindComponent("Sex", UISprite, self.chairManName.gameObject);
|
|
self.memberNum = self:FindComponent("MemberNum", UILabel);
|
|
self.maintenance = self:FindComponent("Maintenance", UILabel);
|
|
self.dailyCost = self:FindComponent("DailyCost", UILabel);
|
|
-- self.guildArea = self:FindComponent("GuildArea", UILabel);
|
|
self.dismissTime = self:FindComponent("DismissTime", UILabel);
|
|
self.changeZoneTime = self:FindComponent("ChangeZoneTime", UILabel);
|
|
self.guildCurrentline = self:FindComponent("Guild_CurrentLine", UILabel);
|
|
self.enterAreaButton = self:FindGO("EnterAreaButton");
|
|
self.maintenanceFullTip = self:FindGO("MaintenanceFullTip");
|
|
|
|
self.superGvg_Parent = self:FindGO("Tip5");
|
|
self.superGvg = self:FindComponent("SuerGvgLv", UILabel, self.superGvg_Parent);
|
|
self:AddClickEvent(self.enterAreaButton, function (go)
|
|
if(Game.Myself:IsDead())then
|
|
MsgManager.ShowMsgByIDTable(2500);
|
|
else
|
|
local currentRaidID = SceneProxy.Instance:GetCurRaidID()
|
|
local raidData = currentRaidID and Table_MapRaid[currentRaidID];
|
|
if(raidData and raidData.Type == 10)then
|
|
MsgManager.ShowMsgByIDTable(2821);
|
|
return;
|
|
end
|
|
ServiceGuildCmdProxy.Instance:CallEnterTerritoryGuildCmd();
|
|
self.container:CloseSelf();
|
|
end
|
|
end);
|
|
local headCellObj = self:FindGO("GuildHeadContainer");
|
|
local itemGO = self:LoadPreferb_ByFullPath(ResourcePathHelper.UICell("GuildHeadCell"), headCellObj);
|
|
self.headCell = GuildHeadCell.new(itemGO);
|
|
self.headCell:SetCallIndex(UnionLogo.CallerIndex.UnionList);
|
|
self.headCell:DeleteGO("choose");
|
|
|
|
self:AddClickEvent(itemGO, function (go)
|
|
local myMemberData = GuildProxy.Instance:GetMyGuildMemberData();
|
|
local canDo = GuildProxy.Instance:CanJobDoAuthority(myMemberData.job, GuildAuthorityMap.SetIcon);
|
|
if(canDo)then
|
|
self:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.GuildHeadChoosePopUp});
|
|
else
|
|
MsgManager.ShowMsgByIDTable(2636);
|
|
end
|
|
end);
|
|
|
|
self.centerOnChild = self:FindComponent("Grid", UICenterOnChild);
|
|
self.bordInfoInput = self:FindComponent("BordInfoInput", UIInput);
|
|
self.bordOptButton = self:FindGO("BordInfoOption");
|
|
self:AddClickEvent(self.bordOptButton, function (go)
|
|
self.bordInfoInput.isSelected = not self.bordInfoInput.isSelected;
|
|
end);
|
|
|
|
self.upgradeButton = self:FindGO("UpgradeBtn");
|
|
self:AddClickEvent(self.upgradeButton, function (go)
|
|
if(Game.Myself:IsDead())then
|
|
MsgManager.ShowMsgByIDTable(2500);
|
|
else
|
|
local currentRaidID = SceneProxy.Instance:GetCurRaidID()
|
|
local raidData = currentRaidID and Table_MapRaid[currentRaidID];
|
|
if(raidData and raidData.Type == 10)then
|
|
|
|
TableUtility.TableClear(tempArgs);
|
|
tempArgs.npcUID = 1;
|
|
local cmd = MissionCommandFactory.CreateCommand(tempArgs, MissionCommandVisitNpc);
|
|
if(cmd)then
|
|
Game.Myself:Client_SetMissionCommand( cmd );
|
|
end
|
|
self:PassEvent(GuildActivityCellEvent.TraceRoad);
|
|
else
|
|
ServiceGuildCmdProxy.Instance:CallEnterTerritoryGuildCmd();
|
|
end
|
|
end
|
|
end);
|
|
|
|
self.recruitInfoInput = self:FindComponent("RecruitInfoInput", UIInput);
|
|
self.recruitOptButton = self:FindGO("RecruitInfoOption");
|
|
self:AddClickEvent(self.recruitOptButton, function (go)
|
|
self.recruitInfoInput.isSelected = not self.recruitInfoInput.isSelected;
|
|
end);
|
|
local inputFunc = function(go, state)
|
|
self:UpdateInfoBordAnim(not state);
|
|
if(not state)then
|
|
self:ChangeGuildBordInfo();
|
|
end
|
|
end
|
|
|
|
self.filterType = FunctionMaskWord.MaskWordType.SpecialSymbol | FunctionMaskWord.MaskWordType.Chat
|
|
UIUtil.LimitInputCharacter(self.recruitInfoInput, GameConfig.System.guildrecruit_max, function (str)
|
|
return FunctionMaskWord.Me():ReplaceMaskWord(str, self.filterType);
|
|
end);
|
|
UIUtil.LimitInputCharacter(self.bordInfoInput, GameConfig.System.guildboard_max, function (str)
|
|
return FunctionMaskWord.Me():ReplaceMaskWord(str, self.filterType);
|
|
end);
|
|
|
|
self:AddSelectEvent(self.recruitInfoInput, inputFunc);
|
|
self:AddSelectEvent(self.bordInfoInput, inputFunc);
|
|
|
|
self.giScrollBg = self:FindGO("LeftDownBg");
|
|
self:AddPressEvent(self.giScrollBg, function (go, isPress)
|
|
self:UpdateInfoBordAnim(not isPress)
|
|
end);
|
|
|
|
local activityGrid = self:FindComponent("GuildActivityGrid", UIGrid);
|
|
self.activityCtl = UIGridListCtrl.new(activityGrid, GuildActivityCell, "GuildActivityCell");
|
|
self.activityCtl:AddEventListener(GuildActivityCellEvent.TraceRoad, self.TraceRoad, self);
|
|
self.activityCtl:AddEventListener(GuildActivityCellEvent.ClickHelp, self.ClickHelp, self);
|
|
|
|
self.noneTip = self:FindGO("NoneTip");
|
|
|
|
self:UpdateInfoBordAnim();
|
|
end
|
|
|
|
function GuildInfoPage:TraceRoad()
|
|
self.container:CloseSelf();
|
|
end
|
|
|
|
function GuildInfoPage:ClickHelp(data)
|
|
if(data == nil)then
|
|
return;
|
|
end
|
|
|
|
if(data.HelpID == nil)then
|
|
return;
|
|
end
|
|
|
|
local helpData = Table_Help[ data.HelpID ];
|
|
self:OpenHelpView(helpData);
|
|
end
|
|
|
|
function GuildInfoPage:UpdateGuildInfo()
|
|
local gdata = GuildProxy.Instance.myGuildData;
|
|
if(gdata)then
|
|
self.guildName.text = gdata.name;
|
|
self.guildlv.text = string.format("Lv.%s", tostring(gdata.level));
|
|
local gasset = gdata.asset
|
|
local expValue = gasset/gdata:GetUpgradeConfig().LevelupFund;
|
|
self.expSlider.value = expValue;
|
|
local chairMan = gdata:GetChairMan();
|
|
local myid = Game.Myself.data.id;
|
|
self.upgradeButton:SetActive(chairMan.id == myid and gasset >= gdata:GetUpgradeConfig().ReviewFund);
|
|
self.chairManName.text = chairMan.name;
|
|
self.chairManSex.spriteName = chairMan:IsBoy() and "friend_icon_man" or "friend_icon_woman";
|
|
self.memberNum.text = string.format("%s/%s", tostring(gdata.memberNum), tostring(gdata.maxMemberNum));
|
|
|
|
self.maintenance.text = gasset;
|
|
|
|
local guildSData = Table_Guild[gdata.level];
|
|
if(guildSData)then
|
|
local limit = guildSData.UpperLimit or 0;
|
|
local dayGet = gdata.assettoday or 0;
|
|
if(limit~=0 and guildSData~=0 and dayGet>=limit)then
|
|
self.maintenanceFullTip:SetActive(true);
|
|
else
|
|
self.maintenanceFullTip:SetActive(false);
|
|
end
|
|
end
|
|
|
|
if(gdata.staticData)then
|
|
self.dailyCost.text = string.format(ZhString.GuildInfoView_DailyCostTip, gdata.staticData.maintenanceCharge);
|
|
local headId = GuildProxy.Instance.myGuildData.portrait or 1;
|
|
local headData = GuildHeadData.new();
|
|
headData:SetBy_InfoId(headId);
|
|
headData:SetGuildId(gdata.id);
|
|
self.headCell:SetData(headData);
|
|
end
|
|
|
|
-- self.guildArea.text = ZhString.GuildInfoPage_Nothing;
|
|
self.guildCurrentline.text = ChangeZoneProxy.Instance:ZoneNumToString(gdata.zoneid); -- ZhString.GuildInfoPage_line
|
|
|
|
self.recruitInfoInput.value = gdata.recruitinfo;
|
|
self.bordInfoInput.value = gdata.boardinfo;
|
|
|
|
self:UpdateDismissTime();
|
|
self:UpdateChangeZoneTime();
|
|
self:UpdateAcitvityList();
|
|
|
|
local myMemberData = GuildProxy.Instance:GetMyGuildMemberData();
|
|
if(myMemberData)then
|
|
local canEditBord = GuildProxy.Instance:CanJobDoAuthority(myMemberData.job, GuildAuthorityMap.SetBordInfo)
|
|
self.bordOptButton:SetActive(canEditBord);
|
|
end
|
|
local myMemberData = GuildProxy.Instance:GetMyGuildMemberData();
|
|
if(myMemberData)then
|
|
local canEditRecruit = GuildProxy.Instance:CanJobDoAuthority(myMemberData.job, GuildAuthorityMap.SetRecruitInfo)
|
|
self.recruitOptButton:SetActive(canEditRecruit);
|
|
end
|
|
|
|
self:UpdateGvgDroiyaLv();
|
|
end
|
|
end
|
|
|
|
function GuildInfoPage:UpdateGvgDroiyaLv()
|
|
local GvgDroiyanReward_Config = GameConfig.GvgDroiyan.GvgDroiyanReward;
|
|
if(GvgDroiyanReward_Config == nil)then
|
|
self.superGvg_Parent.gameObject:SetActive(false);
|
|
return;
|
|
end
|
|
|
|
local gdata = GuildProxy.Instance.myGuildData;
|
|
if(gdata.supergvg_lv == nil or gdata.supergvg_lv == 0)then
|
|
self.superGvg_Parent.gameObject:SetActive(false);
|
|
return;
|
|
end
|
|
|
|
self.superGvg_Parent.gameObject:SetActive(true);
|
|
|
|
self.superGvg.text = GvgDroiyanReward_Config[gdata.supergvg_lv].LvDesc;
|
|
end
|
|
|
|
function GuildInfoPage:UpdateAcitvityList()
|
|
local activitylst = GuildProxy.Instance:GetGuildActivityList();
|
|
self.activityCtl:ResetDatas(activitylst);
|
|
self.noneTip:SetActive(#activitylst == 0);
|
|
end
|
|
|
|
function GuildInfoPage:UpdateDismissTime(time)
|
|
local gdata = GuildProxy.Instance.myGuildData;
|
|
self:UpdateCountDownTime(gdata.dismisstime, self.dismissTime, ZhString.GuildInfoPage_DismissGuildTip);
|
|
end
|
|
|
|
function GuildInfoPage:UpdateChangeZoneTime(time)
|
|
local gdata = GuildProxy.Instance.myGuildData;
|
|
local tip = "";
|
|
if(gdata.nextzone and gdata.nextzone ~= 0)then
|
|
tip = ChangeZoneProxy.Instance:ZoneNumToString(gdata.nextzone, ZhString.GuildInfoPage_GuildChangeline);
|
|
end
|
|
self:UpdateCountDownTime(gdata.zonetime, self.changeZoneTime, tip);
|
|
end
|
|
|
|
function GuildInfoPage:UpdateCountDownTime(time, label, tip)
|
|
local nowServerTime = ServerTime.CurServerTime()/1000;
|
|
|
|
TimeTickManager.Me():ClearTick(self, 1)
|
|
if(time > nowServerTime)then
|
|
TimeTickManager.Me():CreateTick(0,1000,function (deltatime)
|
|
if(time > ServerTime.CurServerTime()/1000)then
|
|
local leftDay, leftHour, leftMin, leftSec = ClientTimeUtil.GetFormatRefreshTimeStr( time )
|
|
if(leftDay > 0)then
|
|
label.text = string.format("%s%02d:%02d:%02d", tip, leftDay, leftHour, leftMin);
|
|
else
|
|
label.text = string.format("%s%02d:%02d:%02d", tip, leftHour, leftMin, leftSec);
|
|
end
|
|
else
|
|
label.text = "";
|
|
TimeTickManager.Me():ClearTick(self, 1)
|
|
end
|
|
end, self, 1)
|
|
else
|
|
label.text = "";
|
|
end
|
|
end
|
|
|
|
function GuildInfoPage:ChangeGuildBordInfo()
|
|
local myGuildData = GuildProxy.Instance.myGuildData;
|
|
if(myGuildData)then
|
|
local board, recruit;
|
|
if(self.bordInfoInput.value~=myGuildData.boardinfo)then
|
|
board = self.bordInfoInput.value;
|
|
end
|
|
if(self.recruitInfoInput.value~=myGuildData.recruitinfo)then
|
|
recruit = self.recruitInfoInput.value;
|
|
end
|
|
if(board or recruit)then
|
|
board = board=="" and "null" or board;
|
|
recruit = recruit=="" and "null" or recruit;
|
|
ServiceGuildCmdProxy.Instance:CallSetGuildOptionGuildCmd(board, recruit)
|
|
end
|
|
end
|
|
end
|
|
|
|
function GuildInfoPage:UpdateInfoBordAnim(isTween)
|
|
TimeTickManager.Me():ClearTick(self, 2)
|
|
if(nil == isTween)then
|
|
isTween = not self.bordInfoInput.isSelected and not self.recruitInfoInput.isSelected;
|
|
end
|
|
if(not isTween)then
|
|
return;
|
|
end
|
|
|
|
TimeTickManager.Me():CreateTick(6000, 6000,function ()
|
|
local childlist, cTrans = {}, self.centerOnChild.transform;
|
|
local centerIndex = 0;
|
|
for i=0, cTrans.childCount-1 do
|
|
childlist[i] = cTrans:GetChild(i);
|
|
if(childlist[i].gameObject == self.centerOnChild.centeredObject)then
|
|
centerIndex = i;
|
|
end
|
|
end
|
|
if(#childlist>0)then
|
|
local index = (centerIndex + 1) % (#childlist + 1);
|
|
local centerTrans = childlist[index];
|
|
self.centerOnChild:CenterOn(centerTrans);
|
|
end
|
|
end, self, 2);
|
|
end
|
|
|
|
function GuildInfoPage:MapEvent()
|
|
self:AddListenEvt(ServiceEvent.GuildCmdGuildDataUpdateGuildCmd, self.HandleGuildDataUpdate);
|
|
self:AddListenEvt(ServiceEvent.GuildCmdQueryPackGuildCmd, self.HandleGuildDataUpdate);
|
|
self:AddListenEvt(ServiceEvent.GuildCmdGuildMemberDataUpdateGuildCmd,self.HandleGuildDataUpdate)
|
|
self:AddListenEvt(ServiceEvent.GuildCmdQueryPackGuildCmd, self.UpdateGuildInfo);
|
|
self:AddListenEvt(ServiceEvent.GuildCmdPackUpdateGuildCmd, self.UpdateGuildInfo);
|
|
end
|
|
|
|
function GuildInfoPage:HandleGuildDataUpdate(note)
|
|
self:UpdateGuildInfo();
|
|
end
|
|
|
|
function GuildInfoPage:OnEnter()
|
|
GuildInfoPage.super.OnEnter(self);
|
|
|
|
local myGuildData = GuildProxy.Instance.myGuildData;
|
|
self.myGuildId = myGuildData.id;
|
|
|
|
self:UpdateGuildInfo();
|
|
|
|
self:RegisterRedTipCheck(SceneTip_pb.EREDSYS_GUILD_ICON, self.headCell.bg.gameObject, 42)
|
|
end
|
|
|
|
function GuildInfoPage:OnExit()
|
|
GuildInfoPage.super.OnExit(self);
|
|
|
|
TimeTickManager.Me():ClearTick(self)
|
|
|
|
FunctionGuild.Me():ClearCustomPicCache(self.myGuildId)
|
|
|
|
local cells = self.activityCtl:GetCells();
|
|
for i=1, #cells do
|
|
cells[i]:OnRemove();
|
|
end
|
|
end
|