Update - 1.13.0.124
EN: 1.13.0.124 CN: 1.13.0.124 JP: 1.13.0.128 KR: 1.13.0.130
This commit is contained in:
@@ -0,0 +1,205 @@
|
||||
local IceCreamLevelGroupCtrl = class("IceCreamLevelGroupCtrl", BaseCtrl)
|
||||
local SpineManager = require("Game.Spine.SpineManager")
|
||||
IceCreamLevelGroupCtrl._mapNodeConfig = {
|
||||
btn_LevelDetail = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtn_OpenDetail"
|
||||
},
|
||||
txt_LevelTypeName = {sComponentName = "TMP_Text"},
|
||||
LockRoot = {},
|
||||
txt_Lock = {sComponentName = "TMP_Text"},
|
||||
iconCert = {},
|
||||
SpRoot_Island = {},
|
||||
redH = {}
|
||||
}
|
||||
IceCreamLevelGroupCtrl._mapEventConfig = {
|
||||
Event_CloseLevelDetail = "Event_CloseDetail",
|
||||
Event_ChangeNextDetail = "Event_ChangeNextDetail",
|
||||
Event_OpenLevelDetail = "Event_OpenLevelDetail"
|
||||
}
|
||||
function IceCreamLevelGroupCtrl:Awake()
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:OnEnable()
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:InitData(nActId, nIndex, tbLevels, parent)
|
||||
self.parent = parent
|
||||
self.nIndex = nIndex
|
||||
self.nActId = nActId
|
||||
self.IceCreamActData = PlayerData.Activity:GetActivityDataById(self.nActId)
|
||||
if self.IceCreamActData == nil then
|
||||
printError("没有冰淇淋活动数据")
|
||||
return
|
||||
end
|
||||
self.tbLevels = tbLevels
|
||||
if self.tbLevels == nil then
|
||||
printError("关卡组信息为空")
|
||||
return
|
||||
end
|
||||
self.CurrentMapData = self.IceCreamActData:GetLevelMapData(self.tbLevels[1])
|
||||
self:RefreshState()
|
||||
self:RegisterGroupSpines()
|
||||
self:RegisterNewRedNode(self.nActId, self.nIndex)
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:RefreshState()
|
||||
self._mapNode.iconCert:SetActive(self:GetIsAllFinish())
|
||||
local nLevelId = self.tbLevels[1]
|
||||
local bLock, nRemain = self.IceCreamActData:CheckLevelIsLockByTime(nLevelId)
|
||||
if bLock then
|
||||
self.bLock = bLock
|
||||
self._mapNode.LockRoot:SetActive(self.bLock)
|
||||
self:RefreshLevelTime(nRemain)
|
||||
self:SetTypeName(bLock)
|
||||
return
|
||||
end
|
||||
bLock = self.IceCreamActData:CheckLevelLockByPrev(nLevelId)
|
||||
if bLock then
|
||||
self.bLock = bLock
|
||||
self._mapNode.LockRoot:SetActive(bLock)
|
||||
NovaAPI.SetTMPText(self._mapNode.txt_Lock, ConfigTable.GetUIText("IceCreamTruck_LevelLockPreTitle"))
|
||||
self:SetTypeName(bLock)
|
||||
return
|
||||
end
|
||||
self.bLock = bLock
|
||||
self._mapNode.LockRoot:SetActive(self.bLock)
|
||||
self:SetTypeName(bLock)
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:GetIsAllFinish()
|
||||
for _, value in ipairs(self.tbLevels) do
|
||||
if not self.IceCreamActData:GetLevelData(value).bFirstComplete then
|
||||
return false
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:SetTypeName(bLock)
|
||||
if bLock then
|
||||
NovaAPI.SetTMPText(self._mapNode.txt_LevelTypeName, ConfigTable.GetUIText("IceCreamTruck_LevelLockName"))
|
||||
elseif self.CurrentMapData then
|
||||
local LevelTypeName = self.CurrentMapData.IslandName
|
||||
NovaAPI.SetTMPText(self._mapNode.txt_LevelTypeName, LevelTypeName)
|
||||
end
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:OnDisable()
|
||||
self:UnRegisterNewRedNode()
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:OnDestroy()
|
||||
self:UnregisterGroupSpines()
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:RefreshLevelTime(remainTime)
|
||||
local sTime = self:GetTimeText(remainTime)
|
||||
NovaAPI.SetTMPText(self._mapNode.txt_Lock, orderedFormat(ConfigTable.GetUIText("IceCreamTruck_TimeTips") or "", sTime))
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:GetTimeText(remainTime)
|
||||
local sTimeStr = ""
|
||||
if remainTime <= 60 then
|
||||
local sec = math.floor(remainTime)
|
||||
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Sec") or "", sec)
|
||||
elseif 60 < remainTime and remainTime <= 3600 then
|
||||
local min = math.floor(remainTime / 60)
|
||||
local sec = math.floor(remainTime - min * 60)
|
||||
if sec == 0 then
|
||||
min = min - 1
|
||||
sec = 60
|
||||
end
|
||||
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Min") or "", min, sec)
|
||||
elseif 3600 < remainTime and remainTime <= 86400 then
|
||||
local hour = math.floor(remainTime / 3600)
|
||||
local min = math.floor((remainTime - hour * 3600) / 60)
|
||||
if min == 0 then
|
||||
hour = hour - 1
|
||||
min = 60
|
||||
end
|
||||
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Hour") or "", hour, min)
|
||||
elseif 86400 < remainTime then
|
||||
local day = math.floor(remainTime / 86400)
|
||||
local hour = math.floor((remainTime - day * 86400) / 3600)
|
||||
if hour == 0 then
|
||||
day = day - 1
|
||||
hour = 24
|
||||
end
|
||||
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Day") or "", day, hour)
|
||||
end
|
||||
return sTimeStr
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:OnBtn_OpenDetail()
|
||||
if self.bLock then
|
||||
return
|
||||
end
|
||||
self.parent._mapNode.LevelDetailsPanel:Open(self.nActId, self.nIndex)
|
||||
self.parent:OpenLevelDetail_Animator(self.nIndex)
|
||||
self:ClickIn_Spine()
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:Event_CloseDetail(nIndex)
|
||||
if self.nIndex == nIndex then
|
||||
self:ClickOut_Spine()
|
||||
self.parent:CloseLevelDetail_AnimatorOut(nIndex)
|
||||
end
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:Event_ChangeNextDetail(nIndex, nNextIndex)
|
||||
if self.nIndex == nIndex then
|
||||
self:ClickOut_Spine()
|
||||
self.parent:OpenNextLevelDetail(nIndex, nNextIndex)
|
||||
end
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:Event_OpenLevelDetail(nNextIndex)
|
||||
if self.nIndex == nNextIndex then
|
||||
self.parent._mapNode.LevelDetailsPanel:Open(self.nActId, nNextIndex)
|
||||
self.parent:OpenLevelDetail_Animator(nNextIndex)
|
||||
self:ClickIn_Spine()
|
||||
end
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:RegisterGroupSpines()
|
||||
local objSpine = self._mapNode.SpRoot_Island
|
||||
if objSpine ~= nil then
|
||||
local nId = SpineManager.Bind(objSpine)
|
||||
if nId ~= nil then
|
||||
self.GroupId = nId
|
||||
if self.bLock then
|
||||
SpineManager.PlayAnim(nId, "lock", true)
|
||||
else
|
||||
SpineManager.PlayAnim(nId, "idle", true)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:UnregisterGroupSpines()
|
||||
if self.GroupId == nil then
|
||||
return
|
||||
end
|
||||
SpineManager.Unbind(self.GroupId)
|
||||
self.GroupId = nil
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:ClickIn_Spine()
|
||||
if self.GroupId == nil then
|
||||
return
|
||||
end
|
||||
self:SetStatusSwitch(self.GroupId, "in", false, "idle2")
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:ClickOut_Spine()
|
||||
if self.GroupId == nil then
|
||||
return
|
||||
end
|
||||
self:SetStatusSwitch(self.GroupId, "out", false, "idle")
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:SetStatusSwitch(CurSpineId, sState, bLoop, sNextLoop)
|
||||
if not CurSpineId then
|
||||
return
|
||||
end
|
||||
if bLoop == nil then
|
||||
bLoop = true
|
||||
end
|
||||
SpineManager.PlayAnim(CurSpineId, sState, bLoop)
|
||||
if not bLoop and sNextLoop then
|
||||
SpineManager.AddAnim(CurSpineId, sNextLoop, true, 0)
|
||||
end
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:RegisterNewRedNode(nActId, nIndex)
|
||||
RedDotManager.RegisterNode(RedDotDefine.Activity_IceCreamTruck_NewType, {nActId, nIndex}, self._mapNode.redH)
|
||||
end
|
||||
function IceCreamLevelGroupCtrl:UnRegisterNewRedNode()
|
||||
RedDotManager.UnRegisterNode(RedDotDefine.Activity_IceCreamTruck_NewLevel, {
|
||||
nActId,
|
||||
nIndex
|
||||
}, self._mapNode.redH)
|
||||
end
|
||||
return IceCreamLevelGroupCtrl
|
||||
Reference in New Issue
Block a user