local UISlgGvERank = UIViewClass() local rankTitle = { Const_IDS.IDS_SlgGve_Rank_Hint_4, Const_IDS.IDS_SlgGve_Rank_Hint_3, Const_IDS.IDS_SlgGve_Rank_Hint_2 } function UISlgGvERank:OnOpened(context) self:RegistSystemEvent(EventID.UI_RefreshRankInfo, self.RefreshUI) self:RegistSystemEvent(EventID.UI_SlgGve_LastSeasonBeatRecord, self.RefreshBossStatus) self.beatRecord = {} UIUtils.SetLabelText(self.UICommonPopUp.txt_Title, Const_IDS.IDS_SlgGve_Rank_Hint_1) UIUtils.SetActive(self.UICommonPopUp.img_Info, true) UTL.Toggle.InitToggleGroupByIDS(self.group_FairToggles, "txt", {rankTitle[1], rankTitle[2], rankTitle[3]}) self.loop_Tab:ReloadAll(CTL.SlgGvE.GetRankBossCfgs()) if MDL.SlgGvE.GetSeasonState() == MDL.SlgGvE.SeasonState.End then MDL.SlgGvE.GVEGetLastSeasonBeatRecordReq() end self.loop_Tab:SelectIndex(0) self.group_FairToggles:SelectIndex(MDL.SlgGvE.GetRankSerTyp() - 1) UIUtils.SetLabelText(self.txt_RankType, rankTitle[MDL.SlgGvE.GetRankSerTyp()]) end function UISlgGvERank:RefreshBossStatus(beatRecord) self.beatRecord = beatRecord or {} self.loop_Tab:RefreshCells() end function UISlgGvERank:RefreshUI(rankType, params) local rankList = MDL.Rank.GetRankInfoDataByType(MDL.Rank.RankType.SlgGvE) if rankList and #rankList > 0 then self.state_Info:SetState(0) self.Scroll_Rank:ReloadAll(rankList) else self.state_Info:SetState(1) end self:RefreshMyRank() self:RefreshBeatBossTotalNum(params.joinRankNum) end function UISlgGvERank:RefreshBeatBossTotalNum(num) local str if self.rankType == 1 then str = string.FormatByIdsKey("IDS_SlgGve_Rank_Hint_7", num) elseif self.rankType == 2 then str = string.FormatByIdsKey("IDS_SlgGve_Rank_Hint_6", num) else str = string.FormatByIdsKey("IDS_SlgGve_Rank_Hint_5", num) end self.txt_Tip.text = str end function UISlgGvERank:RefreshMyRank() local myRankInfo = MDL.Rank.GetMyRankInfo() if myRankInfo.index == nil or myRankInfo.index == 0 then UIUtils.SetLabel(self.group_MySelf.txt_Rank, "—") UIUtils.SetLabel(self.group_MySelf.txt_Time, "—") self.group_MySelf.state_bg_Rank:SetState(3) else if myRankInfo.index and myRankInfo.index <= 2 then self.group_MySelf.state_bg_Rank:SetState(myRankInfo.index-1) UIUtils.SetLabelText(self.group_MySelf.txt_RankType1, rankTitle[MDL.SlgGvE.GetRankSerTyp()]) else self.group_MySelf.state_bg_Rank:SetState(3) local str = UIUtils.GetLocalizedTxt(rankTitle[MDL.SlgGvE.GetRankSerTyp()]) UIUtils.SetLabel(self.group_MySelf.txt_Rank, str..myRankInfo.index) end UIUtils.SetLabel(self.group_MySelf.txt_Time, UTL.Time.OsDateOriginal(UTL.Time.FormatDateEnum.YMDHMS, myRankInfo.param1)) end local guildInfo = MDL.Guild.GetMyGuildInfo() UIUtils.SetLabel(self.group_MySelf.txt_Guild, guildInfo.emblemContent) local guildEmblemCfg = DataSheetManager.GuildEmblem:GetDataByID(guildInfo.emblemFrame) if guildEmblemCfg then UTL.Item.SetAtlasSprite(self.group_MySelf.img_Guild, "UI_Guild", guildEmblemCfg.Image) end UIUtils.SetLabel(self.group_MySelf.txt_server, string.FormatByIdsId(Const_IDS.IDS_Rank_ServerIDS, MDL.Login.GetServerShowId())) UIUtils.SetLabel(self.group_MySelf.txt_Info, guildInfo.guildName) UIUtils.SetLabel(self.group_MySelf.txt_Name, guildInfo.leaderName) end function UISlgGvERank:OnValueChanged(comp, index) self.rankType = index + 1 MDL.Rank.GetRankInfoReq(MDL.Rank.RankType.SlgGvE, {bossId = self.curSelectbossId, group = self.rankType}) end function UISlgGvERank:OnButtonClicked(comp) if comp == self.UICommonPopUp.btn_Close then self:CloseView() elseif comp == self.UICommonPopUp.img_Info then UIManager.OpenView(Const_UI_Lua.UIEnum.UICommonNoteView, {id = LuaConst.NoteID.SlgGvERank}) end end function UISlgGvERank:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_Tab then UIUtils.SetLabelText(cellTable.txt_Name_Nomal, Const_IDS[data.GveMapName]) UIUtils.SetLabelText(cellTable.txt_Name_Selected, Const_IDS[data.GveMapName]) if MDL.SlgGvE.GetSeasonState() == MDL.SlgGvE.SeasonState.End then UIUtils.SetActive(cellTable.img_Mark, false) for _, mapId in ipairs(self.beatRecord) do if data.GveMapID == mapId then UIUtils.SetActive(cellTable.img_Mark, true) break end end else local index = MDL.SlgGvE.GetEliteBossGridIndex(data.GveMapID) local _, info = MDL.SlgGvE.GetGridInfo(index) UIUtils.SetActive(cellTable.img_Mark, info.hasOccupy) end elseif scrollRect == self.Scroll_Rank then if data.index and data.index <= 3 then cellTable.state_bg_Rank:SetState(data.index-1) else cellTable.state_bg_Rank:SetState(3) UIUtils.SetLabel(cellTable.txt_Rank, data.index) end UIUtils.SetLabel(cellTable.txt_Time, UTL.Time.OsDateOriginal(UTL.Time.FormatDateEnum.YMDHMS, data.param1)) UIUtils.SetLabel(cellTable.txt_Guild, data.guildSingleInfo.emblemContent) local guildEmblemCfg = DataSheetManager.GuildEmblem:GetDataByID(data.guildSingleInfo.emblemFrame) if guildEmblemCfg then UTL.Item.SetAtlasSprite(cellTable.img_Guild, "UI_Guild", guildEmblemCfg.Image) end UIUtils.SetLabel(cellTable.txt_server, string.FormatByIdsId(Const_IDS.IDS_Rank_ServerIDS, data.serverId)) UIUtils.SetLabel(cellTable.txt_Info, data.guildSingleInfo.guildName) UIUtils.SetLabel(cellTable.txt_Name, data.name) UIUtils.SetActive(cellTable.img_Bg1, index%2 ~= 0) end end function UISlgGvERank:OnCellSelect(scrollRect, index, cellTable, data) if scrollRect == self.loop_Tab then self.curSelectbossId = CTL.SlgGvE.GetRankBossCfgs()[index + 1].GveMapID if self.rankType and self.rankType > 0 then MDL.Rank.GetRankInfoReq(MDL.Rank.RankType.SlgGvE, {bossId = self.curSelectbossId, group = self.rankType}) end end end function UISlgGvERank:OnClosed() UIUtils.SetActive(self.UICommonPopUp.img_Info, false) end return UISlgGvERank