local XUiGridWeeklyManager = require("XUi/XUiFuben/Main/XUiGridWeeklyManager") local XUiPanelActivity = require("XUi/XUiFuben/Main/XUiPanelActivity") local XUiBtnDownload = require("XUi/XUiDlcDownload/XUiBtnDownload") local XUiPanelMain = XClass(XSignalData, "XUiPanelMain") --######################## 静态方法 BEGIN ######################## function XUiPanelMain.CheckHasRedPoint() local FubenManagerEx = XDataCenter.FubenManagerEx local managers = FubenManagerEx.GetShowOnMainWeeklyManagers(true) for _, manager in ipairs(managers) do if manager:ExCheckIsShowRedPoint() then return true end end return false end --######################## 静态方法 END ######################## function XUiPanelMain:Ctor(ui, rootUi) XUiHelper.InitUiClass(self, ui) self.RootUi = rootUi self.UiPanelActivity = nil self.FubenManagerEx = XDataCenter.FubenManagerEx self.ItemManager = XDataCenter.ItemManager self.CurrentChapter = nil self.CurrentChapterManager = nil ---@type XUiGridWeeklyManager[] self.GridWeeklyDic = {} self.FirstTagIndex = nil self.ActivityManagerIndex = nil self.RefreshTimeId = XFubenConfigs.GetMainPanelTimeId() self.VersionName = XFubenConfigs.GetMainPanelName() self.VersionItemId = XFubenConfigs.GetMainPanelItemId() ---@type XUiBtnDownload self.GirdBtnDownload = XUiBtnDownload.New(self.BtnDownload) self.ImgLock = self.PanelLock.transform:Find("ImgLock") self:RegisterUiEvents() end function XUiPanelMain:SetData(firstIndex, activityManagerIndex) self.FirstTagIndex = firstIndex self.ActivityManagerIndex = activityManagerIndex self:Refresh() if activityManagerIndex and activityManagerIndex > 0 then self:OnBtnActivityClicked() end -- self:RefreshBg() 移到外层去了 end function XUiPanelMain:OnEnable() self.InTime = nil self:Refresh() -- 刷新当前活动 if self.UiPanelActivity then self.UiPanelActivity:OnEnable() end end function XUiPanelMain:TimeUpdate() for _, grid in pairs(self.GridWeeklyDic) do grid:RefreshTimeTips() end self:RefreshCurrentActivity() if self.UiPanelActivity and self.UiPanelActivity.GameObject.activeSelf then self.UiPanelActivity:TimeUpdate() end -- self:RefreshBg() end function XUiPanelMain:Refresh() -- 刷新当前活动 self:RefreshCurrentActivity() -- 刷新当前章节 self:RefreshCurrentChapter() -- 刷新周常 self:RefreshWeeklyManagers() end --######################## 私有方法 ######################## function XUiPanelMain:RegisterUiEvents() XUiHelper.RegisterClickEvent(self, self.BtnActivity, self.OnBtnActivityClicked) XUiHelper.RegisterClickEvent(self, self.BtnChapter, self.OnBtnChapterClicked) if not XTool.UObjIsNil(self.BtnShop) then XUiHelper.RegisterClickEvent(self, self.BtnShop, self.OpenActivityShop) end end function XUiPanelMain:OnBtnActivityClicked() if not XFunctionManager.CheckInTimeByTimeId(self.RefreshTimeId) then return end self:OpenActivityUi() end function XUiPanelMain:OnBtnChapterClicked() if self.GirdBtnDownload:CheckNeedDownload() then self.GirdBtnDownload:OnBtnClick() return end if self.CurrentChapter == nil then return end self.CurrentChapterManager:ExOpenChapterUi(self.CurrentChapter, self.CurrentChapter:GetDifficulty()) end -- 刷新周常活动 function XUiPanelMain:RefreshWeeklyManagers() self.FubenManagerEx.CheckShowManagersFinish(function() self:_RefreshWeeklyManagers() end) end function XUiPanelMain:_RefreshWeeklyManagers() local managers = {} local source_managers = self.FubenManagerEx.GetShowOnMainWeeklyManagers() -- 海外会有周常活动关闭而需要屏蔽按钮的情况 for _, m in pairs(source_managers) do if m:OverseaActive() then table.insert(managers, m) end end table.sort(managers, function (managerA, managerB) return managerA:ExGetConfig().Priority < managerB:ExGetConfig().Priority end) local manager = nil local go = nil for index = 1, 4 do manager = managers[index] if self["WeeklyGrid" .. index] and self["WeeklyGrid" .. index].gameObject then self["WeeklyGrid" .. index].gameObject:SetActiveEx(manager ~= nil) if manager then local grid = self.GridWeeklyDic[index] if grid == nil then go = XUiHelper.Instantiate(self.GridWeekActivity, self["WeeklyGrid" .. index]) go.gameObject:SetActiveEx(true) grid = XUiGridWeeklyManager.New(go) self.GridWeeklyDic[index] = grid end grid:SetData(managers[index]) end end end end function XUiPanelMain:RefreshCurrentActivity() local inTime = XFunctionManager.CheckInTimeByTimeId(self.RefreshTimeId) -- 防止按钮一直刷新 检测到切换时再刷新 if inTime ~= self.InTime then self:Change(inTime) end self.InTime = inTime end function XUiPanelMain:Change(inTime) -- v2.0 ui添加了图片资源处理 self.BgZs = self.Transform:Find("BgZs") self.ImgBg = self.Transform:Find("BtnActivity/ImgBg") if self.BgZs then self.BgZs.gameObject:SetActiveEx(inTime) self.ImgBg.gameObject:SetActiveEx(inTime) end if not inTime then self.BtnActivity:SetDisable(true) self.ImgTitle.gameObject:SetActiveEx(false) self.BtnShop.gameObject:SetActiveEx(false) return end self.ImgTitle.gameObject:SetActiveEx(true) self.BtnActivity:SetDisable(false) self.BtnActivity:SetNameByGroup(0, self.VersionName) self.BtnActivity:SetNameByGroup(1, self.FubenManagerEx.GetActivityMainUiTips()) self.BtnActivity:SetNameByGroup(2, self:GetMainTimeTip()) local itemId = self.VersionItemId self.PanelActivityItem1.gameObject:SetActiveEx(itemId > 0) self.PanelActivityItem2.gameObject:SetActiveEx(itemId > 0) if itemId > 0 and not XTool.UObjIsNil(self.BtnShop) then self.BtnShop:SetNameByGroup(0, self.ItemManager.GetCount(itemId)) self.BtnShop:SetSprite(self.ItemManager.GetItemIcon(itemId)) end end function XUiPanelMain:GetMainTimeTip() local startTime = XFunctionManager.GetStartTimeByTimeId(self.RefreshTimeId) local endTime = XFunctionManager.GetEndTimeByTimeId(self.RefreshTimeId) return string.format( "%s-%s" , XTime.TimestampToGameDateTimeString(startTime, "MM.dd") , XTime.TimestampToGameDateTimeString(endTime, "MM.dd")) end function XUiPanelMain:RefreshCurrentChapter() local currentChapter, currentChapterManager = self.FubenManagerEx.GetCurrentRecordChapterAndManager() self.CurrentChapter = currentChapter self.CurrentChapterManager = currentChapterManager self.PanelChapterHave.gameObject:SetActiveEx(currentChapter ~= nil) self.PaenlChapterNone.gameObject:SetActiveEx(currentChapter == nil) if currentChapter == nil then self.PanelChapterNewEffect.gameObject:SetActiveEx(false) self.PanelChapterActivityTag.gameObject:SetActiveEx(false) self.PanelChapterMultipleWeeksTag.gameObject:SetActiveEx(false) self.BtnDownload.gameObject:SetActiveEx(false) return end self.RImgChapterIcon:SetRawImage(currentChapter:GetIcon()) if currentChapterManager == self.FubenManagerEx.GetMainLineManager() then -- 主线 self.RImgChapterIcon.gameObject:GetComponent("RectTransform").sizeDelta = Vector2(460, 228) --ui规定的主线、支线尺寸 self.EntryType = XDlcConfig.EntryType.MainChapter self.EntryParam = currentChapter:GetId() else -- 支线 self.RImgChapterIcon.gameObject:GetComponent("RectTransform").sizeDelta = Vector2(511, 224) local chapterType = currentChapterManager:ExGetChapterType() self.EntryType = XDlcConfig.GetEntryTypeByChapterType(chapterType) self.EntryParam = currentChapter:GetId() end self.GirdBtnDownload:Init(self.EntryType, self.EntryParam, nil, handler(self, self.OnDownloadComplete)) self.GirdBtnDownload:RefreshView() self:RefreshLock(currentChapter:GetIsLocked(), self.GirdBtnDownload:CheckNeedDownload()) self.TxtChapterName.text = currentChapter:GetName() self.PanelChapterNewEffect.gameObject:SetActiveEx(currentChapter:CheckHasNewTag()) self.PanelChapterActivityTag.gameObject:SetActiveEx(currentChapter:CheckHasTimeLimitTag()) local weeklyChallengeCount = currentChapter:GetWeeklyChallengeCount() self.PanelChapterMultipleWeeksTag.gameObject:SetActiveEx(weeklyChallengeCount > 0) self.TxtChapterWeekNum.text = weeklyChallengeCount end function XUiPanelMain:OpenActivityUi() XLuaUiManager.Open("UiActivityChapter", self.ActivityManagerIndex) end -- v1.31 战斗面板材料关货币显示优化 function XUiPanelMain:OpenActivityShop() XDataCenter.FubenRepeatChallengeManager.OpenShopByCB(function () self.RootUi:PlayAnimationWithMask("AnimStart") end, nil) end function XUiPanelMain:CloseActivityUi() self.RootUi.Bg.gameObject:SetActiveEx(true) self.GameObject:SetActiveEx(true) self.RootUi:SetOperationActive(true) end function XUiPanelMain:OnDownloadComplete() if XTool.UObjIsNil(self.PanelLock) or not self.CurrentChapter then return end self:RefreshLock(self.CurrentChapter:GetIsLocked(), self.GirdBtnDownload:CheckNeedDownload()) end function XUiPanelMain:RefreshLock(isLock, isNeedDownload) self.PanelLock.gameObject:SetActiveEx(isLock or isNeedDownload) if not XTool.UObjIsNil(self.ImgLock) then self.ImgLock.gameObject:SetActiveEx(isLock) end end return XUiPanelMain