Files
SL1900 80af235e05 Update - 1.12.0.120
EN: 1.12.0.120
CN: 1.12.0.120
JP: 1.12.0.124
KR: 1.12.0.124
2026-06-30 14:30:00 +09:00

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