PGRData/Script/matrix/xui/xuimultidim/XUiMultiDimTeamRanking.lua

266 lines
No EOL
8.9 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local XUiMultiDimTeamRanking = XLuaUiManager.Register(XLuaUi, "UiMultiDimTeamRanking")
local XUiPanelMultiDimRank = require("XUi/XUiMultiDim/XUiPanelMultiDimRank")
local XUiPanelMultiDimRankReward = require("XUi/XUiMultiDim/XUiPanelMultiDimRankReward")
local XUiPanelMultiDimRankList = require("XUi/XUiMultiDim/XUiPanelMultiDimRankList")
local RANK_PANEL_NAME = {
[1] = "MultiDimTeamSingleRank",
[2] = "MultiDimTeamMultiRank",
}
local BTN_INDEX = {
First = 1,
Second = 2,
}
local RANK_MODEL_INDEX ={
[1] = "SINGLE_RANK",
[2] = "TEAM_RANK",
}
function XUiMultiDimTeamRanking:OnAwake()
self:RegisterUiEvents()
self:InitHideView()
end
function XUiMultiDimTeamRanking:OnStart()
local itemId = XDataCenter.MultiDimManager.GetActivityItemId()
self.AssetPanel = XUiHelper.NewPanelActivityAsset({ itemId }, self.PanelSpecialTool)
self:InitView()
self:InitLeftTabBtn()
self.MySingleRank = XUiPanelMultiDimRank.New(self.PanelMyBossRank, self)
self.MyManyRank = XUiPanelMultiDimRank.New(self.PanelManyPeople, self)
self:HideMyRankPanel()
self.RankReward = XUiPanelMultiDimRankReward.New(self.PanelRankReward, self)
self.TeamRankList = XUiPanelMultiDimRankList.New(self.PanelTeamRankList, self)
self.SingleRankList = XUiPanelMultiDimRankList.New(self.PanelSingleRankList, self)
self:HideRankListPanel()
-- 开启自动关闭检查
local endTime = XDataCenter.MultiDimManager.GetEndTime()
self:SetAutoCloseInfo(endTime, function(isClose)
if isClose then
XDataCenter.MultiDimManager.HandleActivityEndTime()
end
end)
end
function XUiMultiDimTeamRanking:OnEnable()
self.Super.OnEnable(self)
local defaultIndex = self:GetDefaultSingleThemeRankIndex()
self.BtnContent:SelectIndex(defaultIndex)
end
function XUiMultiDimTeamRanking:RefreshRankInfo()
-- 显示排行信息
self:SetRankInfo()
-- 显示我的排行信息
self:RefreshMyRankInfo()
end
function XUiMultiDimTeamRanking:SetRankInfo()
self:HideRankListPanel()
local rankListPanel = self:GetRankListPanel()
rankListPanel:SetActivePanel(true)
rankListPanel:Refresh(self.RankType, self.ThemeId)
end
function XUiMultiDimTeamRanking:RefreshMyRankInfo()
self:HideMyRankPanel()
local myRankPanel = self:GetMyRankPanel()
local rankInfo = XDataCenter.MultiDimManager.GetMyRankInfo(self.RankType, self.ThemeId)
if rankInfo and rankInfo.Rank > 0 then
myRankPanel:SetActivePanel(true)
myRankPanel:Refresh(self.RankType, rankInfo)
end
end
function XUiMultiDimTeamRanking:HideMyRankPanel()
self.MySingleRank:SetActivePanel(false)
self.MyManyRank:SetActivePanel(false)
end
function XUiMultiDimTeamRanking:HideRankListPanel()
self.SingleRankList:SetActivePanel(false)
self.TeamRankList:SetActivePanel(false)
end
function XUiMultiDimTeamRanking:GetMyRankPanel()
if self.RankType == XMultiDimConfig.RANK_MODEL.SINGLE_RANK then
return self.MySingleRank
else
return self.MyManyRank
end
end
function XUiMultiDimTeamRanking:GetRankListPanel()
if self.RankType == XMultiDimConfig.RANK_MODEL.SINGLE_RANK then
return self.SingleRankList
else
return self.TeamRankList
end
end
function XUiMultiDimTeamRanking:RefreshRankView()
local isSingleRank = self.RankType == XMultiDimConfig.RANK_MODEL.SINGLE_RANK
-- 排行奖励按钮
if self.BtnRankReward then
self.BtnRankReward.gameObject:SetActiveEx(isSingleRank)
end
-- 更新提示
self.Refresh.gameObject:SetActiveEx(isSingleRank)
self.RefreshTips.gameObject:SetActiveEx(not isSingleRank)
-- Top
local topName = isSingleRank and "SingleRankTopNun" or "MultiRankTopNun"
self.TopTxt.text = XMultiDimConfig.GetMultiDimConfigValue(topName)
end
function XUiMultiDimTeamRanking:InitView()
local endTime = XDataCenter.MultiDimManager.GetEndTime()
-- 结束时间
local endTimeStr = XTime.TimestampToGameDateTimeString(endTime, "MM/dd HH:mm")
self.TxtCurTime.text = CSXTextManagerGetText("MultiDimTeamSettleRankTip", endTimeStr)
end
function XUiMultiDimTeamRanking:InitHideView()
self.GridBossRank.gameObject:SetActiveEx(false) -- 个人排行
self.ManyPeople.gameObject:SetActiveEx(false) -- 多人排行
self.BtnFirstHasSnd.gameObject:SetActiveEx(false)
self.BtnSecondTop.gameObject:SetActiveEx(false)
self.BtnSecond.gameObject:SetActiveEx(false)
self.BtnSecondBottom.gameObject:SetActiveEx(false)
self.TxtIos.gameObject:SetActiveEx(false)
end
function XUiMultiDimTeamRanking:InitLeftTabBtn()
self.BtnTabList = {}
self.RankBtnIndexDic = {}
local btnIndex = 0
--一级标题
for i = 1, #RANK_MODEL_INDEX do
local rankType = XMultiDimConfig.RANK_MODEL[RANK_MODEL_INDEX[i]]
local btnModel = self:GetCertainBtnModel(BTN_INDEX.First, true)
local firstGo = XUiHelper.Instantiate(btnModel, self.BtnContent.transform)
local firstBtn = firstGo:GetComponent("XUiButton")
firstBtn.gameObject:SetActiveEx(true)
local rankName = CSXTextManagerGetText(RANK_PANEL_NAME[rankType])
firstBtn:SetNameByGroup(0, rankName)
table.insert(self.BtnTabList, firstBtn)
btnIndex = btnIndex + 1
--二级标题
local firstIndex = btnIndex
local themeIds = XDataCenter.MultiDimManager.GetThemeAllId()
for index, themeId in pairs(themeIds) do
local tmpBtnModel = self:GetCertainBtnModel(BTN_INDEX.Second, nil, index, #themeIds)
local secondGo = XUiHelper.Instantiate(tmpBtnModel, self.BtnContent.transform)
local secondBtn = secondGo:GetComponent("XUiButton")
secondBtn.gameObject:SetActiveEx(true)
-- 主题名称
local themeName = XDataCenter.MultiDimManager.GetThemeNameById(themeId)
secondBtn:SetNameByGroup(0, themeName)
secondBtn.SubGroupIndex = firstIndex
table.insert(self.BtnTabList, secondBtn)
btnIndex = btnIndex + 1
local indexInfo = {
RankType = rankType,
ThemeId = themeId
}
self.RankBtnIndexDic[btnIndex] = indexInfo
end
end
self.BtnContent:Init(self.BtnTabList, function(tabIndex)
self:OnClickTabCallBack(tabIndex)
end)
end
function XUiMultiDimTeamRanking:OnClickTabCallBack(tabIndex)
if self.CurrentTabIndex and self.CurrentTabIndex == tabIndex then
return
end
self.CurrentTabIndex = tabIndex
local rankBtnIndexInfo = self.RankBtnIndexDic[tabIndex]
self.RankType = rankBtnIndexInfo.RankType
self.ThemeId = rankBtnIndexInfo.ThemeId
-- 刷新排行界面信息
self:RefreshRankView()
-- 获取排行信息
XDataCenter.MultiDimManager.MultiDimOpenRankRequest(self.RankType, self.ThemeId, function()
self:RefreshRankInfo()
end)
-- 播放动画
self:PlayAnimation("QieHuan")
end
function XUiMultiDimTeamRanking:GetCertainBtnModel(index, hasChild, pos, totalNum)
if index == BTN_INDEX.First then
if hasChild then
return self.BtnFirstHasSnd
else
return self.BtnFirst
end
elseif index == BTN_INDEX.Second then
if totalNum == 1 then
return self.BtnSecondAll
end
if pos == 1 then
return self.BtnSecondTop
elseif pos == totalNum then
return self.BtnSecondBottom
else
return self.BtnSecond
end
end
end
function XUiMultiDimTeamRanking:GetDefaultSingleThemeRankIndex()
-- 默认选中上一次挑战过的主题多人or单人均计算在内。无记录时首次打开定位至首个
local tempThemeId = XDataCenter.MultiDimManager.GetDefaultActivityThemeId()
-- 默认打开个人排行榜
local singleIndex = 1
if XTool.IsNumberValid(tempThemeId) then
for index, info in pairs(self.RankBtnIndexDic) do
if info.RankType == XMultiDimConfig.RANK_MODEL.SINGLE_RANK and info.ThemeId == tempThemeId then
singleIndex = index
end
end
end
return singleIndex
end
function XUiMultiDimTeamRanking:RegisterUiEvents()
XUiHelper.RegisterClickEvent(self, self.BtnBack, self.OnBtnBackClick)
XUiHelper.RegisterClickEvent(self, self.BtnMainUi, self.OnBtnMainUiClick)
XUiHelper.RegisterClickEvent(self, self.BtnRankReward, self.OnBtnRankRewardClick)
self:BindHelpBtn(self.BtnHelp, "MultiDimMain")
end
function XUiMultiDimTeamRanking:OnBtnBackClick()
self:Close()
end
function XUiMultiDimTeamRanking:OnBtnMainUiClick()
XLuaUiManager.RunMain()
end
-- 排行奖励
function XUiMultiDimTeamRanking:OnBtnRankRewardClick()
local rankInfo = XDataCenter.MultiDimManager.GetMyRankInfo(self.RankType, self.ThemeId)
if not rankInfo then
self.RankReward:Refresh(self.ThemeId, 0, 0)
else
self.RankReward:Refresh(self.ThemeId, rankInfo.Rank, rankInfo.MemberCount)
end
end
return XUiMultiDimTeamRanking