local UIGVGFightRank = UIViewClass() local GVGFightRankNum = DataSheetManager.ConstData:GetDataByID("GVGFightRankNum").IntValue local GVGFightRefreshCD = DataSheetManager.ConstData:GetDataByID("GVGFightRefreshCD").IntValue function UIGVGFightRank:OnOpened(context) self:RegistSystemEvent(EventID.UI_RefreshRankInfo, self.RefreshRankInfo) MDL.Rank.GetRankInfoReq(MDL.Rank.RankType.GVGFight, {isPreRank = false}, CTL.Rank.SortType.MyServer) end function UIGVGFightRank:RefreshRankInfo() local rankList = MDL.Rank.GetRankInfoDataByType(MDL.Rank.RankType.GVGFight) local myRank = MDL.Rank.GetMyRankInfo() self.LoopScroll_GVGFightRank:ReloadAll(rankList) self:SetSelfRank(self.group_Main, myRank) end function UIGVGFightRank:SetSelfRank(cellTable, data) if data and data.index > 0 then local index = data.index - 1 if index < 3 then cellTable.group_Rank.state_Rank:SetState(index) else cellTable.group_Rank.state_Rank:SetState(3) end if index + 1 > GVGFightRankNum then cellTable.group_Rank.txt_Rank.text = GVGFightRankNum.."+" else cellTable.group_Rank.txt_Rank.text = index + 1 end UIUtils.SetLabel(cellTable.txt_Win, data.param1) UIUtils.SetLabel(cellTable.txt_WinningProbability, self:CalculationWinningProbability(data.param1, data.param2)) CTL.Character.SetPortraitAndFrame(cellTable.template_PlayerHead, data.portraitId, data.frameId) if string.isNilOrEmpty(data.guildSingleInfo.guildID) then cellTable.state_Guild:SetState(1) else cellTable.state_Guild:SetState(0) UIUtils.SetLabel(cellTable.txt_GuildName, data.guildSingleInfo.guildName) CTL.Guild.SetGuildEmblem(cellTable.img_Guild, cellTable.txt_Guild, data.guildSingleInfo.emblemFrame, data.guildSingleInfo.emblemContent) end UIUtils.SetLabel(cellTable.txt_ServerNum, string.FormatByIdsId(Const_IDS.IDS_Rank_ServerIDS, data.serverId)) UIUtils.SetLabel(cellTable.txt_PlayerName, data.name) else cellTable.group_Rank.state_Rank:SetState(3) UIUtils.SetLabelText(cellTable.group_Rank.txt_Rank, Const_IDS.IDS_NotInRank) UIUtils.SetLabel(cellTable.txt_Win, 0) UIUtils.SetLabel(cellTable.txt_WinningProbability, self:CalculationWinningProbability(0, 0)) CTL.Character.SetSelfPortraitAndFrame(cellTable.template_PlayerHead) local guildInfo = MDL.Guild.GetMyGuildInfo() if string.isNilOrEmpty(guildInfo.guildId) then cellTable.state_Guild:SetState(1) else cellTable.state_Guild:SetState(0) UIUtils.SetLabel(cellTable.txt_GuildName, guildInfo.guildName) CTL.Guild.SetGuildEmblem(cellTable.img_Guild, cellTable.txt_Guild, guildInfo.emblemFrame, guildInfo.emblemContent) end UIUtils.SetLabel(cellTable.txt_ServerNum, string.FormatByIdsId(Const_IDS.IDS_Rank_ServerIDS, MDL.Login.GetServerShowId())) UIUtils.SetLabel(cellTable.txt_PlayerName, BattleDataGetter.GetPlayerName()) end end function UIGVGFightRank:OnBackButtonPressed() self:OnButtonClicked(self.btn_Close) end function UIGVGFightRank:OnButtonClicked(comp) if comp == self.btn_Close then self:CloseView() elseif comp == self.btn_Conscription then if self.cdState.CurState == 1 then CTL.Tips.AddTipsMsg(Const_IDS.IDS_GVGFight_Refresh_Tips1) else self.cdState:SetState(1) MDL.Rank.GetRankInfoReq(MDL.Rank.RankType.GVGFight, {isPreRank = false}, CTL.Rank.SortType.MyServer) self.btn_Conscription:SetGray(true, true) self.btn_cd:ResetAndBeginTimer(false, GVGFightRefreshCD, 0) self:StartRepeatFunc(self.OnUpdateConscriptionTimer, GVGFightRefreshCD, 1) end elseif comp == self.btn_Info then UIManager.OpenView(Const_UI_Lua.UIEnum.UICommonNoteView, {id = LuaConst.NoteID.GVGFightRank}) end end function UIGVGFightRank:OnUpdateConscriptionTimer( ) self.btn_Conscription:SetGray(false, true) self.cdState:SetState(0) end function UIGVGFightRank:OnCellInit(scrollRect, index, cellTable, data) if index < 3 then cellTable.group_Rank.state_Rank:SetState(index) else cellTable.group_Rank.state_Rank:SetState(3) end cellTable.group_Rank.txt_Rank.text = index + 1 CTL.Character.SetPortraitAndFrame(cellTable.template_PlayerHead, data.portraitId, data.frameId) if string.isNilOrEmpty(data.guildSingleInfo.guildID) then cellTable.state_Guild:SetState(1) else cellTable.state_Guild:SetState(0) cellTable.txt_GuildName.text = data.guildSingleInfo.guildName CTL.Guild.SetGuildEmblem(cellTable.img_Guild, cellTable.txt_Guild, data.guildSingleInfo.emblemFrame, data.guildSingleInfo.emblemContent) end cellTable.txt_ServerNum.text = string.FormatByIdsId(Const_IDS.IDS_Rank_ServerIDS, data.serverId) cellTable.txt_Win.text = data.param1 UIUtils.SetLabel(cellTable.txt_WinningProbability, self:CalculationWinningProbability(data.param1, data.param2)) cellTable.txt_PlayerName.text = data.name end function UIGVGFightRank:OnCellClicked(scrollRect, index, cellTable, target, data) if target == cellTable.template_PlayerHead.img_PlayerAvatarBg then CTL.PlayerInteract.OpenFriendInteractView(data.acid) end end function UIGVGFightRank:CalculationWinningProbability(winMatch, allMatch) if allMatch == 0 then return "0%" else -- 四舍五入保留两位小数 return math.floor(winMatch / allMatch * 10000 + 0.5) / 100 .. "%" end end return UIGVGFightRank