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
This commit is contained in:
SL1900
2025-12-03 01:00:00 +09:00
commit 5e0d58cfad
3595 changed files with 9373562 additions and 0 deletions
+127
View File
@@ -0,0 +1,127 @@
local KeyNodeCtrl = class("KeyNodeCtrl", BaseCtrl)
local NodeState = {
Lock = 1,
Ready = 2,
Active = 3
}
local ReadyColor_Icon = {
[GameEnum.starTowerNodeColor.Blue] = "#c6f6f5",
[GameEnum.starTowerNodeColor.Yellow] = "#fff5d7",
[GameEnum.starTowerNodeColor.Orange] = "#ffe1bd",
[GameEnum.starTowerNodeColor.Red] = "#ffb5b5",
[GameEnum.starTowerNodeColor.Green] = "#88e2ce"
}
local ReadyColor_Bg = {
[GameEnum.starTowerNodeColor.Blue] = "#41a4c9",
[GameEnum.starTowerNodeColor.Yellow] = "#ebaf3c",
[GameEnum.starTowerNodeColor.Orange] = "#f07c3a",
[GameEnum.starTowerNodeColor.Red] = "#e44d49",
[GameEnum.starTowerNodeColor.Green] = "#1aa989"
}
local ReadyColor_Light = {
[GameEnum.starTowerNodeColor.Blue] = "#aed6ff",
[GameEnum.starTowerNodeColor.Yellow] = "#ffebae",
[GameEnum.starTowerNodeColor.Orange] = "#ffbf73",
[GameEnum.starTowerNodeColor.Red] = "#e44d49",
[GameEnum.starTowerNodeColor.Green] = "#96fff6"
}
local LockColor = {
[GameEnum.starTowerNodeColor.Blue] = "#33758d",
[GameEnum.starTowerNodeColor.Yellow] = "#977636",
[GameEnum.starTowerNodeColor.Orange] = "#bf7043",
[GameEnum.starTowerNodeColor.Red] = "#b33f3c",
[GameEnum.starTowerNodeColor.Green] = "#2c7e6c"
}
local _, TextColorGray = ColorUtility.TryParseHtmlString("#7ca2bb")
KeyNodeCtrl._mapNodeConfig = {
imgGray = {sComponentName = "Image"},
imgLight = {sComponentName = "Image"},
imgBg = {sComponentName = "Image"},
imgIcon = {sComponentName = "Image"},
txtName = {nCount = 2, sComponentName = "TMP_Text"},
Select = {},
imgLight_add = {},
loop = {nCount = 5},
lizi_ = {nCount = 5},
AnimRoot = {sComponentName = "Animator"}
}
KeyNodeCtrl._mapEventConfig = {}
function KeyNodeCtrl:Refresh(nId, nState, bMulti, bHideName)
self.nId = nId
local mapCfg = ConfigTable.GetData("StarTowerGrowthNode", nId)
if not mapCfg then
return
end
self._mapNode.txtName[1].gameObject:SetActive(not bMulti and not bHideName)
self._mapNode.txtName[2].gameObject:SetActive(bMulti and not bHideName)
NovaAPI.SetTMPText(self._mapNode.txtName[1], mapCfg.Name)
NovaAPI.SetTMPText(self._mapNode.txtName[2], mapCfg.Name)
self:SetPngSprite(self._mapNode.imgIcon, mapCfg.Icon)
for i = 1, 5 do
self._mapNode.lizi_[i]:SetActive(i == mapCfg.Color)
end
if nState == NodeState.Lock then
self._mapNode.imgGray.gameObject:SetActive(false)
self._mapNode.imgLight.gameObject:SetActive(false)
self._mapNode.loop[mapCfg.Color].gameObject:SetActive(false)
for i = 1, 2 do
NovaAPI.SetTMPColor(self._mapNode.txtName[i], TextColorGray)
end
local _, color = ColorUtility.TryParseHtmlString(LockColor[mapCfg.Color])
NovaAPI.SetImageColor(self._mapNode.imgBg, color)
NovaAPI.SetImageColor(self._mapNode.imgIcon, color)
elseif nState == NodeState.Ready then
self._mapNode.imgGray.gameObject:SetActive(true)
self._mapNode.imgLight.gameObject:SetActive(true)
self._mapNode.loop[mapCfg.Color].gameObject:SetActive(true)
for i = 1, 2 do
NovaAPI.SetTMPColor(self._mapNode.txtName[i], White_Normal)
end
local _, colorIcon = ColorUtility.TryParseHtmlString(ReadyColor_Icon[mapCfg.Color])
local _, colorBg = ColorUtility.TryParseHtmlString(ReadyColor_Bg[mapCfg.Color])
local _, colorLight = ColorUtility.TryParseHtmlString(ReadyColor_Light[mapCfg.Color])
colorLight.a = 0.6
NovaAPI.SetImageColor(self._mapNode.imgIcon, colorIcon)
NovaAPI.SetImageColor(self._mapNode.imgBg, colorBg)
NovaAPI.SetImageColor(self._mapNode.imgLight, colorLight)
elseif nState == NodeState.Active then
self._mapNode.imgGray.gameObject:SetActive(true)
self._mapNode.imgLight.gameObject:SetActive(false)
self._mapNode.loop[mapCfg.Color].gameObject:SetActive(false)
for i = 1, 2 do
NovaAPI.SetTMPColor(self._mapNode.txtName[i], White_Normal)
end
local _, colorIcon = ColorUtility.TryParseHtmlString(ReadyColor_Icon[mapCfg.Color])
local _, colorBg = ColorUtility.TryParseHtmlString(ReadyColor_Bg[mapCfg.Color])
NovaAPI.SetImageColor(self._mapNode.imgIcon, colorIcon)
NovaAPI.SetImageColor(self._mapNode.imgBg, colorBg)
end
end
function KeyNodeCtrl:SetSelect(bSelect)
self._mapNode.Select:SetActive(bSelect)
end
function KeyNodeCtrl:GetId()
return self.nId
end
function KeyNodeCtrl:PlayActiveAnim(callback)
self._mapNode.AnimRoot:Play("StarTowerGrowth_KeyNode_open", 0, 0)
self:AddTimer(1, 0.667, function()
if callback then
callback()
end
end, true, true, true)
EventManager.Hit("SetGrowthKeyNodeEye", true)
self:AddTimer(1, 0.15, function()
EventManager.Hit("SetGrowthKeyNodeEye", false)
end, true, true, true)
end
function KeyNodeCtrl:Awake()
self:SetSelect(false)
end
function KeyNodeCtrl:OnEnable()
end
function KeyNodeCtrl:OnDisable()
end
function KeyNodeCtrl:OnDestroy()
end
return KeyNodeCtrl
@@ -0,0 +1,132 @@
local KeyNodeListCtrl = class("KeyNodeListCtrl", BaseCtrl)
local _, ReadyColor = ColorUtility.TryParseHtmlString("#f1f4f6")
local _, LockColor = ColorUtility.TryParseHtmlString("#657eae")
KeyNodeListCtrl._mapNodeConfig = {
goLine = {nCount = 4},
line1_ = {nCount = 2, sComponentName = "Image"},
line2_ = {nCount = 2, sComponentName = "Image"},
line3_1 = {sComponentName = "Image"},
line4_1 = {sComponentName = "Image"},
KeyNode = {
nCount = 2,
sCtrlName = "Game.UI.StarTowerGrowth.KeyNodeCtrl"
},
goOne = {},
btnNode = {
nCount = 2,
sComponentName = "UIButton",
callback = "OnBtnClick_Node"
}
}
KeyNodeListCtrl._mapEventConfig = {}
function KeyNodeListCtrl:Refresh(nCloumn, tbNodes, tbId, mapNext)
self.nCloumn = nCloumn
self.tbId = tbId
self.tbNodes = tbNodes
local nCount = #tbId
if nCount == 1 then
self._mapNode.goOne:SetActive(true)
self._mapNode.KeyNode[2].gameObject:SetActive(false)
elseif nCount == 2 then
self._mapNode.goOne:SetActive(false)
self._mapNode.KeyNode[2].gameObject:SetActive(true)
end
for i, nId in ipairs(tbId) do
local mapNode = tbNodes[nId]
local nState = 1
if mapNode.bActive then
nState = 3
elseif not mapNode.bReady then
nState = 1
elseif mapNode.bReady then
nState = 2
end
self._mapNode.KeyNode[i]:Refresh(nId, nState, nCount == 2)
end
local nLineType = 0
if mapNext then
if #mapNext.tbId == 2 then
nLineType = nCount + 2
elseif #mapNext.tbId == 3 then
nLineType = nCount
end
end
for i = 1, 4 do
self._mapNode.goLine[i]:SetActive(nLineType == i)
end
if nLineType == 1 then
local color = tbNodes[tbId[1]].bActive and ReadyColor or LockColor
NovaAPI.SetImageColor(self._mapNode.line1_[1], color)
NovaAPI.SetImageColor(self._mapNode.line1_[2], color)
elseif nLineType == 2 then
NovaAPI.SetImageColor(self._mapNode.line2_[1], tbNodes[tbId[1]].bActive and ReadyColor or LockColor)
NovaAPI.SetImageColor(self._mapNode.line2_[2], tbNodes[tbId[2]].bActive and ReadyColor or LockColor)
elseif nLineType == 3 or nLineType == 4 then
local bActive = true
for _, nId in ipairs(tbId) do
if not tbNodes[nId].bActive then
bActive = false
break
end
end
local color = bActive and ReadyColor or LockColor
if nLineType == 3 then
NovaAPI.SetImageColor(self._mapNode.line3_1, color)
elseif nLineType == 4 then
NovaAPI.SetImageColor(self._mapNode.line4_1, color)
end
end
end
function KeyNodeListCtrl:GetType()
return GameEnum.towerGrowthNodeType.Core
end
function KeyNodeListCtrl:GetReadyNode()
local goNode
for i, nId in ipairs(self.tbId) do
local mapNode = self.tbNodes[nId]
if mapNode.bReady and not mapNode.bActive then
goNode = self._mapNode.btnNode[i].gameObject
end
end
return goNode, GameEnum.towerGrowthNodeType.Core
end
function KeyNodeListCtrl:SetSelect(nId, bSelect)
for i, v in ipairs(self.tbId) do
if v == nId then
self._mapNode.KeyNode[i]:SetSelect(bSelect)
return
end
end
end
function KeyNodeListCtrl:PlayActiveAnim(nId, callback)
for i, v in ipairs(self.tbId) do
if v == nId then
self._mapNode.KeyNode[i]:PlayActiveAnim(callback)
return
end
end
end
function KeyNodeListCtrl:PlayActiveAnimFromActive(tbActiveId)
for i, v in ipairs(self.tbId) do
if table.indexof(tbActiveId, v) > 0 then
self._mapNode.KeyNode[i]:PlayActiveAnim()
end
end
end
function KeyNodeListCtrl:ClearSelect()
for i = 1, 2 do
self._mapNode.KeyNode[i]:SetSelect(false)
end
end
function KeyNodeListCtrl:Awake()
end
function KeyNodeListCtrl:OnEnable()
end
function KeyNodeListCtrl:OnDisable()
end
function KeyNodeListCtrl:OnDestroy()
end
function KeyNodeListCtrl:OnBtnClick_Node(btn, nIndex)
EventManager.Hit("StarTowerGrowthNodeSelect", self.tbId[nIndex], self.nCloumn, btn.gameObject)
end
return KeyNodeListCtrl
@@ -0,0 +1,132 @@
local NodeInfoCtrl = class("NodeInfoCtrl", BaseCtrl)
local WwiseManger = CS.WwiseAudioManager.Instance
NodeInfoCtrl._mapNodeConfig = {
goKey = {},
KeyNode = {
sCtrlName = "Game.UI.StarTowerGrowth.KeyNodeCtrl"
},
txtName = {sComponentName = "TMP_Text"},
txtInfoTitle = {
sComponentName = "TMP_Text",
sLanguageId = "STGrowth_NodeEffect"
},
txtDesc = {sComponentName = "TMP_Text"},
txtLock = {sComponentName = "TMP_Text"},
txtActived = {
sComponentName = "TMP_Text",
sLanguageId = "STGrowth_Node_Actived"
},
btnActiveNode = {
sComponentName = "UIButton",
callback = "OnBtnClick_Active"
},
txtBtnActive = {
sComponentName = "TMP_Text",
sLanguageId = "STGrowth_Btn_Active"
},
goMat = {
nCount = 3,
sCtrlName = "Game.UI.TemplateEx.TemplateMatCtrl"
},
matList = {},
btnAdd = {
nCount = 3,
sComponentName = "UIButton",
callback = "OnBtnClick_Tips"
},
svInfo = {sComponentName = "ScrollRect"},
TMP_Link = {
sNodeName = "txtDesc",
sComponentName = "TMPHyperLink",
callback = "OnLinkClick_Word"
}
}
NodeInfoCtrl._mapEventConfig = {}
function NodeInfoCtrl:Refresh(mapNode)
local mapCfg = ConfigTable.GetData("StarTowerGrowthNode", mapNode.nId)
if not mapCfg then
return
end
self.mapCfg = mapCfg
self.mapNode = mapNode
if mapCfg.Type == GameEnum.towerGrowthNodeType.Core then
self._mapNode.goKey:SetActive(true)
self._mapNode.KeyNode:Refresh(mapNode.nId, 3, nil, true)
elseif mapCfg.Type == GameEnum.towerGrowthNodeType.Normal then
self._mapNode.goKey:SetActive(false)
end
NovaAPI.SetTMPText(self._mapNode.txtName, mapCfg.Name)
NovaAPI.SetTMPText(self._mapNode.txtDesc, mapCfg.Desc)
NovaAPI.SetVerticalNormalizedPosition(self._mapNode.svInfo, 1)
self._mapNode.matList:SetActive(not mapNode.bActive)
if not mapNode.bActive then
for i = 1, 3 do
self._mapNode.btnAdd[i].interactable = mapCfg["ItemId" .. i] ~= 0
if mapCfg["ItemId" .. i] ~= 0 then
self._mapNode.goMat[i].gameObject:SetActive(true)
self._mapNode.goMat[i]:SetMat(mapCfg["ItemId" .. i], mapCfg["ItemQty" .. i])
else
self._mapNode.goMat[i].gameObject:SetActive(false)
end
end
end
self._mapNode.txtLock.gameObject:SetActive(not mapNode.bActive and not mapNode.bReady)
self._mapNode.btnActiveNode.gameObject:SetActive(not mapNode.bActive and mapNode.bReady)
self._mapNode.txtActived.gameObject:SetActive(mapNode.bActive)
if not mapNode.bActive and not mapNode.bReady then
local mapGroup = PlayerData.StarTower:GetGrowthGroup(mapCfg.Group)
if mapGroup.bLock then
NovaAPI.SetTMPText(self._mapNode.txtLock, orderedFormat(ConfigTable.GetUIText("STGrowth_NodeLock_Group"), ConfigTable.GetData("StarTowerGrowthGroup", mapGroup.nId).Name))
else
NovaAPI.SetTMPText(self._mapNode.txtLock, ConfigTable.GetUIText("STGrowth_NodeLock_Pre"))
end
end
end
function NodeInfoCtrl:Awake()
end
function NodeInfoCtrl:OnEnable()
end
function NodeInfoCtrl:OnDisable()
end
function NodeInfoCtrl:OnDestroy()
end
function NodeInfoCtrl:OnBtnClick_Active(btn)
local bMat = true
for i = 1, 3 do
if self.mapCfg["ItemId" .. i] ~= 0 then
local nHas = PlayerData.Item:GetItemCountByID(self.mapCfg["ItemId" .. i])
if nHas < self.mapCfg["ItemQty" .. i] then
bMat = false
break
end
end
end
if not bMat then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("STGrowth_NoMat"))
return
end
local callback = function()
self._mapNode.btnActiveNode.gameObject:SetActive(false)
self._mapNode.txtActived.gameObject:SetActive(true)
self._mapNode.matList:SetActive(false)
if self.mapCfg.Type == GameEnum.towerGrowthNodeType.Core then
WwiseManger:PlaySound("ui_rogue_research_large_button")
elseif self.mapCfg.Type == GameEnum.towerGrowthNodeType.Normal then
WwiseManger:PlaySound("ui_rogue_research_small_button")
end
EventManager.Hit("StarTowerGrowthNodeUnlock")
end
PlayerData.StarTower:SendTowerGrowthNodeUnlockReq(self.mapCfg.Id, self.mapCfg.Group, callback)
end
function NodeInfoCtrl:OnBtnClick_Tips(btn, nIndex)
local mapData = {
nTid = self.mapCfg["ItemId" .. nIndex],
bShowDepot = true,
bShowJumpto = true
}
EventManager.Hit(EventId.OpenPanel, PanelId.ItemTips, btn.transform, mapData)
end
function NodeInfoCtrl:OnLinkClick_Word(link, sWordId)
UTILS.ClickWordLink(link, sWordId)
end
return NodeInfoCtrl
@@ -0,0 +1,69 @@
local NormalNodeCtrl = class("NormalNodeCtrl", BaseCtrl)
local NodeState = {
Lock = 1,
Ready = 2,
Active = 3
}
local _, ReadyColor = ColorUtility.TryParseHtmlString("#a0cdde")
local _, LockColor = ColorUtility.TryParseHtmlString("#568292")
local _, TextColorGray = ColorUtility.TryParseHtmlString("#7ca2bb")
NormalNodeCtrl._mapNodeConfig = {
imgGray = {sComponentName = "Image"},
imgLight = {sComponentName = "Image"},
imgIcon = {sComponentName = "Image"},
txtName = {sComponentName = "TMP_Text"},
Select = {},
imgLight_add = {},
AnimRoot = {sComponentName = "Animator"}
}
NormalNodeCtrl._mapEventConfig = {}
function NormalNodeCtrl:Refresh(nId, nState)
self.nId = nId
local mapCfg = ConfigTable.GetData("StarTowerGrowthNode", nId)
if not mapCfg then
return
end
NovaAPI.SetTMPText(self._mapNode.txtName, mapCfg.Name)
if nState == NodeState.Lock then
self._mapNode.imgGray.gameObject:SetActive(false)
self._mapNode.imgLight.gameObject:SetActive(false)
NovaAPI.SetTMPColor(self._mapNode.txtName, TextColorGray)
NovaAPI.SetImageColor(self._mapNode.imgIcon, LockColor)
elseif nState == NodeState.Ready then
self._mapNode.imgGray.gameObject:SetActive(true)
self._mapNode.imgLight.gameObject:SetActive(true)
NovaAPI.SetTMPColor(self._mapNode.txtName, White_Normal)
NovaAPI.SetImageColor(self._mapNode.imgIcon, ReadyColor)
elseif nState == NodeState.Active then
self._mapNode.imgGray.gameObject:SetActive(true)
self._mapNode.imgLight.gameObject:SetActive(false)
NovaAPI.SetTMPColor(self._mapNode.txtName, White_Normal)
NovaAPI.SetImageColor(self._mapNode.imgIcon, ReadyColor)
end
end
function NormalNodeCtrl:SetSelect(bSelect)
self._mapNode.Select:SetActive(bSelect)
end
function NormalNodeCtrl:GetId()
return self.nId
end
function NormalNodeCtrl:PlayActiveAnim(callback)
self._mapNode.AnimRoot:Play("StarTowerGrowth_NormalNode_open", 0, 0)
self._mapNode.imgLight_add:SetActive(true)
self:AddTimer(1, 0.5, function()
self._mapNode.imgLight_add:SetActive(false)
if callback then
callback()
end
end, true, true, true)
end
function NormalNodeCtrl:Awake()
self:SetSelect(false)
end
function NormalNodeCtrl:OnEnable()
end
function NormalNodeCtrl:OnDisable()
end
function NormalNodeCtrl:OnDestroy()
end
return NormalNodeCtrl
@@ -0,0 +1,148 @@
local NormalNodeListCtrl = class("NormalNodeListCtrl", BaseCtrl)
local _, ReadyColor = ColorUtility.TryParseHtmlString("#f1f4f6")
local _, LockColor = ColorUtility.TryParseHtmlString("#657eae")
NormalNodeListCtrl._mapNodeConfig = {
goLine = {nCount = 6},
line1_ = {nCount = 3, sComponentName = "Image"},
line2_ = {nCount = 2, sComponentName = "Image"},
line3_ = {nCount = 2, sComponentName = "Image"},
line4_ = {nCount = 2, sComponentName = "Image"},
line5_1 = {sComponentName = "Image"},
line6_1 = {sComponentName = "Image"},
NormalNode = {
nCount = 3,
sCtrlName = "Game.UI.StarTowerGrowth.NormalNodeCtrl"
},
btnNode = {
nCount = 3,
sComponentName = "UIButton",
callback = "OnBtnClick_Node"
}
}
NormalNodeListCtrl._mapEventConfig = {}
function NormalNodeListCtrl:Refresh(nCloumn, tbNodes, tbId, mapNext)
self.nCloumn = nCloumn
self.tbId = tbId
self.tbNodes = tbNodes
local nNodeCount = #tbId
for i = 1, 3 do
self._mapNode.NormalNode[i].gameObject:SetActive(i <= nNodeCount)
end
for i, nId in ipairs(tbId) do
local mapNode = tbNodes[nId]
local nState = 1
if mapNode.bActive then
nState = 3
elseif not mapNode.bReady then
nState = 1
elseif mapNode.bReady then
nState = 2
end
self._mapNode.NormalNode[i]:Refresh(nId, nState)
end
local nLineType = 0
if mapNext then
if mapNext.nType == GameEnum.towerGrowthNodeType.Core then
if #mapNext.tbId == 1 then
nLineType = nNodeCount == 3 and 3 or 5
elseif #mapNext.tbId == 2 then
nLineType = nNodeCount == 3 and 2 or 6
end
elseif mapNext.nType == GameEnum.towerGrowthNodeType.Normal then
nLineType = nNodeCount == 3 and 1 or 4
end
end
for i = 1, 6 do
self._mapNode.goLine[i]:SetActive(nLineType == i)
end
if nLineType == 1 then
for i, nId in ipairs(tbId) do
NovaAPI.SetImageColor(self._mapNode.line1_[i], tbNodes[nId].bActive and ReadyColor or LockColor)
end
elseif nLineType == 2 then
local b12Active = tbNodes[tbId[1]].bActive and tbNodes[tbId[2]].bActive
local b23Active = tbNodes[tbId[3]].bActive and tbNodes[tbId[2]].bActive
NovaAPI.SetImageColor(self._mapNode.line2_[1], b12Active and ReadyColor or LockColor)
NovaAPI.SetImageColor(self._mapNode.line2_[2], b23Active and ReadyColor or LockColor)
elseif nLineType == 3 or nLineType == 5 or nLineType == 6 then
local bActive = true
for _, nId in ipairs(tbId) do
if not tbNodes[nId].bActive then
bActive = false
break
end
end
local color = bActive and ReadyColor or LockColor
if nLineType == 3 then
NovaAPI.SetImageColor(self._mapNode.line3_[1], color)
NovaAPI.SetImageColor(self._mapNode.line3_[2], color)
elseif nLineType == 5 then
NovaAPI.SetImageColor(self._mapNode.line5_1, color)
elseif nLineType == 6 then
NovaAPI.SetImageColor(self._mapNode.line6_1, color)
end
elseif nLineType == 4 then
for i, nId in ipairs(tbId) do
NovaAPI.SetImageColor(self._mapNode.line4_[i], tbNodes[nId].bActive and ReadyColor or LockColor)
end
end
end
function NormalNodeListCtrl:GetType()
return GameEnum.towerGrowthNodeType.Normal
end
function NormalNodeListCtrl:GetReadyNode()
local goNode
for i, nId in ipairs(self.tbId) do
local mapNode = self.tbNodes[nId]
if mapNode.bReady and not mapNode.bActive then
goNode = self._mapNode.btnNode[i].gameObject
end
end
return goNode, GameEnum.towerGrowthNodeType.Normal
end
function NormalNodeListCtrl:SetSelect(nId, bSelect)
for i, v in ipairs(self.tbId) do
if v == nId then
self._mapNode.NormalNode[i]:SetSelect(bSelect)
return
end
end
end
function NormalNodeListCtrl:PlayActiveAnim(nId, callback)
for i, v in ipairs(self.tbId) do
if v == nId then
self._mapNode.NormalNode[i]:PlayActiveAnim(callback)
return
end
end
end
function NormalNodeListCtrl:PlayActiveAnimFromActive(tbActiveId)
for i, v in ipairs(self.tbId) do
if table.indexof(tbActiveId, v) > 0 then
self._mapNode.NormalNode[i]:PlayActiveAnim()
end
end
end
function NormalNodeListCtrl:ClearSelect()
for i = 1, 3 do
self._mapNode.NormalNode[i]:SetSelect(false)
end
end
function NormalNodeListCtrl:Guide_SelectNode(nIndex)
local btn = self._mapNode.btnNode[nIndex]
if self.tbId[nIndex] ~= nil and btn ~= nil then
EventManager.Hit("StarTowerGrowthNodeSelect", self.tbId[nIndex], self.nCloumn, btn.gameObject)
end
end
function NormalNodeListCtrl:Awake()
end
function NormalNodeListCtrl:OnEnable()
end
function NormalNodeListCtrl:OnDisable()
end
function NormalNodeListCtrl:OnDestroy()
end
function NormalNodeListCtrl:OnBtnClick_Node(btn, nIndex)
EventManager.Hit("StarTowerGrowthNodeSelect", self.tbId[nIndex], self.nCloumn, btn.gameObject)
end
return NormalNodeListCtrl
@@ -0,0 +1,464 @@
local StarTowerGrowthCtrl = class("StarTowerGrowthCtrl", BaseCtrl)
local WwiseManger = CS.WwiseAudioManager.Instance
StarTowerGrowthCtrl._mapNodeConfig = {
TopBar = {
sNodeName = "TopBarPanel",
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
},
tab = {
nCount = 4,
sCtrlName = "Game.UI.TemplateEx.TemplateTabCtrl"
},
btnTab = {
nCount = 4,
sComponentName = "UIButton",
callback = "OnBtnClick_Tab"
},
imgLayerLock = {nCount = 4},
goTip = {},
txtTipLock = {sComponentName = "TMP_Text"},
NormalNodeList = {},
KeyNodeList = {},
NodeContent = {sComponentName = "Transform"},
HideRoot = {sComponentName = "Transform"},
svNode = {sComponentName = "ScrollRect"},
scNode = {
sNodeName = "svNode",
sComponentName = "UIScrollToClick"
},
rtNormalCenter = {
sComponentName = "RectTransform"
},
rtKeyCenter = {
sComponentName = "RectTransform"
},
btnCloseInfo = {
nCount = 2,
sComponentName = "UIButton",
callback = "OnBtnClick_CloseInfo"
},
Info = {
sNodeName = "---Info---",
sCtrlName = "Game.UI.StarTowerGrowth.NodeInfoCtrl"
},
animInfo = {sNodeName = "---Info---", sComponentName = "Animator"},
eye_r = {},
btnQuest = {
sComponentName = "UIButton",
callback = "OnBtnClick_Quest"
},
txtBtnQuest = {
sComponentName = "TMP_Text",
sLanguageId = "STGrowth_Btn_GetMaterials"
},
btnActiveAll = {
sComponentName = "UIButton",
callback = "OnBtnClick_ActiveAll"
},
txtBtnActiveAll = {
sComponentName = "TMP_Text",
sLanguageId = "STGrowth_Btn_ActiveAll"
}
}
StarTowerGrowthCtrl._mapEventConfig = {
StarTowerGrowthNodeUnlock = "OnEvent_Unlock",
StarTowerGrowthNodeSelect = "OnEvent_Select",
SetGrowthKeyNodeEye = "OnEvent_Eye",
GuideSelectNote = "OnEvent_GuideSelectNote"
}
function StarTowerGrowthCtrl:InitData()
self.nSelectGroupIndex = nil
self.nSelectGroupId = nil
self.nSelectCloumn = nil
self.nSelectNodeId = nil
self.tbGroup = nil
self.nGroupCount = 0
self.tbNodeMap = {}
self.tbHideKeyNodeList = {}
self.tbHideNormalNodeList = {}
self.tbNodeList = {}
end
function StarTowerGrowthCtrl:BuildIdMap(nGroupId, tbNodes)
if not self.tbNodeMap[nGroupId] then
self.tbNodeMap[nGroupId] = {}
else
return
end
for _, v in pairs(tbNodes) do
local mapCfg = ConfigTable.GetData("StarTowerGrowthNode", v.nId)
if mapCfg then
local tbPos = mapCfg.Position
local nCloumn = tbPos[1]
local nIndex = tbPos[2]
if not self.tbNodeMap[nGroupId][nCloumn] then
self.tbNodeMap[nGroupId][nCloumn] = {}
self.tbNodeMap[nGroupId][nCloumn].nType = mapCfg.Type
self.tbNodeMap[nGroupId][nCloumn].tbId = {}
end
self.tbNodeMap[nGroupId][nCloumn].tbId[nIndex] = v.nId
end
end
end
function StarTowerGrowthCtrl:RefreshData()
self.tbGroup = PlayerData.StarTower:GetSortedGrowthGroup()
self.nGroupCount = #self.tbGroup
end
function StarTowerGrowthCtrl:RefreshSelect()
for k, v in ipairs(self.tbGroup) do
if v.bLock then
break
end
self.nSelectGroupIndex = k
self.nSelectGroupId = v.nId
if PlayerData.Guide:GetGuideState() then
EventManager.Hit("Guide_SendTowerGrowthSelectGroupId", self.nSelectGroupId)
end
end
end
function StarTowerGrowthCtrl:RefreshContent()
self:RefreshData()
self:RefreshSelect()
self:RefreshTab()
self:RefreshLock()
self:RefreshTip()
self:RefreshNode()
self:RefreshTopBar()
self:MoveToFirst()
end
function StarTowerGrowthCtrl:MoveToFirst()
for _, v in ipairs(self.tbNodeList) do
local goNode, nType = v:GetReadyNode()
if goNode then
local rtTarget = nType == GameEnum.towerGrowthNodeType.Core and self._mapNode.rtKeyCenter or self._mapNode.rtNormalCenter
self._mapNode.scNode:ScrollToRectTransform(goNode, rtTarget, 0.15)
EventManager.Hit(EventId.TemporaryBlockInput, 0.15)
return
end
end
end
function StarTowerGrowthCtrl:RefreshTopBar()
for i = self.nGroupCount, 1, -1 do
local tbNodes = PlayerData.StarTower:GetGrowthNodesByGroup(i)
for _, v in pairs(tbNodes) do
if v.bActive == false then
self._mapNode.TopBar:SetCoinVisible(true)
return
end
end
end
self._mapNode.TopBar:SetCoinVisible(false)
end
function StarTowerGrowthCtrl:RefreshNode()
local tbNodes = PlayerData.StarTower:GetGrowthNodesByGroup(self.nSelectGroupId)
self:BuildIdMap(self.nSelectGroupId, tbNodes)
self:ClearNodeContent()
local tbCurNodeMap = self.tbNodeMap[self.nSelectGroupId]
for nCloumn, mapData in ipairs(tbCurNodeMap) do
local bHasHide = false
local nKeyCount = #self.tbHideKeyNodeList
local nNormalCount = #self.tbHideNormalNodeList
if mapData.nType == GameEnum.towerGrowthNodeType.Core and 0 < nKeyCount then
self.tbNodeList[nCloumn] = self.tbHideKeyNodeList[nKeyCount]
table.remove(self.tbHideKeyNodeList, nKeyCount)
bHasHide = true
elseif mapData.nType == GameEnum.towerGrowthNodeType.Normal and 0 < nNormalCount then
self.tbNodeList[nCloumn] = self.tbHideNormalNodeList[nNormalCount]
table.remove(self.tbHideNormalNodeList, nNormalCount)
bHasHide = true
end
if bHasHide then
self.tbNodeList[nCloumn].gameObject.transform:SetParent(self._mapNode.NodeContent)
else
local goObj, ctrlObj
if mapData.nType == GameEnum.towerGrowthNodeType.Core then
goObj = instantiate(self._mapNode.KeyNodeList, self._mapNode.NodeContent)
ctrlObj = self:BindCtrlByNode(goObj, "Game.UI.StarTowerGrowth.KeyNodeListCtrl")
elseif mapData.nType == GameEnum.towerGrowthNodeType.Normal then
goObj = instantiate(self._mapNode.NormalNodeList, self._mapNode.NodeContent)
ctrlObj = self:BindCtrlByNode(goObj, "Game.UI.StarTowerGrowth.NormalNodeListCtrl")
end
goObj:SetActive(true)
self.tbNodeList[nCloumn] = ctrlObj
end
local mapNext = tbCurNodeMap[nCloumn + 1]
self.tbNodeList[nCloumn]:Refresh(nCloumn, tbNodes, mapData.tbId, mapNext)
self.tbNodeList[nCloumn]:ClearSelect()
end
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForSeconds(0.1))
local tmpData = PlayerData.StarTower:GetGrowthNode(10301)
if tmpData.bActive then
EventManager.Hit("Guide_PassiveCheck_Msg", "Guide_StarTowerGrowthIdActive")
end
end
cs_coroutine.start(wait)
NovaAPI.SetHorizontalNormalizedPosition(self._mapNode.svNode, 0)
end
function StarTowerGrowthCtrl:RefreshNodeCloumn(nCloumn, tbNodes, tbNodeMap)
local mapData = tbNodeMap[nCloumn]
if self.tbNodeList[nCloumn] then
local mapNext = tbNodeMap[nCloumn + 1]
self.tbNodeList[nCloumn]:Refresh(nCloumn, tbNodes, mapData.tbId, mapNext)
end
end
function StarTowerGrowthCtrl:ClearNodeContent()
if next(self.tbNodeList) == nil then
return
end
for _, ctrlNodeList in ipairs(self.tbNodeList) do
ctrlNodeList.gameObject.transform:SetParent(self._mapNode.HideRoot)
local nType = ctrlNodeList:GetType()
if nType == GameEnum.towerGrowthNodeType.Core then
table.insert(self.tbHideKeyNodeList, ctrlNodeList)
elseif nType == GameEnum.towerGrowthNodeType.Normal then
table.insert(self.tbHideNormalNodeList, ctrlNodeList)
end
end
self.tbNodeList = {}
end
function StarTowerGrowthCtrl:RefreshTip()
local mapGroup = self.tbGroup[self.nSelectGroupIndex]
self._mapNode.goTip:SetActive(mapGroup.bLock)
if mapGroup.bLock then
local nCurWorldClass = PlayerData.Base:GetWorldClass()
local mapPreGroup = self.tbGroup[mapGroup.nPreGroup]
local bPreLock = mapPreGroup.nAllNodeCount > mapPreGroup.nActiveNodeCount
local bWorldClassLock = nCurWorldClass < mapGroup.nWorldClass
local sTips = ""
if bPreLock and bWorldClassLock then
sTips = orderedFormat(ConfigTable.GetUIText("STGrowth_GropLock_Pre_WorldClass"), ConfigTable.GetData("StarTowerGrowthGroup", mapPreGroup.nId).Name, mapGroup.nWorldClass)
elseif bPreLock then
sTips = orderedFormat(ConfigTable.GetUIText("STGrowth_GropLock_Pre"), ConfigTable.GetData("StarTowerGrowthGroup", mapPreGroup.nId).Name)
elseif bWorldClassLock then
sTips = orderedFormat(ConfigTable.GetUIText("STGrowth_GropLock_WorldClass"), mapGroup.nWorldClass)
end
NovaAPI.SetTMPText(self._mapNode.txtTipLock, sTips)
end
end
function StarTowerGrowthCtrl:RefreshLock()
for i = 1, self.nGroupCount do
self._mapNode.imgLayerLock[i]:SetActive(self.tbGroup[i].bLock)
end
end
function StarTowerGrowthCtrl:RefreshTab()
for i = 1, 4 do
if i <= self.nGroupCount then
self._mapNode.tab[i].gameObject:SetActive(true)
local nState = self:GetTabState(i)
local nGroupId = self.tbGroup[i].nId
local mapCfg = ConfigTable.GetData("StarTowerGrowthGroup", nGroupId)
if mapCfg then
self._mapNode.tab[i]:SetSelect(i == self.nSelectGroupIndex, nState)
self._mapNode.tab[i]:SetText(mapCfg.Name)
end
if i == self.nSelectGroupIndex and 1 < i then
self._mapNode.tab[i - 1]:SetLine(false)
end
else
self._mapNode.tab[i].gameObject:SetActive(false)
end
end
end
function StarTowerGrowthCtrl:GetTabState(nCurTab)
local nState = 2
if nCurTab == 1 then
nState = 1
elseif nCurTab == self.nGroupCount then
nState = 3
end
return nState
end
function StarTowerGrowthCtrl:CloseInfo(callback)
if not self._mapNode.Info.gameObject.activeSelf then
return
end
if self.nSelectNodeId and self.nSelectCloumn then
self.tbNodeList[self.nSelectCloumn]:SetSelect(self.nSelectNodeId, false)
end
self.nSelectCloumn = nil
self.nSelectNodeId = nil
self._mapNode.animInfo:Play("StarTowerGrowth_Info_out")
EventManager.Hit(EventId.TemporaryBlockInput, 0.4)
self:AddTimer(1, 0.4, function()
self._mapNode.Info.gameObject:SetActive(false)
if callback then
callback()
end
end, true, true, true)
self._mapNode.btnQuest.gameObject:SetActive(true)
self._mapNode.btnActiveAll.gameObject:SetActive(true)
end
function StarTowerGrowthCtrl:OpenInfo()
self._mapNode.Info.gameObject:SetActive(true)
self._mapNode.animInfo:Play("StarTowerGrowth_Info_in")
self._mapNode.btnQuest.gameObject:SetActive(false)
self._mapNode.btnActiveAll.gameObject:SetActive(false)
end
function StarTowerGrowthCtrl:ClearCtrl()
for k, v in pairs(self.tbHideKeyNodeList) do
self:UnbindCtrlByNode(v)
self.tbHideKeyNodeList[k] = nil
end
self.tbHideKeyNodeList = {}
for k, v in pairs(self.tbHideNormalNodeList) do
self:UnbindCtrlByNode(v)
self.tbHideNormalNodeList[k] = nil
end
self.tbHideNormalNodeList = {}
for k, v in pairs(self.tbNodeList) do
self:UnbindCtrlByNode(v)
self.tbNodeList[k] = nil
end
self.tbNodeList = {}
delChildren(self._mapNode.HideRoot)
delChildren(self._mapNode.NodeContent)
end
function StarTowerGrowthCtrl:Awake()
self.animRoot = self.gameObject.transform:GetComponent("Animator")
self:InitData()
end
function StarTowerGrowthCtrl:OnEnable()
local callback = function()
self:RefreshContent()
end
PlayerData.StarTower:SendTowerGrowthDetailReq(callback)
end
function StarTowerGrowthCtrl:OnDisable()
self:ClearCtrl()
end
function StarTowerGrowthCtrl:OnDestroy()
end
function StarTowerGrowthCtrl:OnBtnClick_Tab(btn, nIndex)
if nIndex == self.nSelectGroupIndex then
return
end
self.animRoot:Play("StarTowerGrowth_switch", 0, 0)
local nState = self:GetTabState(self.nSelectGroupIndex)
self._mapNode.tab[self.nSelectGroupIndex]:SetSelect(false, nState)
if self.nSelectGroupIndex > 1 then
self._mapNode.tab[self.nSelectGroupIndex - 1]:SetLine(true)
end
nState = self:GetTabState(nIndex)
self._mapNode.tab[nIndex]:SetSelect(true, nState)
if 1 < nIndex then
self._mapNode.tab[nIndex - 1]:SetLine(false)
end
self.nSelectGroupIndex = nIndex
self.nSelectGroupId = self.tbGroup[self.nSelectGroupIndex].nId
self.nSelectCloumn = nil
self.nSelectNodeId = nil
self:RefreshTip()
self:RefreshNode()
self:CloseInfo()
end
function StarTowerGrowthCtrl:OnBtnClick_CloseInfo(btn)
self:CloseInfo()
end
function StarTowerGrowthCtrl:OnBtnClick_Quest(btn)
EventManager.Hit(EventId.OpenPanel, PanelId.StarTowerQuest)
end
function StarTowerGrowthCtrl:OnBtnClick_ActiveAll(btn)
local bAble, sTip = PlayerData.StarTower:CheckGroupReady(self.nSelectGroupId)
if not bAble then
EventManager.Hit(EventId.OpenMessageBox, sTip)
return
end
local active = function()
local callback = function(tbActiveId, bHasCore)
EventManager.Hit("Guide_SendTowerGrowthSuccess")
if bHasCore then
WwiseManger:PlaySound("ui_rogue_research_large_button")
else
WwiseManger:PlaySound("ui_rogue_research_small_button")
end
self:RefreshData()
self:RefreshTopBar()
local nPos = NovaAPI.GetHorizontalNormalizedPosition(self._mapNode.svNode)
self:RefreshNode()
NovaAPI.SetHorizontalNormalizedPosition(self._mapNode.svNode, nPos)
self:AddTimer(1, bHasCore and 0.667 or 0.5, function()
self:RefreshLock()
local mapGroup = self.tbGroup[self.nSelectGroupIndex]
if mapGroup.nAllNodeCount == mapGroup.nActiveNodeCount and self.nSelectGroupIndex < self.nGroupCount then
self:OnBtnClick_Tab(nil, self.nSelectGroupIndex + 1)
else
self:MoveToFirst()
end
end, true, true, true)
for _, v in pairs(self.tbNodeList) do
v:PlayActiveAnimFromActive(tbActiveId)
end
end
PlayerData.StarTower:SendTowerGrowthGroupNodeUnlockReq(self.nSelectGroupId, callback)
end
local msg = {
nType = AllEnum.MessageBox.Confirm,
sContent = ConfigTable.GetUIText("STGrowth_Tips_ActiveAll"),
callbackConfirm = active
}
if not PlayerData.Guide:CheckInGuideGroup(22) then
EventManager.Hit(EventId.OpenMessageBox, msg)
else
active()
end
end
function StarTowerGrowthCtrl:OnEvent_Unlock()
self:RefreshData()
self:RefreshTopBar()
local tbNodes = PlayerData.StarTower:GetGrowthNodesByGroup(self.nSelectGroupId)
local tbCurNodeMap = self.tbNodeMap[self.nSelectGroupId]
self:RefreshNodeCloumn(self.nSelectCloumn, tbNodes, tbCurNodeMap)
self:RefreshNodeCloumn(self.nSelectCloumn + 1, tbNodes, tbCurNodeMap)
local callback = function()
self:RefreshLock()
local mapGroup = self.tbGroup[self.nSelectGroupIndex]
if mapGroup.nAllNodeCount == mapGroup.nActiveNodeCount and self.nSelectGroupIndex < self.nGroupCount then
self:OnBtnClick_Tab(nil, self.nSelectGroupIndex + 1)
end
end
self.tbNodeList[self.nSelectCloumn]:PlayActiveAnim(self.nSelectNodeId, callback)
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForSeconds(0.1))
local tmpData = PlayerData.StarTower:GetGrowthNode(10301)
if tmpData.bActive then
EventManager.Hit("Guide_PassiveCheck_Msg", "Guide_StarTowerGrowthIdActive")
end
end
cs_coroutine.start(wait)
end
function StarTowerGrowthCtrl:OnEvent_Select(nId, nCloumn, goNode)
if self.nSelectNodeId == nId then
return
end
if self.nSelectNodeId and self.nSelectCloumn then
self.tbNodeList[self.nSelectCloumn]:SetSelect(self.nSelectNodeId, false)
end
self.nSelectCloumn = nCloumn
self.nSelectNodeId = nId
self.tbNodeList[nCloumn]:SetSelect(nId, true)
local tbNodes = PlayerData.StarTower:GetGrowthNodesByGroup(self.nSelectGroupId)
if self._mapNode.Info.gameObject.activeSelf then
self._mapNode.animInfo:Play("StarTowerGrowth_Info_out")
self:AddTimer(1, 0.2, function()
self._mapNode.Info:Refresh(tbNodes[nId])
self:OpenInfo()
end, true, true, true)
else
self._mapNode.Info:Refresh(tbNodes[nId])
self:OpenInfo()
end
local mapCfg = ConfigTable.GetData("StarTowerGrowthNode", nId)
if mapCfg then
local rtTarget = mapCfg.Type == GameEnum.towerGrowthNodeType.Core and self._mapNode.rtKeyCenter or self._mapNode.rtNormalCenter
self._mapNode.scNode:ScrollToRectTransform(goNode, rtTarget, 0.15)
end
end
function StarTowerGrowthCtrl:OnEvent_Eye(bOpen)
self._mapNode.eye_r:SetActive(bOpen)
end
function StarTowerGrowthCtrl:OnEvent_GuideSelectNote(nColumn, nIndex)
if self.tbNodeList[nColumn] ~= nil then
self.tbNodeList[nColumn]:Guide_SelectNode(nIndex)
end
end
return StarTowerGrowthCtrl
@@ -0,0 +1,87 @@
local StarTowerGrowthNodeCtrl = class("StarTowerGrowthNodeCtrl", BaseCtrl)
local NodeState = {
Lock = 1,
Ready = 2,
Active = 3
}
local ReadyColor = {
[GameEnum.talentSubType.MainNode] = Color(0.8901960784313725, 0.7529411764705882, 0.3137254901960784, 0.9),
[GameEnum.talentSubType.CommonNode] = Color(0.3176470588235294, 0.8274509803921568, 0.7372549019607844, 0.9),
[GameEnum.talentSubType.SupportNode] = Color(0.4823529411764706, 0.6901960784313725, 0.9098039215686274, 0.9),
Name = Color(1, 1, 1, 1)
}
local LockColor = {
[GameEnum.talentSubType.MainNode] = Color(0.4, 0.45098039215686275, 0.44313725490196076, 1),
[GameEnum.talentSubType.CommonNode] = Color(0.2980392156862745, 0.4823529411764706, 0.5450980392156862, 1),
[GameEnum.talentSubType.SupportNode] = Color(0.25098039215686274, 0.3843137254901961, 0.5215686274509804, 1),
Name = Color(0.7098039215686275, 0.7647058823529411, 0.8156862745098039, 1)
}
StarTowerGrowthNodeCtrl._mapNodeConfig = {
goReady = {nCount = 3},
imgOff = {},
imgOn = {nCount = 3},
imgFrame = {sComponentName = "Image"},
imgIcon = {sComponentName = "Image"},
txtName = {sComponentName = "TMP_Text"},
goSelect = {},
AnimRoot = {sComponentName = "Animator"},
imgComplete = {nCount = 3}
}
StarTowerGrowthNodeCtrl._mapEventConfig = {}
function StarTowerGrowthNodeCtrl:Refresh(nId, nState)
self.nId = nId
local mapCfg = ConfigTable.GetData("StarTowerGrowthNode", nId)
if not mapCfg then
return
end
NovaAPI.SetTMPText(self._mapNode.txtName, mapCfg.Name)
if nState == NodeState.Lock then
for i = 1, 3 do
self._mapNode.imgOn[i]:SetActive(false)
self._mapNode.goReady[i]:SetActive(false)
end
self._mapNode.imgOff:SetActive(true)
self._mapNode.imgFrame.gameObject:SetActive(true)
NovaAPI.SetTMPColor(self._mapNode.txtName, LockColor.Name)
NovaAPI.SetImageColor(self._mapNode.imgFrame, LockColor[1])
NovaAPI.SetImageColor(self._mapNode.imgIcon, LockColor[1])
elseif nState == NodeState.Ready then
local bAble = true
for i = 1, 3 do
self._mapNode.imgOn[i]:SetActive(false)
self._mapNode.goReady[i]:SetActive(i == 1)
local goRing = self._mapNode.goReady[i].transform:Find("3").gameObject
goRing:SetActive(bAble)
end
self._mapNode.imgOff:SetActive(true)
self._mapNode.imgFrame.gameObject:SetActive(true)
NovaAPI.SetTMPColor(self._mapNode.txtName, ReadyColor.Name)
NovaAPI.SetImageColor(self._mapNode.imgFrame, ReadyColor[1])
NovaAPI.SetImageColor(self._mapNode.imgIcon, ReadyColor[1])
elseif nState == NodeState.Active then
for i = 1, 3 do
self._mapNode.imgOn[i]:SetActive(i == 1)
self._mapNode.goReady[i]:SetActive(false)
end
self._mapNode.imgOff:SetActive(false)
self._mapNode.imgFrame.gameObject:SetActive(false)
NovaAPI.SetTMPColor(self._mapNode.txtName, ReadyColor.Name)
NovaAPI.SetImageColor(self._mapNode.imgIcon, ReadyColor.Name)
end
end
function StarTowerGrowthNodeCtrl:SetSelect(bSelect)
self._mapNode.goSelect:SetActive(bSelect)
end
function StarTowerGrowthNodeCtrl:GetId()
return self.nId
end
function StarTowerGrowthNodeCtrl:Awake()
self:SetSelect(false)
end
function StarTowerGrowthNodeCtrl:OnEnable()
end
function StarTowerGrowthNodeCtrl:OnDisable()
end
function StarTowerGrowthNodeCtrl:OnDestroy()
end
return StarTowerGrowthNodeCtrl
@@ -0,0 +1,21 @@
local StarTowerGrowthPanel = class("StarTowerGrowthPanel", BasePanel)
StarTowerGrowthPanel._bAddToBackHistory = false
StarTowerGrowthPanel._tbDefine = {
{
sPrefabPath = "StarTowerGrowth/StarTowerGrowthPanel.prefab",
sCtrlName = "Game.UI.StarTowerGrowth.StarTowerGrowthCtrl"
}
}
function StarTowerGrowthPanel:Awake()
end
function StarTowerGrowthPanel:OnEnable()
end
function StarTowerGrowthPanel:OnAfterEnter()
end
function StarTowerGrowthPanel:OnDisable()
end
function StarTowerGrowthPanel:OnDestroy()
end
function StarTowerGrowthPanel:OnRelease()
end
return StarTowerGrowthPanel