2025-06-04 05:02:57 +08:00

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