80af235e05
EN: 1.12.0.120 CN: 1.12.0.120 JP: 1.12.0.124 KR: 1.12.0.124
149 lines
4.7 KiB
Lua
149 lines
4.7 KiB
Lua
local BattlePassRewardCtrl = class("BattlePassRewardCtrl", BaseCtrl)
|
|
BattlePassRewardCtrl._mapNodeConfig = {
|
|
svRewardList = {
|
|
sComponentName = "LoopScrollView"
|
|
},
|
|
imgPrevReward = {
|
|
sCtrlName = "Game.UI.BattlePass.BattlePassRewardGridCtrl"
|
|
},
|
|
iimgIconTitleVipLock = {},
|
|
btnAllReceive = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_AllReceive"
|
|
},
|
|
Content = {sComponentName = "Transform"},
|
|
TMPTitleVip = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "BattlePassRewardPremium"
|
|
},
|
|
TMPTitleBase = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "BattlePassRewardNormal"
|
|
},
|
|
txtbtnAllReceive = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "BattlePassReceiveAll"
|
|
},
|
|
UIParticleVipIcon = {}
|
|
}
|
|
BattlePassRewardCtrl._mapEventConfig = {}
|
|
BattlePassRewardCtrl._mapRedDotConfig = {}
|
|
function BattlePassRewardCtrl:Awake()
|
|
self._mapGrid = {}
|
|
end
|
|
function BattlePassRewardCtrl:FadeIn()
|
|
end
|
|
function BattlePassRewardCtrl:FadeOut()
|
|
end
|
|
function BattlePassRewardCtrl:OnEnable()
|
|
self.anim = self.gameObject:GetComponent("Animator")
|
|
end
|
|
function BattlePassRewardCtrl:OnDisable()
|
|
self:UnbindAllCtrl()
|
|
end
|
|
function BattlePassRewardCtrl:OnDestroy()
|
|
end
|
|
function BattlePassRewardCtrl:OnRelease()
|
|
end
|
|
function BattlePassRewardCtrl:Refresh(tbReward, bPremium, nBattlePassLevel)
|
|
self.tbReward = tbReward
|
|
self.bPremium = bPremium
|
|
self.nBattlePassLevel = nBattlePassLevel
|
|
self.tbFocus = {}
|
|
self.curFocus = 0
|
|
self.bAllReceive = false
|
|
for idx, mapReward in ipairs(tbReward) do
|
|
if mapReward.bFocus then
|
|
table.insert(self.tbFocus, idx)
|
|
end
|
|
if not mapReward.bNormalReceive and idx <= nBattlePassLevel then
|
|
self.bAllReceive = true
|
|
end
|
|
if self.bPremium and not mapReward.bVipReceive and idx <= nBattlePassLevel then
|
|
self.bAllReceive = true
|
|
end
|
|
end
|
|
self._mapNode.UIParticleVipIcon:SetActive(bPremium)
|
|
self._mapNode.iimgIconTitleVipLock:SetActive(not bPremium)
|
|
self._mapNode.svRewardList:Init(#self.tbReward, self, self.OnGridRefresh, nil, true, nil)
|
|
self._mapNode.btnAllReceive.gameObject:SetActive(self.bAllReceive)
|
|
end
|
|
function BattlePassRewardCtrl:SetLevelPos()
|
|
if self.nBattlePassLevel ~= nil then
|
|
self._mapNode.svRewardList:SetScrollGridPos(self.nBattlePassLevel - 2)
|
|
end
|
|
end
|
|
function BattlePassRewardCtrl:PlayUnlockAnim(tbShowRewardIdx)
|
|
if 0 < #tbShowRewardIdx then
|
|
local nFirstIdx = tbShowRewardIdx[1]
|
|
self._mapNode.svRewardList:SetScrollGridPos(nFirstIdx - 1, 0.1, 0)
|
|
local wait = function()
|
|
local nDelay = 0
|
|
for _, nIdx in ipairs(tbShowRewardIdx) do
|
|
local nName = tostring(nIdx - 1)
|
|
local rtItem = self._mapNode.Content:Find(nName)
|
|
if rtItem ~= nil and self._mapGrid[rtItem.gameObject] ~= nil then
|
|
self._mapGrid[rtItem.gameObject]:BattlePassRewardShowEnableEffect(self.bPremium, nDelay)
|
|
nDelay = nDelay + 0.1
|
|
end
|
|
end
|
|
self._mapNode.imgPrevReward:BattlePassRewardShowEnableEffect(self.bPremium, nDelay)
|
|
end
|
|
self:AddTimer(1, 0.1, wait, true, true, true, nil)
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 0.6)
|
|
end
|
|
end
|
|
function BattlePassRewardCtrl:UnbindAllCtrl()
|
|
for _, mapCtrl in pairs(self._mapGrid) do
|
|
self:UnbindCtrlByNode(mapCtrl)
|
|
end
|
|
self._mapGrid = {}
|
|
end
|
|
function BattlePassRewardCtrl:OnGridRefresh(goGrid, gridIndex)
|
|
if self._mapGrid[goGrid] == nil then
|
|
local mapCtrl = self:BindCtrlByNode(goGrid, "Game.UI.BattlePass.BattlePassRewardGridCtrl")
|
|
self._mapGrid[goGrid] = mapCtrl
|
|
end
|
|
local nIdx = gridIndex + 1
|
|
local rewardData = self.tbReward[nIdx]
|
|
if rewardData ~= nil then
|
|
self._mapGrid[goGrid]:Refresh(rewardData, self.bPremium, self.nBattlePassLevel)
|
|
end
|
|
local nMaxIdx = self._mapNode.svRewardList:GetMaxUseGridIndex()
|
|
if #self.tbFocus > 0 then
|
|
for i = 1, #self.tbFocus do
|
|
if nMaxIdx < self.tbFocus[i] then
|
|
if self.tbFocus[i] ~= self.curFocus then
|
|
local rewardDataPrev = self.tbReward[self.tbFocus[i]]
|
|
if rewardDataPrev ~= nil then
|
|
self._mapNode.imgPrevReward:Refresh(rewardDataPrev, self.bPremium, self.nBattlePassLevel)
|
|
self.curFocus = self.tbFocus[i]
|
|
end
|
|
end
|
|
return
|
|
end
|
|
end
|
|
local nIdxPrev = #self.tbFocus
|
|
if self.tbFocus[nIdxPrev] ~= self.curFocus then
|
|
local rewardDataPrev = self.tbReward[self.tbFocus[nIdxPrev]]
|
|
if rewardDataPrev ~= nil then
|
|
self._mapNode.imgPrevReward:Refresh(rewardDataPrev, self.bPremium, self.nBattlePassLevel)
|
|
self.curFocus = self.tbFocus[nIdxPrev]
|
|
end
|
|
end
|
|
else
|
|
self._mapNode.imgPrevReward.gameObject:SetActive(false)
|
|
end
|
|
end
|
|
function BattlePassRewardCtrl:OnBtnClick_AllReceive()
|
|
local callback = function()
|
|
end
|
|
PlayerData.BattlePass:NetMsg_BattlePassRewardReceive(true, 0, false, callback)
|
|
end
|
|
function BattlePassRewardCtrl:PlayInAnim()
|
|
if self.anim ~= nil then
|
|
self.anim:Play("rt_RewardList_switch")
|
|
end
|
|
end
|
|
return BattlePassRewardCtrl
|