Major Update - 2.0.0.143
EN: 2.0.0.143 CN: 2.0.0.142 JP: 2.0.0.145 KR: 2.0.0.150
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
local MallActivityCtrl = class("MallActivityCtrl", BaseCtrl)
|
||||
MallActivityCtrl._mapNodeConfig = {
|
||||
rtContent = {
|
||||
sNodeName = "--Content--",
|
||||
sComponentName = "RectTransform"
|
||||
}
|
||||
}
|
||||
MallActivityCtrl._mapEventConfig = {MallOrderClear = "Refresh"}
|
||||
local sPrefabFormat = "UI_Activity/%s.prefab"
|
||||
local sCtrlFormat = "Game.UI.Mall.MallActivity.%s"
|
||||
local GetActUICfg = function(actData)
|
||||
if actData:GetActType() == GameEnum.activityType.MallLogin then
|
||||
return actData:GetLoginRewardControlCfg()
|
||||
end
|
||||
return nil
|
||||
end
|
||||
function MallActivityCtrl:CreateActivityCtrl(actData)
|
||||
local mapActCfg = GetActUICfg(actData)
|
||||
if mapActCfg == nil then
|
||||
printError(string.format("商城活动 %s (类型 %s) 缺少界面配置", tostring(actData:GetActId()), tostring(actData:GetActType())))
|
||||
return nil
|
||||
end
|
||||
local sPrefabPath = string.format(sPrefabFormat, mapActCfg.UIAssets)
|
||||
local goObj = self:CreatePrefabInstance(sPrefabPath, self._mapNode.rtContent)
|
||||
if goObj == nil then
|
||||
return nil
|
||||
end
|
||||
self.sPrefabPath = sPrefabPath
|
||||
local actCtrl = self:BindCtrlByNode(goObj, string.format(sCtrlFormat, mapActCfg.CtrlName))
|
||||
if actCtrl == nil then
|
||||
self:DestroyPrefabInstance(sPrefabPath)
|
||||
self.sPrefabPath = nil
|
||||
end
|
||||
return actCtrl
|
||||
end
|
||||
function MallActivityCtrl:SetExpireTimer(actData)
|
||||
if self.expireTimer ~= nil then
|
||||
self.expireTimer:Cancel(false)
|
||||
self.expireTimer = nil
|
||||
end
|
||||
if actData == nil or actData:GetActCfgData().EndType == GameEnum.activityEndType.NoLimit then
|
||||
return
|
||||
end
|
||||
local nRemainTime = actData:GetActEndTime() - CS.ClientManager.Instance.serverTimeStamp
|
||||
if nRemainTime <= 0 then
|
||||
return
|
||||
end
|
||||
self.expireTimer = self:AddTimer(1, nRemainTime + 1, function()
|
||||
self.expireTimer = nil
|
||||
EventManager.Hit("MallActivityExpire")
|
||||
end, true, true, false)
|
||||
end
|
||||
function MallActivityCtrl:ClearActivity()
|
||||
local actCtrl = self.actCtrl
|
||||
if actCtrl ~= nil then
|
||||
if actCtrl.ClearActivity ~= nil then
|
||||
actCtrl:ClearActivity()
|
||||
end
|
||||
self:UnbindCtrlByNode(actCtrl)
|
||||
self.actCtrl = nil
|
||||
end
|
||||
if self.sPrefabPath ~= nil then
|
||||
self:DestroyPrefabInstance(self.sPrefabPath)
|
||||
self.sPrefabPath = nil
|
||||
end
|
||||
self.nActId = nil
|
||||
end
|
||||
function MallActivityCtrl:Refresh()
|
||||
if self._panel.nCurTog ~= AllEnum.MallToggle.Activity then
|
||||
return
|
||||
end
|
||||
if PlayerData.Activity:GetMallActivityData() == nil then
|
||||
self:ClearActivity()
|
||||
return
|
||||
end
|
||||
local callback = function()
|
||||
self:RefreshActivity()
|
||||
end
|
||||
PlayerData.Mall:SendMallActivityListReq(callback)
|
||||
end
|
||||
function MallActivityCtrl:RefreshActivity()
|
||||
if self._panel.nCurTog ~= AllEnum.MallToggle.Activity then
|
||||
return
|
||||
end
|
||||
local actData = PlayerData.Activity:GetMallActivityData()
|
||||
if actData == nil then
|
||||
self:ClearActivity()
|
||||
return
|
||||
end
|
||||
if self.nActId ~= nil and self.nActId ~= actData:GetActId() then
|
||||
self:ClearActivity()
|
||||
end
|
||||
local actCtrl = self.actCtrl
|
||||
if actCtrl == nil then
|
||||
actCtrl = self:CreateActivityCtrl(actData)
|
||||
if actCtrl == nil then
|
||||
return
|
||||
end
|
||||
self.actCtrl = actCtrl
|
||||
self.nActId = actData:GetActId()
|
||||
end
|
||||
actCtrl.gameObject:SetActive(true)
|
||||
actCtrl:InitActData(actData)
|
||||
end
|
||||
function MallActivityCtrl:Awake()
|
||||
self.expireTimer = nil
|
||||
end
|
||||
function MallActivityCtrl:OnEnable()
|
||||
end
|
||||
function MallActivityCtrl:OnDisable()
|
||||
self:ClearActivity()
|
||||
end
|
||||
function MallActivityCtrl:OnDestroy()
|
||||
end
|
||||
return MallActivityCtrl
|
||||
Reference in New Issue
Block a user