e0549005e1
EN: 1.9.0.103 CN: 1.9.0.104 JP: 1.9.0.106 KR: 1.9.0.108
148 lines
4.8 KiB
Lua
148 lines
4.8 KiB
Lua
local PenguinCardSelectCtrl = class("PenguinCardSelectCtrl", BaseCtrl)
|
|
local WwiseManger = CS.WwiseAudioManager.Instance
|
|
PenguinCardSelectCtrl._mapNodeConfig = {
|
|
TopBar = {
|
|
sNodeName = "TopBarPanel",
|
|
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
|
|
},
|
|
btnQuest = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Quest"
|
|
},
|
|
txtQuest = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "PenguinCard_Btn_Quest"
|
|
},
|
|
reddotQuest = {},
|
|
sv = {sComponentName = "ScrollRect"},
|
|
sc = {
|
|
sNodeName = "sv",
|
|
sComponentName = "UIScrollToClick"
|
|
},
|
|
LevelContent = {sComponentName = "Transform"},
|
|
goHardLevel = {},
|
|
goNormalLevel = {}
|
|
}
|
|
PenguinCardSelectCtrl._mapEventConfig = {
|
|
PenguinCard_ClickLevel = "OnEvent_Click",
|
|
PenguinCard_EnterLevel = "OnEvent_Enter"
|
|
}
|
|
PenguinCardSelectCtrl._mapRedDotConfig = {}
|
|
function PenguinCardSelectCtrl:Refresh()
|
|
self.goFirstLock = nil
|
|
self.tbLevel = self.actData:GetLevelList()
|
|
delChildren(self._mapNode.LevelContent)
|
|
for k, nLevelId in ipairs(self.tbLevel) do
|
|
local mapCfg = ConfigTable.GetData("ActivityPenguinCardLevel", nLevelId)
|
|
if mapCfg then
|
|
if mapCfg.ScoreLevel then
|
|
self:RefreshHard(k, nLevelId)
|
|
else
|
|
self:RefreshNormal(k, nLevelId)
|
|
end
|
|
end
|
|
end
|
|
local wait = function()
|
|
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
|
if self._panel.nPos then
|
|
NovaAPI.SetHorizontalNormalizedPosition(self._mapNode.sv, self._panel.nPos)
|
|
elseif self.goFirstLock ~= nil then
|
|
self._mapNode.sc:ScrollToClick(self.goFirstLock, 0.01)
|
|
self.goFirstLock = nil
|
|
else
|
|
NovaAPI.SetHorizontalNormalizedPosition(self._mapNode.sv, 1)
|
|
end
|
|
end
|
|
cs_coroutine.start(wait)
|
|
EventManager.Hit("Guide_PassiveCheck_Msg", "Guide_PenguinCard_304")
|
|
end
|
|
function PenguinCardSelectCtrl:RefreshHard(nIndex, nLevelId)
|
|
local goObj = instantiate(self._mapNode.goHardLevel, self._mapNode.LevelContent)
|
|
local ctrlObj = self:BindCtrlByNode(goObj, "Game.UI.Play_PenguinCard.PenguinCardLevelGridCtrl")
|
|
self.tbGridCtrl[nIndex] = ctrlObj
|
|
goObj:SetActive(true)
|
|
ctrlObj:RefreshHard(self.actData, nLevelId)
|
|
local bLock = ctrlObj:GetLock()
|
|
if bLock and not self.goFirstLock then
|
|
self.goFirstLock = goObj
|
|
end
|
|
end
|
|
function PenguinCardSelectCtrl:RefreshNormal(nIndex, nLevelId)
|
|
local goObj = instantiate(self._mapNode.goNormalLevel, self._mapNode.LevelContent)
|
|
local ctrlObj = self:BindCtrlByNode(goObj, "Game.UI.Play_PenguinCard.PenguinCardLevelGridCtrl")
|
|
self.tbGridCtrl[nIndex] = ctrlObj
|
|
goObj:SetActive(true)
|
|
ctrlObj:RefreshNormal(self.actData, nIndex, nLevelId)
|
|
local bLock = ctrlObj:GetLock()
|
|
if bLock and not self.goFirstLock then
|
|
self.goFirstLock = goObj
|
|
end
|
|
end
|
|
function PenguinCardSelectCtrl:Awake()
|
|
local param = self:GetPanelParam()
|
|
if type(param) == "table" then
|
|
self.nActId = param[1]
|
|
end
|
|
self.actData = PlayerData.Activity:GetActivityDataById(self.nActId)
|
|
self.tbGridCtrl = {}
|
|
end
|
|
function PenguinCardSelectCtrl:OnEnable()
|
|
self:Refresh()
|
|
local mapActivityData = ConfigTable.GetData("Activity", self.nActId)
|
|
if mapActivityData ~= nil then
|
|
local nGroupId = mapActivityData.MidGroupId
|
|
local mapGroupData = PlayerData.Activity:GetActivityGroupDataById(nGroupId)
|
|
if mapGroupData ~= nil then
|
|
local actData = mapGroupData:GetActivityDataByIndex(AllEnum.ActivityThemeFuncIndex.Task)
|
|
if actData ~= nil then
|
|
RedDotManager.RegisterNode(RedDotDefine.Activity_Group_Task_Group, {
|
|
nGroupId,
|
|
actData.ActivityId,
|
|
mapActivityData.MiniGameRedDot
|
|
}, self._mapNode.reddotQuest)
|
|
else
|
|
self._mapNode.reddotQuest:SetActive(false)
|
|
end
|
|
else
|
|
self._mapNode.reddotQuest:SetActive(false)
|
|
end
|
|
else
|
|
self._mapNode.reddotQuest:SetActive(false)
|
|
end
|
|
end
|
|
function PenguinCardSelectCtrl:OnDisable()
|
|
for k, v in pairs(self.tbGridCtrl) do
|
|
self:UnbindCtrlByNode(v)
|
|
self.tbGridCtrl[k] = nil
|
|
end
|
|
self.tbGridCtrl = {}
|
|
self._panel.nPos = NovaAPI.GetHorizontalNormalizedPosition(self._mapNode.sv)
|
|
self.actData:SkipLevelRedDot()
|
|
end
|
|
function PenguinCardSelectCtrl:OnDestroy()
|
|
end
|
|
function PenguinCardSelectCtrl:OnBtnClick_Quest()
|
|
local mapActivityData = ConfigTable.GetData("Activity", self.nActId)
|
|
if mapActivityData ~= nil then
|
|
local nGroupId = mapActivityData.MidGroupId
|
|
local mapGroupData = PlayerData.Activity:GetActivityGroupDataById(nGroupId)
|
|
if mapGroupData ~= nil then
|
|
local actData = mapGroupData:GetActivityDataByIndex(AllEnum.ActivityThemeFuncIndex.Task)
|
|
if actData ~= nil then
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.Task_20102, actData.ActivityId, 5)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
function PenguinCardSelectCtrl:OnEvent_Click(go)
|
|
self._mapNode.sc:ScrollToClick(go)
|
|
end
|
|
function PenguinCardSelectCtrl:OnEvent_Enter(callback)
|
|
local ani = self.gameObject:GetComponent("Animator")
|
|
ani:Play("PenguinCardSelect_out")
|
|
WwiseManger:PostEvent("Mode_Card_level")
|
|
self:AddTimer(1, 0.5, callback, true, true, true)
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 0.5)
|
|
end
|
|
return PenguinCardSelectCtrl
|