266 lines
No EOL
8.9 KiB
Lua
266 lines
No EOL
8.9 KiB
Lua
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 |