e0549005e1
EN: 1.9.0.103 CN: 1.9.0.104 JP: 1.9.0.106 KR: 1.9.0.108
139 lines
3.9 KiB
Lua
139 lines
3.9 KiB
Lua
local KeyNodeListCtrl = class("KeyNodeListCtrl", BaseCtrl)
|
|
local _, ReadyColor = ColorUtility.TryParseHtmlString("#f1f4f6")
|
|
local _, LockColor = ColorUtility.TryParseHtmlString("#657eae")
|
|
KeyNodeListCtrl._mapNodeConfig = {
|
|
goLine = {nCount = 5},
|
|
line1_ = {nCount = 2, sComponentName = "Image"},
|
|
line2_ = {nCount = 2, sComponentName = "Image"},
|
|
line3_1 = {sComponentName = "Image"},
|
|
line4_1 = {sComponentName = "Image"},
|
|
line5_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
|
|
elseif nCount == 1 and #mapNext.tbId == 1 then
|
|
nLineType = 5
|
|
end
|
|
end
|
|
for i = 1, 5 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
|
|
elseif nLineType == 5 then
|
|
local color = tbNodes[tbId[1]].bActive and ReadyColor or LockColor
|
|
NovaAPI.SetImageColor(self._mapNode.line5_1, color)
|
|
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
|