local XUiGuildMain = XLuaUiManager.Register(XLuaUi, "UiGuildMain") local CSXTextManagerGetText = CS.XTextManager.GetText local RequestMemberGap = 10 local MAX_CHAT_WIDTH = 470 local CHAT_SUB_LENGTH = 18 local XUiGuildViewSetHeadPortrait = require("XUi/XUiGuild/XUiChildView/XUiGuildViewSetHeadPortrait") local XUiGridGuildBoxItem = require("XUi/XUiGuild/XUiChildItem/XUiGridGuildBoxItem") local GuildBuildIntervalWhenMaxLevel = CS.XGame.Config:GetInt("GuildBuildIntervalWhenMaxLevel") local GlobalLastRequestMember = 0 local GlobalRequestGap = CS.XGame.ClientConfig:GetInt("GuildGlobalRequestMember") -- 子页面枚举 local PARENT_PAGE -- 子页面控件脚本字典 local ChildUiPage function XUiGuildMain:OnAwake() self.GiftBoxes = {} self.LastRequestMember = 0 self:InitChildView() self.ChildPage = {} self:InitChildUiPageData() self:InitModel() end function XUiGuildMain:OnDestroy() self:ChildPageOnDestroy() self.GuildWarEntry:OnDestroy() end function XUiGuildMain:OnStart(defaultIndex) self:SetGuildInfo() self:SetUiVisable() self:SetActiveGift() self:UpdateGuildNews() self:OnDeclarationChanged() self:OnInterComChanged() self:UpdateGuildMemberCount() -- 获取成员,测试要求 local now = XTime.GetServerNowTimestamp() -- 第一次进入的时候AsyncGuildData会派发更新 if GlobalLastRequestMember == 0 then GlobalLastRequestMember = now end if now - GlobalLastRequestMember >= GlobalRequestGap then GlobalLastRequestMember = now local guildId = XDataCenter.GuildManager.GetGuildId() XDataCenter.GuildManager.GetGuildMembers(guildId) end end function XUiGuildMain:OnEnable() self.BtnTabChallenge:ShowReddot(XDataCenter.GuildBossManager.IsReward()) local timeLeft = XDataCenter.GuildManager.GuildBossEndTime() - XTime.GetServerNowTimestamp() if timeLeft < 0 then timeLeft = 0 end local timeStr = XUiHelper.GetTime(timeLeft, XUiHelper.TimeFormatType.MAINBATTERY) self.BtnTabChallenge:SetNameByGroup(1, CS.XTextManager.GetText("GuildBossCountDown", timeStr)) self.GuildWarEntry:OnEnable() self:OpenChildPage(self.CurrentPageIndex or PARENT_PAGE.MAIN) if XDataCenter.GuildWarManager.CheckActivityIsInTime() then XDataCenter.GuildWarManager.GetActivityData(function() XDataCenter.GuildWarManager.RequestPopup() end) end end function XUiGuildMain:OnGetEvents() return { XEventId.EVENT_GUILD_RECEIVE_CHAT, XEventId.EVENT_GUILD_RANKLEVEL_CHANGED, XEventId.EVENT_GUILD_WEEKLY_RESET, XEventId.EVENT_GUILD_LEVEL_CHANGED, XEventId.EVENT_GUILD_GIFT_CONTRIBUTE_CHANGED, XEventId.EVENT_GUILD_CONTRIBUTE_CHANGED, XEventId.EVNET_GUILD_LEADER_NAME_CHANGED, XEventId.EVENT_GUILD_MEMBERCOUNT_CHANGED, XEventId.EVENT_GUILD_NAME_CHANGED, XEventId.EVENT_GUILD_DECLARATION_CHANGED, XEventId.EVENT_GUILD_INTERCOM_CHANGED, XEventId.EVENT_GUILD_WAR_DIFFICULTY_SELECTED, } end function XUiGuildMain:OnNotify(evt, ...) if evt == XEventId.EVENT_GUILD_RECEIVE_CHAT then self:OnGuildChannelDispatchChat() elseif evt == XEventId.EVENT_GUILD_RANKLEVEL_CHANGED then self:OnGuildRankLevelChanged() elseif evt == XEventId.EVENT_GUILD_WEEKLY_RESET then self:OnGuildWeeklyReset() elseif evt == XEventId.EVENT_GUILD_CONTRIBUTE_CHANGED or evt == XEventId.EVENT_GUILD_GIFT_CONTRIBUTE_CHANGED then self:UpdateGuildGiftContribute() elseif evt == XEventId.EVENT_GUILD_LEVEL_CHANGED then self:UpdateInformationInfo() elseif evt == XEventId.EVNET_GUILD_LEADER_NAME_CHANGED then self:OnLeaderChanged() elseif evt == XEventId.EVENT_GUILD_MEMBERCOUNT_CHANGED then self:UpdateGuildMemberCount() elseif evt == XEventId.EVENT_GUILD_NAME_CHANGED then self:OnGuildNameChanged() elseif evt == XEventId.EVENT_GUILD_DECLARATION_CHANGED then self:OnDeclarationChanged() elseif evt == XEventId.EVENT_GUILD_INTERCOM_CHANGED then self:OnInterComChanged() elseif evt == XEventId.EVENT_GUILD_WAR_DIFFICULTY_SELECTED then self:OpenChildPage(PARENT_PAGE.MAIN) end end -- 周重置 function XUiGuildMain:OnGuildWeeklyReset() self:SetGuildInfo() self:SetActiveGift() self:UpdateGuildMemberCount() end -- 玩家职位变化 function XUiGuildMain:OnGuildRankLevelChanged() self:SetGuildInfo() self:UpdateGuildMemberCount() end -- 公会频道消息 function XUiGuildMain:OnGuildChannelDispatchChat() self:UpdateGuildNews() end -- 更新礼包建设度 function XUiGuildMain:UpdateGuildGiftContribute() self:SetGuildInfo() self:SetActiveGift() end -- 更新主界面信息 function XUiGuildMain:UpdateInformationInfo() self:SetGuildInfo() end -- 更新紧急维护状态 function XUiGuildMain:UpdateMaintainState() if self.tabViews[XDataCenter.GuildManager.GuildFunctional.Info] then self.tabViews[XDataCenter.GuildManager.GuildFunctional.Info]:UpdateInformationInfo() end end -- custom method function XUiGuildMain:InitChildView() self.AssetPanel = XUiPanelAsset.New(self, self.PanelAsset, XDataCenter.ItemManager.ItemId.FreeGem, XDataCenter.ItemManager.ItemId.ActionPoint, XDataCenter.ItemManager.ItemId.Coin) self.BtnBack.CallBack = function() self:OnBtnBackClick() end --self.BtnMainUi.CallBack = function() self:OnBtnMainUiClick() end self:BindHelpBtn(self.BtnHelp, "GuildMainHelp") self.BtnHelp.CallBack = function() self:OnBtnHelpClick() end XRedPointManager.AddRedPointEvent(self.RedSetting, self.RefreshSettingRed, self, { XRedPointConditions.Types.CONDITION_GUILD_APPLYLIST }) XRedPointManager.AddRedPointEvent(self.RedNews, self.RefreshNewsRed, self, { XRedPointConditions.Types.CONDITION_GUILD_APPLYLIST }) -- 设置面板 --- self.BtnAdministration.CallBack = function() self.GuildSet.gameObject:SetActiveEx(true) end self.BtnDarkCloseBg.CallBack = function() self.GuildSet.gameObject:SetActiveEx(false) end -- 退出公会 self.BtnGuildTuchu.CallBack = function() self:OnQuickGuildClick() end -- 职位自定义名称 self.BtnGuildZhiwei.CallBack = function() self:OnJobChangeClick() end -- 招募设置 self.BtnGuildZhaomu.CallBack = function() self:OnRecruitClick() end -- 申请函 self.BtnGuildShenqinghan.CallBack = function() self:OnApplyClick() end -- 设置 self.BtnGuildShezhi.CallBack = function() self:OnSettingClick() end -- 改名 self.BtnGuildSetName.CallBack = function() self:OnSetGuildName() end --举报 if self.BtnGuildReport then self.BtnGuildReport.CallBack = function() self:OnBtnGuildReportClick() end end --- end --- -- 公会宣言 self.BtnAnnounce.CallBack = function() self:OnBtnAnnounceClick() end -- 内部通讯 self.BtnInterCom.CallBack = function() self:OnBtnInterComClick() end -- 三个按钮 self.BtnRanking.CallBack = function() self:OnBtnRaningClick() end self.BtnJournal.CallBack = function() self:OnBtnJournalClick() end self.BtnDeclaration.CallBack = function() self:OnBtnDeclarationClick() end -- 更换头像 self.GuildViewSetHeadPortrait = XUiGuildViewSetHeadPortrait.New(self.PanelSetHeadPotrait,self) self.BtnSetFace.CallBack = function() self:OnBtnSetFaceClick() end -- 其他模块 self.BtnTabMember.CallBack = function() self:OnBtnTabMemberClick() end self.BtnTabChallenge.CallBack = function() self:OnBtnChallengeClick() end self.BtnTabGift.CallBack = function() self:OnBtnTabGiftClick() end self.BtnChat.CallBack = function() self:OnBtnChatClick() end if self.SwitchGuildDorm then local btn = require("XUi/XUiGuildDorm/XUiGuildSwitchBtn") self.BtnSwitchGuild = btn.New(self, self.SwitchGuildDorm, false) self.SwitchGuildDorm.gameObject:SetActiveEx(not XDataCenter.GuildDormManager.GetIsHaveTempError()) end --公会战入口 local guildWarEntryButtonScript = require("XUi/XUiGuildWar/XUiGuildWarEntryButton") self.GuildWarEntry = guildWarEntryButtonScript.New(self.BtnGuildWarEntry,function() self:OnBtnGuildWarEntryClick() end) XRedPointManager.AddRedPointEvent(self.BtnGuildWarEntry, self.OnCheckGuildWarEntryRedPoint, self, { XRedPointConditions.Types.CONDITION_GUILDWAR_TASK, }) end function XUiGuildMain:RefreshSettingRed(count) self.RedSetting.gameObject:SetActiveEx(count >= 0) end function XUiGuildMain:RefreshNewsRed(count) self.RedNews.gameObject:SetActiveEx(count >= 0) end function XUiGuildMain:OnBtnBackClick() if self.CurrentPageIndex ~= PARENT_PAGE.MAIN then self:OpenChildPage(PARENT_PAGE.MAIN) else XLuaUiManager.RunMain() end end function XUiGuildMain:OnBtnMainUiClick() XLuaUiManager.RunMain() end function XUiGuildMain:OnBtnHelpClick() if self.CurrentPageIndex == PARENT_PAGE.GUILDWAR then XUiManager.ShowHelpTip("GuildWarHelp") else XUiManager.ShowHelpTip("GuildMainHelp") end end -- 退出公会 function XUiGuildMain:OnQuickGuildClick() if self:ChecKickOut() then return end self.GuildSet.gameObject:SetActiveEx(false) local isLeader = XDataCenter.GuildManager.IsGuildLeader() if isLeader then local memberCount = XDataCenter.GuildManager.GetMemberCount() if memberCount > 1 then XUiManager.TipMsg(CS.XTextManager.GetText("GuildQuitRemovePosition")) return else local title = CS.XTextManager.GetText("GuildDialogTitle") local content = CS.XTextManager.GetText("GuildQuitLastMember") XUiManager.DialogTip(title, content, XUiManager.DialogType.Normal, function() end, function() XDataCenter.GuildManager.QuitGuild(function() if XLuaUiManager.IsUiShow("UiGuildMain") then XLuaUiManager.Close("UiGuildMain") end end) end) end else local title = CS.XTextManager.GetText("GuildDialogTitle") local content = CS.XTextManager.GetText("GuildQuitMemberQuit") XUiManager.DialogTip(title, content, XUiManager.DialogType.Normal, function() end, function() XDataCenter.GuildManager.QuitGuild(function() if XLuaUiManager.IsUiShow("UiGuildMain") then XLuaUiManager.Close("UiGuildMain") end end) end) end end -- 职位 function XUiGuildMain:OnJobChangeClick() if self:ChecKickOut() then return end if self:HasModifyAccess() then return end XLuaUiManager.Open("UiGuildCustomName") self.GuildSet.gameObject:SetActiveEx(false) end -- 招募 function XUiGuildMain:OnRecruitClick() if self:ChecKickOut() then return end if self:HasModifyAccess() then return end local currentPageNo = XDataCenter.GuildManager.GetRecommendPageNo() XDataCenter.GuildManager.GuildRecruitRecommendRequest(currentPageNo, function() XLuaUiManager.Open("UiGuildRecruit", XGuildConfig.EnlistType.Recruit) self.GuildSet.gameObject:SetActiveEx(false) end) end -- 邀请函 function XUiGuildMain:OnApplyClick() if self:ChecKickOut() then return end if self:HasModifyAccess() then return end local currentPageNo = XDataCenter.GuildManager.GetRecommendPageNo() XDataCenter.GuildManager.GuildRecruitRecommendRequest(currentPageNo, function() XLuaUiManager.Open("UiGuildRecruit", XGuildConfig.EnlistType.News) self.GuildSet.gameObject:SetActiveEx(false) end) end -- 招募设置 function XUiGuildMain:OnSettingClick() if self:ChecKickOut() then return end if self:HasModifyAccess() then return end XLuaUiManager.Open("UiGuildChangePosition", XGuildConfig.TipsType.ApplySetting) self.GuildSet.gameObject:SetActiveEx(false) end -- 公会改名 function XUiGuildMain:OnSetGuildName() if self:ChecKickOut() then return end if not XDataCenter.GuildManager.IsGuildLeader() then local leaderName = XDataCenter.GuildManager.GetRankNameByLevel(XGuildConfig.GuildRankLevel.Leader) XUiManager.TipMsg(CS.XTextManager.GetText("GuildNotAccessSetName", leaderName)) return end XLuaUiManager.Open("UiGuildChangePosition", XGuildConfig.TipsType.SetName) self.GuildSet.gameObject:SetActiveEx(false) end --举报公会 function XUiGuildMain:OnBtnGuildReportClick() local guildId = XDataCenter.GuildManager.GetGuildId() local titleName = XDataCenter.GuildManager.GetGuildName() local guildDesclaration = XDataCenter.GuildManager.GetGuildDeclaration() local guildInsideIntroduction = XDataCenter.GuildManager.GetGuildInterCom() local data = {Id = guildId, TitleName = titleName, GuildOuterIntroduction = guildDesclaration, GuildInsideIntroduction = guildInsideIntroduction} XLuaUiManager.Open("UiReport", data, nil, nil, XReportConfigs.EnterType.Guild) end -- 公会排名 function XUiGuildMain:OnBtnRaningClick() XLuaUiManager.Open("UiGuildRankingListSwitch") end -- 成员 function XUiGuildMain:OnBtnTabMemberClick() local guildId = XDataCenter.GuildManager.GetGuildId() local now = XTime.GetServerNowTimestamp() if now - self.LastRequestMember >= RequestMemberGap then self.LastRequestMember = now XDataCenter.GuildManager.GetGuildMembers(guildId, function() XLuaUiManager.Open("UiGuildRongyu") end) else XLuaUiManager.Open("UiGuildRongyu") end end -- 挑战 function XUiGuildMain:OnBtnChallengeClick() if not XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.GuildBoss) then return end XDataCenter.GuildBossManager.SetFirstEnterMark(true) XDataCenter.GuildBossManager.OpenGuildBossHall() end -- 福利 function XUiGuildMain:OnBtnTabGiftClick() XLuaUiManager.Open("UiGuildPanelWelfare") end -- 聊天 function XUiGuildMain:OnBtnChatClick() XUiHelper.OpenUiChatServeMain(false, ChatChannelType.Guild, ChatChannelType.World) end --公会宿舍 function XUiGuildMain:OnBtnGuildDormClick() if XLuaUiManager.IsUiLoad("UiGuildDormMain") then --由于Ui底层问题,若公会宿舍主页已经打开,需要重新恢复该页面而不是打开一个新的 --这里跟设计约定若要实现此功能,只能用类似“返回”的做法(即保持上一个页面是公会宿舍主页,这里直接关闭) self:Close() else XDataCenter.GuildDormManager.EnterGuildDorm() end end -- 日志、动态 function XUiGuildMain:OnBtnJournalClick() -- 中途被踢出公会 if self:ChecKickOut() then return end XLuaUiManager.Open("UiGuildLog") end -- 迎新 function XUiGuildMain:OnBtnDeclarationClick() if XDataCenter.GuildManager.IsGuildTourist() then XUiManager.TipMsg(CS.XTextManager.GetText("GuildTourstAccess")) return end XLuaUiManager.Open("UiGuildWelcomeWord") end -- 切换公会图标 function XUiGuildMain:OnBtnSetFaceClick() if not XDataCenter.GuildManager.IsGuildAdminister() then XUiManager.TipMsg(CS.XTextManager.GetText("GuildNotAdministor")) return end self.PanelSetHeadPotrait.gameObject:SetActiveEx(true) local curHeadPortrait = XDataCenter.GuildManager.GetGuildHeadPortrait() self.GuildViewSetHeadPortrait:OnRefresh(curHeadPortrait) end -- 新图标 function XUiGuildMain:RecordGuildIconId(selectHeadPortraitId) local curHeadPortrait = XDataCenter.GuildManager.GetGuildHeadPortrait() if selectHeadPortraitId ~= curHeadPortrait then XDataCenter.GuildManager.GuildChangeIconRequest(selectHeadPortraitId, function() local cfg = XGuildConfig.GetGuildHeadPortraitById(selectHeadPortraitId) if cfg then self.RImgGuildIcon:SetRawImage(cfg.Icon) end end) end end -- 新名字 function XUiGuildMain:OnGuildNameChanged() self.TxtGuildName.text = XDataCenter.GuildManager.GetGuildName() end -- 新宣言 function XUiGuildMain:OnDeclarationChanged() self.TxtAnnounce.text = XDataCenter.GuildManager.GetGuildDeclaration() end -- 新内部通讯 function XUiGuildMain:OnInterComChanged() local notice = XDataCenter.GuildManager.GetGuildInterCom() if notice == nil or notice == "" then self.TxtInterCom.text = CS.XTextManager.GetText("GuildInterComDes") else self.TxtInterCom.text = notice end end -- 修改公会宣言 function XUiGuildMain:OnBtnAnnounceClick() -- 中途被踢出公会 if self:ChecKickOut() then return end -- 职位变更 if self:HasModifyAccess() then return end XLuaUiManager.Open("UiGuildInformation", XGuildConfig.InformationType.Announcement) end -- 修改内部通讯 function XUiGuildMain:OnBtnInterComClick() -- 中途被踢出公会 if self:ChecKickOut() then return end -- 职位变更 if self:HasModifyAccess() then return end XLuaUiManager.Open("UiGuildInformation", XGuildConfig.InformationType.InternalCommunication) end -- 公会信息 function XUiGuildMain:SetGuildInfo() local guildId = XDataCenter.GuildManager.GetGuildId() local guildLevel = XDataCenter.GuildManager.GetGuildLevel() local curBuild = XDataCenter.GuildManager.GetBuild() self.RImgGuildIcon:SetRawImage(XDataCenter.GuildManager.GetGuildIconId()) self.TxtGuildName.text = XDataCenter.GuildManager.GetGuildName() self.TxtLeader.text = XDataCenter.GuildManager.GetGuildLeaderName() self.GuildLevelTemplate = XGuildConfig.GetGuildLevelDataBylevel(guildLevel) if XDataCenter.GuildManager.CheckAllTalentLevelMax() then local gloryLevel = XDataCenter.GuildManager.GetGloryLevel() self.TxtLvNum.text = string.format("%d(%d)", guildLevel, gloryLevel) else self.TxtLvNum.text = string.format("%d", guildLevel) end if XDataCenter.GuildManager.IsGuildLevelMax(guildLevel) then -- 达到最高等级 self.ImgProgress.fillAmount = curBuild * 1.0 / GuildBuildIntervalWhenMaxLevel self.TxtNum.text = string.format("%s/%s", tostring(curBuild), tostring(GuildBuildIntervalWhenMaxLevel)) else -- 未到达最高等级 self.TxtLvNum.text = guildLevel self.ImgProgress.fillAmount = curBuild * 1.0 / self.GuildLevelTemplate.Build self.TxtNum.text = string.format("%s/%s", tostring(curBuild), tostring(self.GuildLevelTemplate.Build)) end end -- 隐藏非管理员图标 function XUiGuildMain:SetUiVisable() if not XDataCenter.GuildManager.IsGuildAdminister() then self.BtnInterCom.gameObject:SetActiveEx(false) self.BtnAnnounce.gameObject:SetActiveEx(false) self.BtnSetFace.gameObject:SetActiveEx(false) end end function XUiGuildMain:OnLeaderChanged() self.TxtLeader.text = XDataCenter.GuildManager.GetGuildLeaderName() end -- 公会频道 function XUiGuildMain:UpdateGuildNews() local chatList = XDataCenter.ChatManager.GetGuildChatList() if not chatList then return end local lastChat = chatList[1] if not lastChat then return end if not string.IsNilOrEmpty(lastChat.CustomContent) then self.TxtMessageContent.supportRichText = true else self.TxtMessageContent.supportRichText = false end local nameRemark = XDataCenter.SocialManager.GetPlayerRemark(lastChat.SenderId, lastChat.NickName) local content = lastChat.Content if lastChat.MsgType == ChatMsgType.System then content = string.format("%s:%s", CS.XTextManager.GetText("GuildChannelTypeAll"), lastChat.Content) self.TxtMessageContent.text = content else content = lastChat.Content if lastChat.MsgType == ChatMsgType.Emoji then content = CS.XTextManager.GetText("GuildEmojiReplace") end self.TxtMessageContent.text = string.format("%s:%s", nameRemark, content) end if XUiHelper.CalcTextWidth(self.TxtMessageContent) > MAX_CHAT_WIDTH then self.TxtMessageContent.text = string.Utf8Sub(self.TxtMessageContent.text, 1, CHAT_SUB_LENGTH) .. [[...]] end end -- 活跃度礼包 function XUiGuildMain:SetActiveGift() local giftContribute = XDataCenter.GuildManager.GetGiftContribute() local giftGuildLevel = XDataCenter.GuildManager.GetGiftGuildLevel() self.AllBoxesConfig = XGuildConfig.GetGuildGiftByGuildLevel(giftGuildLevel) if not self.AllBoxesConfig then return end self.MaxContribute = 0 for _, v in pairs(self.AllBoxesConfig) do if v.GiftContribute > self.MaxContribute then self.MaxContribute = v.GiftContribute end end for i = 1, #self.AllBoxesConfig do if not self.GiftBoxes[i] then local ui = CS.UnityEngine.Object.Instantiate(self.PanelActive) local grid = XUiGridGuildBoxItem.New(ui, self) grid.Transform:SetParent(self.PanelGift, false) self.GiftBoxes[i] = grid end self.GiftBoxes[i].GameObject:SetActiveEx(true) self.GiftBoxes[i]:RefreshGift(self.AllBoxesConfig[i], i, self.MaxContribute) end for i = #self.AllBoxesConfig + 1, #self.GiftBoxes do self.GiftBoxes[i].GameObject:SetActiveEx(false) end self.TxtDailyActive.text = giftContribute if self.MaxContribute > 0 then self.ImgDaylyActiveProgress.fillAmount = giftContribute * 1.0 / self.MaxContribute end end -- 公会人数 function XUiGuildMain:UpdateGuildMemberCount() local curCount = XDataCenter.GuildManager.GetOnlineMemberCount() --local maxCount = XDataCenter.GuildManager.GetMemberMaxCount() self.BtnTabMember:SetNameByGroup(1, CSXTextManagerGetText("GuildMemberOnlineCount", curCount)) end function XUiGuildMain:HasModifyAccess() if not XDataCenter.GuildManager.IsGuildAdminister() then XUiManager.TipMsg(CS.XTextManager.GetText("GuildNotAdministor")) return true end return false end function XUiGuildMain:ChecKickOut() if not XDataCenter.GuildManager.IsJoinGuild() then XUiManager.TipMsg(CS.XTextManager.GetText("GuildKickOutByAdministor")) self:Close() return true end return false end --================================== --以下为加入公会战后的修改 --公会战界面以子场景的形式,追加了镜头变更的操作 --================================== --============= --显示主界面 --============= function XUiGuildMain:ShowMain() --主界面关闭镜头模糊 self:SetActiveScene3DBlur(false) self:UpdateCamera(PARENT_PAGE.MAIN) self.PanelInfo.gameObject:SetActiveEx(true) self.PanelLeftBtn.gameObject:SetActiveEx(true) self.PanelRightBtn.gameObject:SetActiveEx(true) self.GuildWarEntry:OnShow() end --============= --隐藏主界面 --============= function XUiGuildMain:HideMain() self.PanelInfo.gameObject:SetActiveEx(false) self.PanelLeftBtn.gameObject:SetActiveEx(false) self.PanelRightBtn.gameObject:SetActiveEx(false) self.PanelGuildWarEntry.gameObject:SetActiveEx(false) end --================ --初始化枚举与字典 --================ function XUiGuildMain:InitChildUiPageData() PARENT_PAGE = { MAIN = 1, -- 主页面 GUILDWAR = 2, -- 公会战页面 } ChildUiPage = { [PARENT_PAGE.GUILDWAR] = require("XUi/XUiGuild/ChildPage/XUiGuildWarPage"), } end --================ --打开子页面,打开新页面时会关闭旧的子页面 --由于这是后来新的需求的原因,这里主页面作特殊处理 --================ function XUiGuildMain:OpenChildPage(pageIndex, ...) if self.CurrentPageIndex == pageIndex then if self.CurrentPageIndex ~= PARENT_PAGE.MAIN then self.ChildPage[self.CurrentPageIndex]:OnRepeatOpen() end return end if self.CurrentPageIndex then if self.CurrentPageIndex ~= PARENT_PAGE.MAIN then self.ChildPage[self.CurrentPageIndex]:HidePage() else self:HideMain() end end if self.ChildPage[pageIndex] then self.CurrentPageIndex = pageIndex if pageIndex ~= PARENT_PAGE.MAIN then self.ChildPage[self.CurrentPageIndex]:ShowPage(...) else self:ShowMain() end return end self.CurrentPageIndex = pageIndex if pageIndex ~= PARENT_PAGE.MAIN then self.ChildPage[pageIndex] = ChildUiPage[pageIndex].New(self) self.ChildPage[pageIndex]:ShowPage(...) else self:ShowMain() end end -- 3D场景相机数量 local CAMERA_NUM = 2 --================ --初始化角色模型和场景相机 --================ function XUiGuildMain:InitModel() local root = self.UiModelGo.transform local camera = root:FindTransform("NearCamera") self.Scene3DBlur = camera and camera:GetComponent("XUiScene3DBlur") self.CameraNear = { [PARENT_PAGE.MAIN] = root:FindTransform("UiMainCamera"), [PARENT_PAGE.GUILDWAR] = root:FindTransform("UiGuildWarCamera"), } end --================ --刷新场景相机 --================ function XUiGuildMain:UpdateCamera(pageIndex) self.CurCameraIndex = pageIndex for i = 1, CAMERA_NUM do if self.CurCameraIndex ~= i then self.CameraNear[i].gameObject:SetActiveEx(false) end end if self.CameraNear[self.CurCameraIndex] then self.CameraNear[self.CurCameraIndex].gameObject:SetActiveEx(true) end end --================ --读取面板控件 --================ function XUiGuildMain:LoadChildPrefab(pageIndex, assetPath) return self["Panel" .. pageIndex]:LoadPrefab(assetPath) end --================ --销毁子页面 --================ function XUiGuildMain:ChildPageOnDestroy() for _, page in pairs(self.ChildPage) do if page.OnDestroy then page:OnDestroy() end end end --================ --设置镜头模糊 --================ function XUiGuildMain:SetActiveScene3DBlur(value) if self.Scene3DBlur then self.Scene3DBlur.enabled = value end end function XUiGuildMain:OnCheckGuildWarEntryRedPoint(count) self.BtnGuildWarEntry:ShowReddot(count >= 0) end --================ --点击公会战入口 --================ function XUiGuildMain:OnBtnGuildWarEntryClick() local currentRoundId = XDataCenter.GuildWarManager.GetCurrentRoundId() if currentRoundId == 1 then local now = XTime.GetServerNowTimestamp() local roundStartTime = XDataCenter.GuildWarManager.GetRoundStartTime() if now < roundStartTime then XUiManager.TipText("GuildWarNoInRound") return end end if XDataCenter.GuildWarManager.CheckIsSkipCurrentRound() then XUiManager.TipText("GuildWarIsSkip") return end local haveSelectDifficulty = XDataCenter.GuildWarManager.CheckHaveDifficultySelected() if haveSelectDifficulty then XDataCenter.GuildWarManager.GetActivityData(function () XLuaUiManager.Open("UiGuildWarStageMain") end) else self:OpenChildPage(PARENT_PAGE.GUILDWAR) end end