Files
StellaSora_DataLua/lua/game/ui/activity/loginreward/loginrewardpopupctrl.lua
T
SL1900 5e0d58cfad Initial version - 1.2.0.60
EN: 1.2.0.60
CN: 1.2.0.61
JP: 1.2.0.63
KR: 1.2.0.67
2025-12-03 01:00:00 +09:00

86 lines
3.0 KiB
Lua

local LoginRewardPopUpCtrl = class("LoginRewardPopUpCtrl", BaseCtrl)
local GameResourceLoader = require("Game.Common.Resource.GameResourceLoader")
local ResTypeAny = GameResourceLoader.ResType.Any
LoginRewardPopUpCtrl._mapNodeConfig = {
imgBlurredBg = {},
imgBlurMask = {},
rtContent = {
sNodeName = "---Content---",
sComponentName = "RectTransform"
}
}
LoginRewardPopUpCtrl._mapEventConfig = {
RefreshLoginRewardPanel = "OnEvent_RefreshLoginRewardPanel"
}
LoginRewardPopUpCtrl._mapRedDotConfig = {}
local sPrefabFolder = "UI_Activity/%s.prefab"
function LoginRewardPopUpCtrl:ShowLoginReward()
if self.tbActivityList == nil or #self.tbActivityList == 0 then
EventManager.Hit(EventId.ClosePanel, PanelId.LoginRewardPopUp)
if nil ~= self.callback then
self.callback()
end
return
end
local actData = table.remove(self.tbActivityList, 1)
self._panel.nActId = actData:GetActId()
self._panel.actData = PlayerData.Activity:GetActivityDataById(self._panel.nActId)
if nil ~= self._panel.actData then
self:RefreshActContent()
end
end
function LoginRewardPopUpCtrl:RefreshActContent()
self:ResetActContent()
local mapActCfg = ConfigTable.GetData("LoginRewardControl", self._panel.nActId)
if mapActCfg ~= nil then
local sPrefabPath = string.format(sPrefabFolder, mapActCfg.PopUpUIAssets)
local goObj = self:CreatePrefabInstance(sPrefabPath, self._mapNode.rtContent)
local sCtrlPath = string.format("Game.UI.Activity.LoginReward.%s.LoginRewardPopUpCtrl_01", "_" .. self._panel.nActId)
self.curPopUpCtrl = self:BindCtrlByNode(goObj, sCtrlPath)
self.curPopUpCtrl:RefreshActData()
end
end
function LoginRewardPopUpCtrl:ResetActContent()
if nil ~= self.curPopUpCtrl then
destroy(self.curPopUpCtrl.gameObject)
self:UnbindCtrlByNode(self.curPopUpCtrl)
end
self.curPopUpCtrl = nil
end
function LoginRewardPopUpCtrl:Awake()
self:ResetActContent()
local tbParam = self:GetPanelParam()
if type(tbParam) == "table" then
self.tbActivityList = tbParam[1]
self.callback = tbParam[2]
end
end
function LoginRewardPopUpCtrl:OnEnable()
self._mapNode.rtContent.gameObject:SetActive(false)
self._mapNode.imgBlurMask.gameObject:SetActive(false)
self._mapNode.imgBlurredBg.gameObject:SetActive(true)
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
self._mapNode.imgBlurMask.gameObject:SetActive(true)
self._mapNode.rtContent.gameObject:SetActive(true)
self:ShowLoginReward()
end
cs_coroutine.start(wait)
end
function LoginRewardPopUpCtrl:OnDisable()
end
function LoginRewardPopUpCtrl:OnDestroy()
end
function LoginRewardPopUpCtrl:OnEvent_RefreshLoginRewardPanel()
if self.curPopUpCtrl == nil then
self:ShowLoginReward()
else
self._panel.actData = PlayerData.Activity:GetActivityDataById(self._panel.nActId)
self.curPopUpCtrl:RefreshActData()
local nAnimTime = self.curPopUpCtrl:PlayOutAnim()
self:AddTimer(1, nAnimTime, "ShowLoginReward", true, true, true)
EventManager.Hit(EventId.TemporaryBlockInput, nAnimTime)
end
end
return LoginRewardPopUpCtrl