eafd8f4088
EN: 1.9.0.107 CN: 1.9.0.108 JP: 1.9.0.112 KR: 1.9.0.112
226 lines
7.4 KiB
Lua
226 lines
7.4 KiB
Lua
local JointDrillRankingCtrl = class("JointDrillRankingCtrl", BaseCtrl)
|
|
local ClientManager = CS.ClientManager.Instance
|
|
local JointDrillContext = require("Game.UI.JointDrill.JointDrillContext")
|
|
JointDrillRankingCtrl._mapNodeConfig = {
|
|
TopBar = {
|
|
sNodeName = "TopBarPanel",
|
|
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
|
|
},
|
|
goLoading = {},
|
|
txtLoading = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "JointDrill_Rank_Loading"
|
|
},
|
|
goMainContent = {},
|
|
txtRankEndTime = {sComponentName = "TMP_Text"},
|
|
txtRewardTime = {sComponentName = "TMP_Text"},
|
|
txtRefreshTime = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "JointDrill_Rank_Refresh_Tip"
|
|
},
|
|
svRankingInfo = {
|
|
sComponentName = "LoopScrollView"
|
|
},
|
|
txtRankingListRankTitle = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "JointDrill_Rank_Title_Ranking"
|
|
},
|
|
txtRankingListPlayerTitle = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "JointDrill_Rank_Title_Name"
|
|
},
|
|
txtRankingListScoreTitle = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "JointDrill_Rank_Title_Score"
|
|
},
|
|
txtRankingListDetailTitle = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "JointDrill_Rank_Title_Detail"
|
|
},
|
|
txtRankingListBuildTitle = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "JointDrill_Rank_Title_Build"
|
|
},
|
|
rtSelfRank = {
|
|
sCtrlName = "Game.UI.JointDrill.JointDrill_2.JointDrillRankItemCtrl"
|
|
},
|
|
btnReward = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Reward"
|
|
},
|
|
txtBtnReward = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "JointDrill_Rank_Reward_Btn"
|
|
},
|
|
goRewardView = {},
|
|
goBlurBg = {
|
|
sNodeName = "t_fullscreen_blur_blue"
|
|
},
|
|
btnRewardClose = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_CloseReward"
|
|
},
|
|
animWindow = {
|
|
sNodeName = "t_window_04",
|
|
sComponentName = "Animator"
|
|
},
|
|
txt_Reward_Title = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "StarTower_Ranking_Reward"
|
|
},
|
|
svRankingReward = {
|
|
sComponentName = "LoopScrollView"
|
|
},
|
|
txtRankTip = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "JointDrill_Rank_Refresh_Tip"
|
|
},
|
|
btnCloseReward = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_CloseReward"
|
|
}
|
|
}
|
|
JointDrillRankingCtrl._mapEventConfig = {
|
|
ShowTeamDetail = "OnEvent_ShowTeamDetail",
|
|
OpenRankBuildDetail = "OnEvent_OpenRankBuildDetail"
|
|
}
|
|
JointDrillRankingCtrl._mapRedDotConfig = {}
|
|
function JointDrillRankingCtrl:SetEndTime()
|
|
local actData = PlayerData.Activity:GetActivityDataById(self.nActId)
|
|
if actData ~= nil then
|
|
local nEndTime = actData:GetActEndTime()
|
|
local nThresholdTime = ConfigTable.GetConfigValue("SeasonEndThreshold")
|
|
nEndTime = nEndTime - nThresholdTime
|
|
local sTime = os.date("%m/%d %H:%M", nEndTime)
|
|
NovaAPI.SetTMPText(self._mapNode.txtRankEndTime, orderedFormat(ConfigTable.GetUIText("JointDrill_Rank_Refresh_Time"), sTime))
|
|
end
|
|
end
|
|
function JointDrillRankingCtrl:InitRankReward()
|
|
for _, v in pairs(self.tbRankRewardGridCtrl) do
|
|
self:UnbindCtrlByNode(v)
|
|
end
|
|
self.tbRankRewardGridCtrl = {}
|
|
local nRankCount = PlayerData.JointDrill_2:GetRankRewardCount()
|
|
local nTotalRankCount = PlayerData.JointDrill_2:GetTotalRankCount()
|
|
local mapSelfRank = PlayerData.JointDrill_2:GetSelfRankData()
|
|
local nSelfRank = 0
|
|
if mapSelfRank ~= nil and 0 < mapSelfRank.Rank then
|
|
nSelfRank = mapSelfRank.Rank
|
|
end
|
|
self.nRankSection = 0
|
|
if nTotalRankCount ~= 0 then
|
|
nTotalRankCount = math.max(nTotalRankCount, 100)
|
|
self.nRankSection = nSelfRank / nTotalRankCount
|
|
end
|
|
self._mapNode.svRankingReward:Init(nRankCount, self, self.RefreshRankRewardGrid)
|
|
end
|
|
function JointDrillRankingCtrl:RefreshRankRewardGrid(goGrid, goGridIndex)
|
|
local nIndex = goGridIndex + 1
|
|
if self.tbRankRewardGridCtrl[goGrid] == nil then
|
|
self.tbRankRewardGridCtrl[goGrid] = self:BindCtrlByNode(goGrid, "Game.UI.JointDrill.JointDrill_2.JointDrillRankRewardItemCtrl")
|
|
end
|
|
self.tbRankRewardGridCtrl[goGrid]:RefreshItem(nIndex, self.nRankSection)
|
|
end
|
|
function JointDrillRankingCtrl:RefreshRankList()
|
|
self.mapRankList = PlayerData.JointDrill_2:GetRankList()
|
|
for _, v in ipairs(self.tbRankGridCtrl) do
|
|
self:UnbindCtrlByNode(v)
|
|
end
|
|
self.tbRankGridCtrl = {}
|
|
if self.mapRankList == nil or #self.mapRankList == 0 then
|
|
self._mapNode.goLoading.gameObject:SetActive(true)
|
|
self._mapNode.goMainContent.gameObject:SetActive(false)
|
|
else
|
|
self._mapNode.goLoading.gameObject:SetActive(false)
|
|
self._mapNode.goMainContent.gameObject:SetActive(true)
|
|
if self._panel.mapRankDetail == nil then
|
|
self._mapNode.svRankingInfo:SetAnim(0.1)
|
|
end
|
|
self._mapNode.svRankingInfo:Init(#self.mapRankList, self, self.RefreshRankGrid)
|
|
if self._panel.mapRankDetail ~= nil then
|
|
self._mapNode.svRankingInfo:SetScrollPos(self._panel.nGridPos)
|
|
self:AddTimer(1, 0.4, function()
|
|
EventManager.Hit(EventId.OpenPanel, JointDrillContext.GetPanelId(self.nActId, "RankDetail"), self._panel.mapRankDetail)
|
|
self._panel.mapRankDetail = nil
|
|
self._panel.nGridPos = 0
|
|
end, true, true, true)
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 0.4)
|
|
end
|
|
end
|
|
end
|
|
function JointDrillRankingCtrl:RefreshSelfRank()
|
|
local mapSelfRank = PlayerData.JointDrill_2:GetSelfRankData()
|
|
self._mapNode.rtSelfRank:RefreshSelfRank(mapSelfRank)
|
|
end
|
|
function JointDrillRankingCtrl:RefreshRankGrid(goGrid, goGridIndex)
|
|
local nIndex = goGridIndex + 1
|
|
if self.tbRankGridCtrl[goGrid] == nil then
|
|
local itemCtrl = self:BindCtrlByNode(goGrid, "Game.UI.JointDrill.JointDrill_2.JointDrillRankItemCtrl")
|
|
self.tbRankGridCtrl[goGrid] = itemCtrl
|
|
end
|
|
local mapRank = self.mapRankList[nIndex]
|
|
self.tbRankGridCtrl[goGrid]:RefreshRankItem(mapRank)
|
|
end
|
|
function JointDrillRankingCtrl:Awake()
|
|
end
|
|
function JointDrillRankingCtrl:OnEnable()
|
|
local tbParam = self:GetPanelParam()
|
|
if tbParam ~= nil then
|
|
self.nActId = tbParam[1]
|
|
end
|
|
self.tbRankGridCtrl = {}
|
|
self.tbRankRewardGridCtrl = {}
|
|
self._mapNode.goRewardView.gameObject:SetActive(false)
|
|
self._mapNode.goMainContent.gameObject:SetActive(true)
|
|
self:RefreshRankList()
|
|
self:RefreshSelfRank()
|
|
self:SetEndTime()
|
|
self:InitRankReward()
|
|
end
|
|
function JointDrillRankingCtrl:OnDisable()
|
|
for _, v in pairs(self.tbRankGridCtrl) do
|
|
local obj = v.gameObject
|
|
self:UnbindCtrlByNode(v)
|
|
destroy(obj)
|
|
end
|
|
self.tbRankGridCtrl = {}
|
|
for _, v in pairs(self.tbRankRewardGridCtrl) do
|
|
local obj = v.gameObject
|
|
self:UnbindCtrlByNode(v)
|
|
destroy(obj)
|
|
end
|
|
self.tbRankRewardGridCtrl = {}
|
|
end
|
|
function JointDrillRankingCtrl:OnDestroy()
|
|
end
|
|
function JointDrillRankingCtrl:OnRelease()
|
|
end
|
|
function JointDrillRankingCtrl:OnBtnClick_Reward()
|
|
self._mapNode.animWindow.gameObject:SetActive(false)
|
|
self._mapNode.goBlurBg.gameObject:SetActive(true)
|
|
self._mapNode.goRewardView.gameObject:SetActive(true)
|
|
local wait = function()
|
|
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
|
self._mapNode.animWindow.gameObject:SetActive(true)
|
|
self._mapNode.animWindow:Play("t_window_04_t_in")
|
|
end
|
|
cs_coroutine.start(wait)
|
|
end
|
|
function JointDrillRankingCtrl:OnBtnClick_CloseReward()
|
|
self._mapNode.animWindow:Play("t_window_04_t_out")
|
|
local close = function()
|
|
self._mapNode.animWindow.gameObject:SetActive(false)
|
|
self._mapNode.goRewardView.gameObject:SetActive(false)
|
|
end
|
|
self:AddTimer(1, 0.2, close, true, true, true)
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
|
|
end
|
|
function JointDrillRankingCtrl:OnEvent_ShowTeamDetail(rankData)
|
|
self.mapRankDetail = rankData
|
|
end
|
|
function JointDrillRankingCtrl:OnEvent_OpenRankBuildDetail()
|
|
self._panel.mapRankDetail = self.mapRankDetail
|
|
self._panel.nGridPos = self._mapNode.svRankingInfo:GetScrollPos()
|
|
end
|
|
return JointDrillRankingCtrl
|