PGRData/Script/matrix/xui/xuisupersmashbros/ranking/XUiSuperSmashBrosRanking.lua

133 lines
4.5 KiB
Lua
Raw Normal View History

local XUiSuperSmashBrosRanking = XLuaUiManager.Register(XLuaUi, "UiSuperSmashBrosRanking")
2024-09-01 22:49:41 +02:00
function XUiSuperSmashBrosRanking:Ctor()
self._Career = false
-- 应策划要求只显示前4个且合并3和5
self._AllCareer = {1, 2, 3, 4}--XCharacterConfigs.GetAllCharacterCareerIds()
self._AllCareerName = {
XCharacterConfigs.GetCareerName(self._AllCareer[1]),
XCharacterConfigs.GetCareerName(self._AllCareer[2]),
XUiHelper.ReadTextWithNewLine("SuperSmashCareer"),
XCharacterConfigs.GetCareerName(self._AllCareer[4])
}
end
function XUiSuperSmashBrosRanking:OnStart()
self:InitBaseBtns() --注册基础按钮
self:InitPanels() --初始化各子面板
self:SetActivityTimeLimit() --设置活动关闭时处理
end
function XUiSuperSmashBrosRanking:InitBaseBtns()
self.BtnMainUi.CallBack = handler(self, self.OnClickBtnMainUi)
self.BtnBack.CallBack = handler(self, self.OnClickBtnBack)
self:BindHelpBtn(self.BtnHelp, "SuperSmashBrosHelp")
self.BtnRecord.CallBack = handler(self, self.OnClickBtnRecord)
2024-09-01 22:49:41 +02:00
local buttonGroup = { self.TabCore }
local allCareer = self._AllCareer
local firstCareer = allCareer[1]
if firstCareer then
self._Career = firstCareer
end
for i = 1, #allCareer - 1 do
local btn = CS.UnityEngine.Object.Instantiate(self.TabCore, self.TabCore.transform.parent)
buttonGroup[#buttonGroup + 1] = XUiHelper.TryGetComponent(btn.transform, "", "XUiButton")
end
for i = 1, #allCareer do
local btn = buttonGroup[i]
local career = allCareer[i]
local icon = XUiHelper.GetClientConfig("SuperSmashCareerIcon" .. career, XUiHelper.ClientConfigType.String)
local name = self._AllCareerName[i]
btn:SetSprite(icon)
btn:SetNameByGroup(0, name)
end
self.PanelTabCore:Init(buttonGroup, function(groupIndex) self:SetCareer(groupIndex) end)
self.PanelTabCore:SelectIndex(1)
end
--==============
--主界面按钮
--==============
function XUiSuperSmashBrosRanking:OnClickBtnMainUi()
XLuaUiManager.RunMain()
end
--==============
--返回按钮
--==============
function XUiSuperSmashBrosRanking:OnClickBtnBack()
self:Close()
end
function XUiSuperSmashBrosRanking:OnClickBtnRecord()
XLuaUiManager.Open("UiSuperSmashBrosClearTime")
end
function XUiSuperSmashBrosRanking:InitPanels()
self:InitDTablePlayerRank()
self:InitMyRankPanel()
self.TxtAndroid.gameObject:SetActive(false) --排行榜没有分安卓苹果,这里先隐藏
end
function XUiSuperSmashBrosRanking:InitDTablePlayerRank()
local script = require("XUi/XUiSuperSmashBros/Ranking/XUiSSBRankingDTable")
self.RankingList = script.New(self.PlayerRankList, self.PlayerRank, self.PanelNoRank)
end
function XUiSuperSmashBrosRanking:InitMyRankPanel()
local script = require("XUi/XUiSuperSmashBros/Ranking/XUiSSBRankingGrid")
self.MyRank = script.New(self.PanelMyRank)
end
function XUiSuperSmashBrosRanking:OnEnable()
XUiSuperSmashBrosRanking.Super.OnEnable(self)
2024-09-01 22:49:41 +02:00
self:RefreshRank()
end
--==============
--设置活动关闭时处理
--==============
function XUiSuperSmashBrosRanking:SetActivityTimeLimit()
-- 自动关闭
local endTime = XDataCenter.SuperSmashBrosManager.GetActivityEndTime()
self:SetAutoCloseInfo(endTime, function(isClose)
if isClose then
XDataCenter.SuperSmashBrosManager.OnActivityEndHandler()
end
end)
2024-09-01 22:49:41 +02:00
end
function XUiSuperSmashBrosRanking:RefreshRank()
if not self._Career then
return
end
XDataCenter.SuperSmashBrosManager.GetRankingList(self._Career, function(rankingList)
rankingList = {}
self.RankingList:Refresh(rankingList)
local myData = false
local index = 0
for i = 1, #rankingList do
local data = rankingList[i]
if data.PlayerId == XPlayer.Id then
myData = data
index = i
end
end
if not myData then
myData = {}
---@type XSmashBMode
local mode = XDataCenter.SuperSmashBrosManager.GetModeByModeType(XSuperSmashBrosConfig.ModeType.Survive)
myData.WinCount = mode:GetWinCount(self._Career)
myData.SpendTime = mode:GetBestTime(self._Career)
end
self.MyRank:Refresh(true, myData, index, self._Career)
end)
end
function XUiSuperSmashBrosRanking:SetCareer(career)
if self._Career == career then
return
end
self._Career = career
self:RefreshRank()
end