local UIAchievementBase = UIViewClass() local EventSystem = require('Event/EventSystem') local DefaultChildType = 100 ------------------------------- 系统函数 ---------------------------- --[[ context = { achievementId, --要跳转到的成就ID } ]]-- function UIAchievementBase:OnOpened(context) self:RegistSystemEvent(EventID.UI_AchievementBase_Refresh, self.RefreshSelectMenu) self:RegistSystemEvent(EventID.UI_Achievement_RefreshRedPoint, self.RefreshRedPoints) self:RegistSystemEvent(EventID.UI_Achievement_CloseGamePlay, self.OnCloseGamePlay) -- 默认选中 self.infoParams = { mainType = 0, childType = 0, jumpIndex = nil } self.selectMainType = 0 self.selectChildType = 0 -- 标题设置 UIUtils.SetLabelText(self.UITemplateTitlePanel.lab_Title, Const_IDS["IDS_Achievement_Title"]) -- 初始化左侧菜单 if context and context.achievementId then local achievementData = MDL.Achievement.GetAchievementItemByID(context.achievementId) local sheetData = achievementData.configData self:RefreshSelectMenu(sheetData.MainType, sheetData.ChildType, MDL.Achievement.FindIndexInSortedAchievements(achievementData)) else self:RefreshSelectMenu(1, 2) end MDL.Achievement.ReqAllAchievenmentData() end function UIAchievementBase:OnCloseGamePlay() self:CloseView(true) end function UIAchievementBase:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_Tab then if data.isParent then local isSelect = data.typeID == self.selectMainType UIUtils.SetLabelText(cellTable.txt_Name, data.showNameIDS) cellTable.TextChangeState:SetState(isSelect and 1 or 0) UIUtils.SetActive(cellTable.img_UnSelected, not isSelect) UIUtils.SetActive(cellTable.img_Selected, isSelect) UIUtils.SetActive(cellTable.img_RedDot, MDL.Achievement.IsShowMainTypeRedPoint(data.typeID)) else local isSelect = data.parentTypeID == self.selectMainType and data.typeID == self.selectChildType UIUtils.SetLabelText(cellTable.txt_Name, data.showNameIDS) cellTable.TextChangeState:SetState(isSelect and 1 or 0) UIUtils.SetActive(cellTable.img_UnSelected, not isSelect) UIUtils.SetActive(cellTable.img_Selected, isSelect) UIUtils.SetActive(cellTable.img_RedDot, MDL.Achievement.IsShowChildTypeRedPoint(data.parentTypeID, data.typeID)) end end end function UIAchievementBase:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.loop_Tab then if data.isParent then if self.selectMainType ~= data.typeID then self:RefreshSelectMenu(data.typeID) end else self:RefreshSelectMenu(data.parentTypeID, data.typeID) end end end function UIAchievementBase:OnBackButtonPressed() self:OnButtonClicked(self.UITemplateTitlePanel.btn_close) end function UIAchievementBase:OnButtonClicked(comp) if comp == self.UITemplateTitlePanel.btn_Info then UIManager.OpenView(Const_UI_Lua.UIEnum.UICommonNoteView, {id = LuaConst.NoteID.Achievement}) elseif comp == self.UITemplateTitlePanel.btn_close then self:CloseView(true) elseif comp == self.UITemplateTitlePanel.btn_Home then CTL.HomeMain.CloseViewBackHomeMain() end end ---------------------------------------------------------------------- function UIAchievementBase:RefreshSelectMenu(mainType, childType, jumpIndex) if self.loop_Tab.Count == 0 then -- 初始化 self.selectMainType = mainType self.selectChildType = childType for _, v in ipairs (MDL.Achievement.GetAchievementShowTypes()) do self.loop_Tab:AddData(v, 0) if v.typeID == mainType then v.isExtend = true for _, node in ipairs (v.childNodes) do self.loop_Tab:AddData(node, 1) end end end self:RefreshPanel(jumpIndex) else if self.selectMainType ~= mainType or self.selectChildType ~= childType then -- 菜单点击改变 if not childType then -- 默认选择第一个页签 childType = mainType == 1 and 2 or DefaultChildType end self.selectChildType = childType if self.selectMainType ~= mainType then self.selectMainType = mainType self.loop_Tab:ClearCells() local index = -1 local moveIndex = 0 for _, v in ipairs (MDL.Achievement.GetAchievementShowTypes()) do self.loop_Tab:AddData(v, 0) index = index + 1 if v.typeID == self.selectMainType then moveIndex = index v.isExtend = true for _, node in ipairs (v.childNodes) do self.loop_Tab:AddData(node, 1) index = index + 1 end else v.isExtend = false end end self.loop_Tab:MoveIndex(moveIndex) else self.loop_Tab:RefreshCells(false) end self:RefreshPanel(jumpIndex) end end end function UIAchievementBase:RefreshPanel(jumpIndex) if MDL.Achievement.IsSummaryChildType(self.selectChildType) then self.panel_Transfer:CloseView(Const_UI_Lua.UIEnum.UIAchievementInfo) if not self.panel_Transfer:IsViewOpened(Const_UI_Lua.UIEnum.UIAchievementPandect) then self.panel_Transfer:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIAchievementPandect)) end else self.infoParams.mainType = self.selectMainType self.infoParams.childType = self.selectChildType self.infoParams.jumpIndex = jumpIndex self.panel_Transfer:CloseView(Const_UI_Lua.UIEnum.UIAchievementPandect) if not self.panel_Transfer:IsViewOpened(Const_UI_Lua.UIEnum.UIAchievementInfo) then self.panel_Transfer:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIAchievementInfo), self.infoParams) else EventSystem.Dispatch(EventID.UI_AchievementInfo_Refresh, self.infoParams) end end end function UIAchievementBase:RefreshRedPoints() if self.loop_Tab.Count > 0 then self.loop_Tab:RefreshCells(false) end end return UIAchievementBase