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:
@@ -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
|
||||
Reference in New Issue
Block a user