eafd8f4088
EN: 1.9.0.107 CN: 1.9.0.108 JP: 1.9.0.112 KR: 1.9.0.112
212 lines
6.4 KiB
Lua
212 lines
6.4 KiB
Lua
local JointDrillQuestCtrl = class("JointDrillQuestCtrl", BaseCtrl)
|
|
local JointDrillContext = require("Game.UI.JointDrill.JointDrillContext")
|
|
JointDrillQuestCtrl._mapNodeConfig = {
|
|
goBlur = {
|
|
sNodeName = "t_fullscreen_blur_01"
|
|
},
|
|
safeAreaRoot = {
|
|
sNodeName = "----SafeAreaRoot----"
|
|
},
|
|
btnBgClose = {
|
|
sComponentName = "Button",
|
|
callback = "OnBtnClick_Close"
|
|
},
|
|
animWindow = {sNodeName = "goWindow", sComponentName = "Animator"},
|
|
txtWindowTitle = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "JointDrill_Reward_Window_Title"
|
|
},
|
|
btnClose = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Close"
|
|
},
|
|
btnLeft = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Left"
|
|
},
|
|
txtLeft = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "JointDrill_Rank_Score_Reward",
|
|
nCount = 2
|
|
},
|
|
btnRight = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Right"
|
|
},
|
|
txtRight = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "StarTower_Ranking_Reward",
|
|
nCount = 2
|
|
},
|
|
imgOn = {nCount = 2},
|
|
imgOff = {nCount = 2},
|
|
goScore = {},
|
|
txtScoreCn = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "JointDrill_Rank_Week_Score_All"
|
|
},
|
|
txtWeekScore = {sComponentName = "TMP_Text"},
|
|
questLSV = {
|
|
sComponentName = "LoopScrollView"
|
|
},
|
|
btnReceive = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Receive"
|
|
},
|
|
txtBtnReceive = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "JointDrill_Rank_Quest_Receive_All"
|
|
},
|
|
goRankReward = {},
|
|
rankingRewardLSV = {
|
|
sComponentName = "LoopScrollView"
|
|
},
|
|
txtRankTip = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "JointDrill_Rank_Refresh_Tip"
|
|
}
|
|
}
|
|
JointDrillQuestCtrl._mapEventConfig = {}
|
|
JointDrillQuestCtrl._mapRedDotConfig = {}
|
|
local tab_score = 1
|
|
local tab_ranking = 2
|
|
function JointDrillQuestCtrl:Refresh()
|
|
self._mapNode.imgOn[1].gameObject:SetActive(self.nSelectTab == tab_score)
|
|
self._mapNode.imgOn[2].gameObject:SetActive(self.nSelectTab == tab_ranking)
|
|
self._mapNode.imgOff[1].gameObject:SetActive(self.nSelectTab == tab_ranking)
|
|
self._mapNode.imgOff[2].gameObject:SetActive(self.nSelectTab == tab_score)
|
|
self._mapNode.goScore.gameObject:SetActive(self.nSelectTab == tab_score)
|
|
self._mapNode.goRankReward.gameObject:SetActive(self.nSelectTab == tab_ranking)
|
|
if self.nSelectTab == tab_score then
|
|
self:RefreshQuest()
|
|
else
|
|
self:RefreshRanking()
|
|
end
|
|
end
|
|
function JointDrillQuestCtrl:RefreshQuest()
|
|
for goGrid, objCtrl in pairs(self.mapQuestGrid) do
|
|
self:UnbindCtrlByNode(objCtrl)
|
|
self.mapQuestGrid[goGrid] = nil
|
|
end
|
|
local actDataIns = PlayerData.Activity:GetActivityDataById(self.nActId)
|
|
if actDataIns == nil then
|
|
return
|
|
end
|
|
self.actDataIns = actDataIns
|
|
self.tbQuests = actDataIns:GetRewardQuestList()
|
|
self._mapNode.questLSV:Init(#self.tbQuests, self, self.RefreshQuestGrid)
|
|
local nTotalScore = PlayerData.JointDrill_2:GetTotalRankScore()
|
|
NovaAPI.SetTMPText(self._mapNode.txtWeekScore, FormatWithCommas(nTotalScore))
|
|
end
|
|
function JointDrillQuestCtrl:RefreshQuestGrid(goGrid, gridIndex)
|
|
local nIndex = gridIndex + 1
|
|
if self.mapQuestGrid[goGrid] == nil then
|
|
self.mapQuestGrid[goGrid] = self:BindCtrlByNode(goGrid, "Game.UI.JointDrill.JointDrill_2.JointDrillQuestItemCtrl")
|
|
end
|
|
local mapQuest = self.tbQuests[nIndex]
|
|
self.mapQuestGrid[goGrid]:SetItem(mapQuest)
|
|
end
|
|
function JointDrillQuestCtrl:RefreshRanking()
|
|
for goGrid, objCtrl in pairs(self.mapRankingGrid) do
|
|
self:UnbindCtrlByNode(objCtrl)
|
|
self.mapRankingGrid[goGrid] = nil
|
|
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.rankingRewardLSV:Init(nRankCount, self, self.RefreshRankingGrid)
|
|
end
|
|
function JointDrillQuestCtrl:RefreshRankingGrid(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 JointDrillQuestCtrl:PlayCloseAni(callback)
|
|
self._mapNode.animWindow:Play("t_window_04_t_out")
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
|
|
self:AddTimer(1, 0.2, "OnPanelClose", true, true, true, callback)
|
|
end
|
|
function JointDrillQuestCtrl:OnPanelClose(_, callback)
|
|
EventManager.Hit(EventId.ClosePanel, JointDrillContext.GetPanelId(self.nActId, "Quest"))
|
|
if callback then
|
|
callback()
|
|
end
|
|
end
|
|
function JointDrillQuestCtrl:Awake()
|
|
self.nActId = 0
|
|
self.mapQuestGrid = {}
|
|
self.mapRankingGrid = {}
|
|
self.tbQuests = {}
|
|
end
|
|
function JointDrillQuestCtrl:OnEnable()
|
|
local tbParam = self:GetPanelParam()
|
|
if tbParam ~= nil then
|
|
self.nActId = tbParam[1]
|
|
end
|
|
self.nSelectTab = tab_score
|
|
self._mapNode.safeAreaRoot.gameObject:SetActive(false)
|
|
self._mapNode.goBlur.gameObject:SetActive(true)
|
|
local wait = function()
|
|
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
|
self._mapNode.safeAreaRoot.gameObject:SetActive(true)
|
|
self._mapNode.animWindow:Play("t_window_04_t_in")
|
|
end
|
|
cs_coroutine.start(wait)
|
|
self:Refresh()
|
|
end
|
|
function JointDrillQuestCtrl:OnDisable()
|
|
for goGrid, objCtrl in pairs(self.mapQuestGrid) do
|
|
self:UnbindCtrlByNode(objCtrl)
|
|
self.mapQuestGrid[goGrid] = nil
|
|
end
|
|
self.mapQuestGrid = {}
|
|
for goGrid, objCtrl in pairs(self.mapRankingGrid) do
|
|
self:UnbindCtrlByNode(objCtrl)
|
|
self.mapRankingGrid[goGrid] = nil
|
|
end
|
|
self.mapRankingGrid = {}
|
|
end
|
|
function JointDrillQuestCtrl:OnDestroy()
|
|
end
|
|
function JointDrillQuestCtrl:OnBtnClick_Close()
|
|
self:PlayCloseAni()
|
|
end
|
|
function JointDrillQuestCtrl:OnBtnClick_Receive()
|
|
local bReceive = false
|
|
for _, v in ipairs(self.tbQuests) do
|
|
if v.Status == 1 then
|
|
bReceive = true
|
|
break
|
|
end
|
|
end
|
|
if not bReceive then
|
|
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("JointDrill_Receive_Quest_Reward_Tip"))
|
|
return
|
|
end
|
|
local callback = function()
|
|
self:Refresh()
|
|
end
|
|
self.actDataIns:SendReceiveQuestReward(callback)
|
|
end
|
|
function JointDrillQuestCtrl:OnBtnClick_Left()
|
|
self.nSelectTab = tab_score
|
|
self:Refresh()
|
|
end
|
|
function JointDrillQuestCtrl:OnBtnClick_Right()
|
|
self.nSelectTab = tab_ranking
|
|
self:Refresh()
|
|
end
|
|
return JointDrillQuestCtrl
|