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,181 @@
|
||||
local BuildAttrPreviewCtrl = class("BuildAttrPreviewCtrl", BaseCtrl)
|
||||
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
|
||||
BuildAttrPreviewCtrl._mapNodeConfig = {
|
||||
blur = {
|
||||
sNodeName = "t_fullscreen_blur_blue"
|
||||
},
|
||||
aniBlur = {
|
||||
sNodeName = "t_fullscreen_blur_blue",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
btnCloseBg = {
|
||||
sNodeName = "snapshot",
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtnClick_Close"
|
||||
},
|
||||
txtWindowTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Build_Attribute_Title"
|
||||
},
|
||||
window = {},
|
||||
aniWindow = {sNodeName = "window", sComponentName = "Animator"},
|
||||
btnClose = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Close"
|
||||
},
|
||||
txtTip = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Build_Attribute_DescTip"
|
||||
},
|
||||
All = {sNodeName = "--All---"},
|
||||
svAll = {
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
Cur = {sNodeName = "--Cur---"},
|
||||
svCur = {
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
txtCurScoreCn = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Build_Attribute_CurScore"
|
||||
},
|
||||
imgBuildIcon = {sComponentName = "Image"},
|
||||
txtCurScore = {sComponentName = "TMP_Text"},
|
||||
ActionBar = {
|
||||
sCtrlName = "Game.UI.ActionBar.ActionBarCtrl"
|
||||
},
|
||||
btnShortcutClose = {
|
||||
sComponentName = "NaviButton",
|
||||
callback = "OnBtnClick_Close"
|
||||
}
|
||||
}
|
||||
BuildAttrPreviewCtrl._mapEventConfig = {}
|
||||
function BuildAttrPreviewCtrl:Open()
|
||||
self._mapNode.blur:SetActive(true)
|
||||
self:PlayInAni()
|
||||
self._mapNode.All:SetActive(not self.nRankId)
|
||||
self._mapNode.Cur:SetActive(self.nRankId)
|
||||
if self.nRankId then
|
||||
self:RefreshCur()
|
||||
else
|
||||
self:RefreshAll()
|
||||
end
|
||||
end
|
||||
function BuildAttrPreviewCtrl:RefreshCur()
|
||||
local mapCfg = ConfigTable.GetData("StarTowerBuildRank", self.nRankId)
|
||||
if not mapCfg then
|
||||
return
|
||||
end
|
||||
local sScore = "Icon/BuildRank/BuildRank_" .. self.nRankId
|
||||
self:SetPngSprite(self._mapNode.imgBuildIcon, sScore)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtCurScore, self.nScore)
|
||||
self.tbRank = PlayerData.Build:GetBuildRank()
|
||||
local nCount = #self.tbRank
|
||||
self._mapNode.svCur.gameObject:SetActive(0 < nCount)
|
||||
if 0 < nCount then
|
||||
self._mapNode.svCur:Init(nCount, self, self.OnGridRefresh_Cur)
|
||||
self._mapNode.svCur:SetScrollGridPos(self.nRankId - 1, 0.1, -1)
|
||||
end
|
||||
end
|
||||
function BuildAttrPreviewCtrl:OnGridRefresh_Cur(goGrid, gridIndex)
|
||||
local nIndex = gridIndex + 1
|
||||
local rtGrid = goGrid.transform:Find("btnGrid/AnimRoot")
|
||||
local imgOn = rtGrid.transform:Find("imgOnBg").gameObject
|
||||
local imgOff = rtGrid.transform:Find("imgOffBg").gameObject
|
||||
local txtDesc = rtGrid.transform:Find("txtDesc"):GetComponent("TMP_Text")
|
||||
local txtLevel = rtGrid.transform:Find("txtLevel"):GetComponent("TMP_Text")
|
||||
local txtScore = rtGrid.transform:Find("txtScore"):GetComponent("TMP_Text")
|
||||
local txtScoreCn = rtGrid.transform:Find("txtScore/imgBg/txtScoreCn"):GetComponent("TMP_Text")
|
||||
local imgSelect = rtGrid.transform:Find("imgSelect").gameObject
|
||||
local imgIcon = rtGrid.transform:Find("imgIcon"):GetComponent("Image")
|
||||
local mapData = self.tbRank[nIndex]
|
||||
local bOn = nIndex == self.nRankId
|
||||
imgSelect:SetActive(bOn)
|
||||
imgOn:SetActive(bOn)
|
||||
imgOff:SetActive(not bOn)
|
||||
NovaAPI.SetTMPText(txtLevel, orderedFormat(ConfigTable.GetUIText("Build_Attribute_Level"), mapData.Level))
|
||||
NovaAPI.SetTMPText(txtScoreCn, ConfigTable.GetUIText("Build_Score"))
|
||||
NovaAPI.SetTMPText(txtScore, mapData.MinGrade)
|
||||
NovaAPI.SetTMPText(txtDesc, UTILS.ParseParamDesc(ConfigTable.GetUIText(mapData.Desc), mapData, nil, nil, "#ec6d21"))
|
||||
local sScore = "Icon/BuildRank/BuildRank_" .. nIndex
|
||||
self:SetPngSprite(imgIcon, sScore)
|
||||
end
|
||||
function BuildAttrPreviewCtrl:RefreshAll()
|
||||
self.tbRank = PlayerData.Build:GetBuildRank()
|
||||
local nCount = #self.tbRank
|
||||
self._mapNode.svAll.gameObject:SetActive(0 < nCount)
|
||||
if 0 < nCount then
|
||||
self._mapNode.svAll:Init(nCount, self, self.OnGridRefresh_All)
|
||||
end
|
||||
end
|
||||
function BuildAttrPreviewCtrl:OnGridRefresh_All(goGrid, gridIndex)
|
||||
local nIndex = gridIndex + 1
|
||||
local rtGrid = goGrid.transform:Find("btnGrid/AnimRoot")
|
||||
local imgOn = rtGrid.transform:Find("imgOnBg").gameObject
|
||||
local imgOff = rtGrid.transform:Find("imgOffBg").gameObject
|
||||
local txtDesc = rtGrid.transform:Find("txtDesc"):GetComponent("TMP_Text")
|
||||
local txtLevel = rtGrid.transform:Find("txtLevel"):GetComponent("TMP_Text")
|
||||
local txtScore = rtGrid.transform:Find("txtScore"):GetComponent("TMP_Text")
|
||||
local txtScoreCn = rtGrid.transform:Find("txtScore/imgBg/txtScoreCn"):GetComponent("TMP_Text")
|
||||
local imgIcon = rtGrid.transform:Find("imgIcon"):GetComponent("Image")
|
||||
local mapData = self.tbRank[nIndex]
|
||||
local bOn = true
|
||||
imgOn:SetActive(bOn)
|
||||
imgOff:SetActive(not bOn)
|
||||
NovaAPI.SetTMPText(txtLevel, orderedFormat(ConfigTable.GetUIText("Build_Attribute_Level"), mapData.Level))
|
||||
NovaAPI.SetTMPText(txtScoreCn, ConfigTable.GetUIText("Build_Score"))
|
||||
NovaAPI.SetTMPText(txtScore, mapData.MinGrade)
|
||||
NovaAPI.SetTMPText(txtDesc, UTILS.ParseParamDesc(ConfigTable.GetUIText(mapData.Desc), mapData, nil, nil, "#ec6d21"))
|
||||
local sScore = "Icon/BuildRank/BuildRank_" .. nIndex
|
||||
self:SetPngSprite(imgIcon, sScore)
|
||||
end
|
||||
function BuildAttrPreviewCtrl:PlayInAni()
|
||||
self._mapNode.window:SetActive(true)
|
||||
self._mapNode.aniWindow:Play("t_window_04_t_in")
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
|
||||
end
|
||||
function BuildAttrPreviewCtrl:PlayOutAni()
|
||||
self._mapNode.aniWindow:Play("t_window_04_t_out")
|
||||
self._mapNode.aniBlur:SetTrigger("tOut")
|
||||
self:AddTimer(1, 0.2, "Close", true, true, true)
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
|
||||
end
|
||||
function BuildAttrPreviewCtrl:Close()
|
||||
self._mapNode.window:SetActive(false)
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.BuildAttrPreview)
|
||||
end
|
||||
function BuildAttrPreviewCtrl:Awake()
|
||||
self._mapNode.window:SetActive(false)
|
||||
local tbParam = self:GetPanelParam()
|
||||
if type(tbParam) == "table" then
|
||||
self.nRankId = tbParam[1]
|
||||
self.nScore = tbParam[2]
|
||||
end
|
||||
self._mapNode.btnShortcutClose.gameObject:SetActive(GamepadUIManager.GetInputState())
|
||||
if GamepadUIManager.GetInputState() then
|
||||
local tbConfig = {
|
||||
{
|
||||
sAction = "Back",
|
||||
sLang = "ActionBar_Back"
|
||||
}
|
||||
}
|
||||
self._mapNode.ActionBar:InitActionBar(tbConfig)
|
||||
end
|
||||
end
|
||||
function BuildAttrPreviewCtrl:OnEnable()
|
||||
if GamepadUIManager.GetInputState() then
|
||||
GamepadUIManager.EnableGamepadUI("BuildAttrPreviewCtrl", self:GetGamepadUINode(), nil, true)
|
||||
end
|
||||
self:Open()
|
||||
end
|
||||
function BuildAttrPreviewCtrl:OnDisable()
|
||||
if GamepadUIManager.GetInputState() then
|
||||
GamepadUIManager.DisableGamepadUI("BuildAttrPreviewCtrl")
|
||||
end
|
||||
end
|
||||
function BuildAttrPreviewCtrl:OnDestroy()
|
||||
end
|
||||
function BuildAttrPreviewCtrl:OnBtnClick_Close()
|
||||
self:PlayOutAni()
|
||||
end
|
||||
return BuildAttrPreviewCtrl
|
||||
@@ -0,0 +1,21 @@
|
||||
local BuildAttrPreviewPanel = class("BuildAttrPreviewPanel", BasePanel)
|
||||
BuildAttrPreviewPanel._bIsMainPanel = false
|
||||
BuildAttrPreviewPanel._tbDefine = {
|
||||
{
|
||||
sPrefabPath = "StarTowerBuild/BuildAttrPreviewPanel.prefab",
|
||||
sCtrlName = "Game.UI.StarTower.Build.BuildAttrPreviewCtrl"
|
||||
}
|
||||
}
|
||||
function BuildAttrPreviewPanel:Awake()
|
||||
end
|
||||
function BuildAttrPreviewPanel:OnEnable()
|
||||
end
|
||||
function BuildAttrPreviewPanel:OnAfterEnter()
|
||||
end
|
||||
function BuildAttrPreviewPanel:OnDisable()
|
||||
end
|
||||
function BuildAttrPreviewPanel:OnDestroy()
|
||||
end
|
||||
function BuildAttrPreviewPanel:OnRelease()
|
||||
end
|
||||
return BuildAttrPreviewPanel
|
||||
@@ -0,0 +1,42 @@
|
||||
local BuildDiscCtrl = class("BuildDiscCtrl", BaseCtrl)
|
||||
BuildDiscCtrl._mapNodeConfig = {
|
||||
goDiscSkill = {
|
||||
nCount = 3,
|
||||
sCtrlName = "Game.UI.StarTower.Build.BuildDiscSkillCtrl"
|
||||
},
|
||||
btnDisc = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Disc"
|
||||
},
|
||||
txtDiscName = {sComponentName = "TMP_Text"},
|
||||
imgDiscIcon = {sComponentName = "Image"}
|
||||
}
|
||||
BuildDiscCtrl._mapEventConfig = {}
|
||||
function BuildDiscCtrl:Refresh(tbDisc, nIndex)
|
||||
end
|
||||
function BuildDiscCtrl:Awake()
|
||||
end
|
||||
function BuildDiscCtrl:OnEnable()
|
||||
end
|
||||
function BuildDiscCtrl:OnDisable()
|
||||
end
|
||||
function BuildDiscCtrl:OnDestroy()
|
||||
end
|
||||
function BuildDiscCtrl:OnRelease()
|
||||
end
|
||||
function BuildDiscCtrl:OnBtnClick_Disc(btn)
|
||||
local nIdx = 0
|
||||
local nDiscId = 0
|
||||
local tbAllDisc = {}
|
||||
for nId, v in pairs(self.tbDisc) do
|
||||
nIdx = nIdx + 1
|
||||
if nIdx == self.nIndex then
|
||||
nDiscId = nId
|
||||
end
|
||||
table.insert(tbAllDisc, nId)
|
||||
end
|
||||
if nDiscId ~= 0 then
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.Disc, nDiscId, tbAllDisc)
|
||||
end
|
||||
end
|
||||
return BuildDiscCtrl
|
||||
@@ -0,0 +1,72 @@
|
||||
local BuildDiscSkillCtrl = class("BuildDiscSkillCtrl", BaseCtrl)
|
||||
BuildDiscSkillCtrl._mapNodeConfig = {
|
||||
btnDiscSkill = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Tips"
|
||||
},
|
||||
goSkillNone = {},
|
||||
imgDiscSkillIcon = {sComponentName = "Image"},
|
||||
imgDiscSkillIconBg = {nCount = 2, sComponentName = "Image"},
|
||||
txtDiscSkillLv = {sComponentName = "TMP_Text", sLanguageId = "Lv"},
|
||||
txtDiscSkillLevel = {sComponentName = "TMP_Text"},
|
||||
goSkillOff = {}
|
||||
}
|
||||
BuildDiscSkillCtrl._mapEventConfig = {}
|
||||
function BuildDiscSkillCtrl:Refresh(mapSkill, card)
|
||||
self.mapSkill = mapSkill
|
||||
self.card = card
|
||||
local bEmpty = not self.mapSkill
|
||||
self._mapNode.goSkillNone:SetActive(bEmpty)
|
||||
self._mapNode.imgDiscSkillIcon.gameObject:SetActive(not bEmpty)
|
||||
self._mapNode.imgDiscSkillIconBg[1].gameObject:SetActive(not bEmpty)
|
||||
self._mapNode.txtDiscSkillLv.gameObject:SetActive(not bEmpty)
|
||||
self._mapNode.goSkillOff:SetActive(not bEmpty)
|
||||
if bEmpty then
|
||||
return
|
||||
end
|
||||
local skillCfg
|
||||
if mapSkill.nType == AllEnum.DiscSkillType.Common then
|
||||
skillCfg = ConfigTable.GetData("DiscCommonSkill", mapSkill.nId)
|
||||
else
|
||||
skillCfg = ConfigTable.GetData("DiscPassiveSkill", mapSkill.nId)
|
||||
end
|
||||
if skillCfg == nil then
|
||||
return
|
||||
end
|
||||
for i = 1, 2 do
|
||||
self:SetPngSprite(self._mapNode.imgDiscSkillIconBg[i], skillCfg.IconBg)
|
||||
end
|
||||
self:SetPngSprite(self._mapNode.imgDiscSkillIcon, skillCfg.Icon)
|
||||
local bUnlock = mapSkill.nLevel > 0
|
||||
self._mapNode.goSkillOff:SetActive(not bUnlock)
|
||||
self._mapNode.txtDiscSkillLv.gameObject:SetActive(bUnlock)
|
||||
if bUnlock then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtDiscSkillLevel, mapSkill.nLevel)
|
||||
end
|
||||
end
|
||||
function BuildDiscSkillCtrl:Awake()
|
||||
end
|
||||
function BuildDiscSkillCtrl:OnEnable()
|
||||
end
|
||||
function BuildDiscSkillCtrl:OnDisable()
|
||||
end
|
||||
function BuildDiscSkillCtrl:OnDestroy()
|
||||
end
|
||||
function BuildDiscSkillCtrl:OnRelease()
|
||||
end
|
||||
function BuildDiscSkillCtrl:OnBtnClick_Tips(btn)
|
||||
if not self.mapSkill then
|
||||
return
|
||||
end
|
||||
local callback = function()
|
||||
local mapData = {
|
||||
nType = self.mapSkill.nType,
|
||||
nSkillId = self.mapSkill.nId,
|
||||
nLevel = self.mapSkill.nLevel,
|
||||
nMaxLevel = self.mapSkill.nMaxLevel
|
||||
}
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.DiscSkillTips, btn.transform, mapData)
|
||||
end
|
||||
EventManager.Hit("BuildClickDiscSkill", self.card, callback)
|
||||
end
|
||||
return BuildDiscSkillCtrl
|
||||
@@ -0,0 +1,17 @@
|
||||
local BuildSimpleDiscItem = class("BuildSimpleDiscItem", BaseCtrl)
|
||||
BuildSimpleDiscItem._mapNodeConfig = {
|
||||
imgIcon = {sComponentName = "Image"},
|
||||
imgRarity = {sComponentName = "Image"},
|
||||
imgElement = {sComponentName = "Image"}
|
||||
}
|
||||
BuildSimpleDiscItem._mapEventConfig = {}
|
||||
BuildSimpleDiscItem._mapRedDotConfig = {}
|
||||
function BuildSimpleDiscItem:Init(nDiscId)
|
||||
local mapData = PlayerData.Disc:GetDiscById(nDiscId)
|
||||
local mapCfg = ConfigTable.GetData_Item(nDiscId)
|
||||
self:SetPngSprite(self._mapNode.imgIcon, mapCfg.Icon .. AllEnum.OutfitIconSurfix.ListGrid)
|
||||
local sFrame = AllEnum.FrameType_New.BoardFrame .. AllEnum.BoardFrameColor[mapCfg.Rarity]
|
||||
self:SetAtlasSprite(self._mapNode.imgRarity, "12_rare", sFrame, true)
|
||||
self:SetAtlasSprite(self._mapNode.imgElement, "12_rare", AllEnum.Star_Element[mapData.nEET].icon)
|
||||
end
|
||||
return BuildSimpleDiscItem
|
||||
@@ -0,0 +1,118 @@
|
||||
local PotentialListItemCtrl = class("PotentialListItemCtrl", BaseCtrl)
|
||||
PotentialListItemCtrl._mapNodeConfig = {
|
||||
txtCharName = {sComponentName = "TMP_Text"},
|
||||
txtHas = {sComponentName = "TMP_Text"},
|
||||
txtAll = {sComponentName = "TMP_Text"},
|
||||
imgHead = {sComponentName = "Image"},
|
||||
imgHeadFrame = {sComponentName = "Image"},
|
||||
rtPotential = {
|
||||
sComponentName = "RectTransform"
|
||||
}
|
||||
}
|
||||
PotentialListItemCtrl._mapEventConfig = {}
|
||||
PotentialListItemCtrl._mapRedDotConfig = {}
|
||||
function PotentialListItemCtrl:Awake()
|
||||
self.tbItemGrid = {}
|
||||
delChildren(self._mapNode.rtPotential)
|
||||
end
|
||||
function PotentialListItemCtrl:OnDisable()
|
||||
for k, v in ipairs(self.tbItemGrid) do
|
||||
local go = v.gameObject
|
||||
self:UnbindCtrlByNode(v)
|
||||
destroy(go)
|
||||
self.tbItemGrid[k] = nil
|
||||
end
|
||||
self.tbItemGrid = {}
|
||||
end
|
||||
function PotentialListItemCtrl:GetAllPotentialCount(nCharId, bMain)
|
||||
local nAllCount = 0
|
||||
local charPotentialCfg = ConfigTable.GetData("CharPotential", nCharId)
|
||||
for _, v in ipairs(charPotentialCfg.CommonPotentialIds) do
|
||||
nAllCount = nAllCount + 1
|
||||
end
|
||||
if bMain then
|
||||
for _, v in ipairs(charPotentialCfg.MasterSpecificPotentialIds) do
|
||||
nAllCount = nAllCount + 1
|
||||
end
|
||||
for _, v in ipairs(charPotentialCfg.MasterNormalPotentialIds) do
|
||||
nAllCount = nAllCount + 1
|
||||
end
|
||||
else
|
||||
for _, v in ipairs(charPotentialCfg.AssistSpecificPotentialIds) do
|
||||
nAllCount = nAllCount + 1
|
||||
end
|
||||
for _, v in ipairs(charPotentialCfg.AssistNormalPotentialIds) do
|
||||
nAllCount = nAllCount + 1
|
||||
end
|
||||
end
|
||||
return nAllCount
|
||||
end
|
||||
function PotentialListItemCtrl:Init(nCharId, nCount, tbPotential, goPotential, bMain)
|
||||
self.nCharId = nCharId
|
||||
local charCfg = ConfigTable.GetData_Character(nCharId)
|
||||
local nCharSkinId = PlayerData.Char:GetCharSkinId(nCharId)
|
||||
local charSkinCfg = ConfigTable.GetData_CharacterSkin(nCharSkinId)
|
||||
local sFrame = AllEnum.FrameType_New.BoardFrame .. AllEnum.BoardFrameColor[charCfg.Grade]
|
||||
self:SetPngSprite(self._mapNode.imgHead, charSkinCfg.Icon .. AllEnum.CharHeadIconSurfix.XXL)
|
||||
self:SetAtlasSprite(self._mapNode.imgHeadFrame, "12_rare", sFrame, true)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtCharName, charCfg.Name)
|
||||
self.mapPotential = {}
|
||||
local nHas = 0
|
||||
local nHasAdd = 0
|
||||
local tbPotentialAdd = PlayerData.Char:GetCharEnhancedPotential(nCharId)
|
||||
for _, v in ipairs(tbPotential) do
|
||||
local nAddCount = tbPotentialAdd[v.nPotentialId] and tbPotentialAdd[v.nPotentialId] or 0
|
||||
if v.nLevel == 0 then
|
||||
nAddCount = 0
|
||||
end
|
||||
local itemCfg = ConfigTable.GetData_Item(v.nPotentialId)
|
||||
if itemCfg == nil then
|
||||
return
|
||||
end
|
||||
local nSpecial = itemCfg.Stype == GameEnum.itemStype.SpecificPotential and 1 or 0
|
||||
nHas = nHas + v.nLevel
|
||||
nHasAdd = nHasAdd + nAddCount
|
||||
table.insert(self.mapPotential, {
|
||||
nId = v.nPotentialId,
|
||||
nLevel = v.nLevel,
|
||||
nPotentialAdd = nAddCount,
|
||||
nAllLevel = v.nLevel + nAddCount,
|
||||
nSpecial = nSpecial,
|
||||
nRarity = itemCfg.Rarity
|
||||
})
|
||||
end
|
||||
table.sort(self.mapPotential, function(a, b)
|
||||
if a.nSpecial == b.nSpecial then
|
||||
if a.nRarity == b.nRarity then
|
||||
if a.nAllLevel == b.nAllLevel then
|
||||
return a.nId < b.nId
|
||||
end
|
||||
return a.nAllLevel > b.nAllLevel
|
||||
end
|
||||
return a.nRarity < b.nRarity
|
||||
end
|
||||
return a.nSpecial > b.nSpecial
|
||||
end)
|
||||
for _, v in ipairs(self.tbItemGrid) do
|
||||
v.gameObject:SetActive(false)
|
||||
end
|
||||
for k, v in ipairs(self.mapPotential) do
|
||||
if nil == self.tbItemGrid[k] then
|
||||
local objItem = instantiate(goPotential, self._mapNode.rtPotential)
|
||||
objItem.gameObject:SetActive(true)
|
||||
local itemCtrl = self:BindCtrlByNode(objItem, "Game.UI.StarTower.Depot.DepotPotentialItemCtrl")
|
||||
itemCtrl:InitItem(v.nId, v.nLevel, v.nPotentialAdd, true, true)
|
||||
table.insert(self.tbItemGrid, itemCtrl)
|
||||
else
|
||||
self.tbItemGrid[k].gameObject:SetActive(true)
|
||||
self.tbItemGrid[k]:InitItem(v.nId, v.nLevel, v.nPotentialAdd, true, true)
|
||||
end
|
||||
end
|
||||
if 0 < nHasAdd then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtHas, string.format("%s+%s", nHas, nHasAdd))
|
||||
else
|
||||
NovaAPI.SetTMPText(self._mapNode.txtHas, nHas)
|
||||
end
|
||||
self._mapNode.txtAll.gameObject:SetActive(false)
|
||||
end
|
||||
return PotentialListItemCtrl
|
||||
@@ -0,0 +1,654 @@
|
||||
local StarTowerBuildBriefCtrl = class("StarTowerBuildBriefCtrl", BaseCtrl)
|
||||
local TimerManager = require("GameCore.Timer.TimerManager")
|
||||
StarTowerBuildBriefCtrl._mapNodeConfig = {
|
||||
TopBar = {
|
||||
sNodeName = "TopBarPanel",
|
||||
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
|
||||
},
|
||||
BuildList = {
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
btn_sort_time = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_SortTime"
|
||||
},
|
||||
btn_sort_score = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_SortScore"
|
||||
},
|
||||
btn_Filter = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_OpenFilter"
|
||||
},
|
||||
btn_DeleteBuild = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_SelectDelete"
|
||||
},
|
||||
btn_SetPreference = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_SelectPreference"
|
||||
},
|
||||
txt_srot_timeTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "RoguelikeBuild_Manage_SortTime"
|
||||
},
|
||||
txt_srot_ScoreTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "RoguelikeBuild_Manage_SortScore"
|
||||
},
|
||||
txt_BuildCount = {sComponentName = "TMP_Text"},
|
||||
result1 = {
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl"
|
||||
},
|
||||
btnResult1 = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Result1"
|
||||
},
|
||||
rtResultTitle = {},
|
||||
txtBtnDelete = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_Delete"
|
||||
},
|
||||
btnPreview = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Preview"
|
||||
},
|
||||
txtBtnPreview = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Build_Btn_AttributePreview"
|
||||
},
|
||||
txt_Empty = {sComponentName = "TMP_Text"},
|
||||
EmptyContent = {},
|
||||
ExistContent = {},
|
||||
animExistContent = {
|
||||
sNodeName = "ExistContent",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
ListContent = {},
|
||||
DeleteContent = {},
|
||||
DD_selectDelect = {
|
||||
sNodeName = "tc_dropdown_01",
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateDropdownCtrl"
|
||||
},
|
||||
btn_FastSelectDelete = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_FastSelectDeleteBuild"
|
||||
},
|
||||
btn_CloseDelete = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_CloseDelete"
|
||||
},
|
||||
btn_Delete = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_OpenDeleteHint"
|
||||
},
|
||||
txt_FastSelectDelete = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "RoguelikeBuild_Manage_BtnBatchSelect"
|
||||
},
|
||||
txt_CloseDelete = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "RoguelikeBuild_Common_BtnClose"
|
||||
},
|
||||
txt_Delete = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "RoguelikeBuild_Manage_BtnDelete"
|
||||
},
|
||||
txt_SelectCountTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "RoguelikeBuild_Manage_SelectedTitle"
|
||||
},
|
||||
txt_SelectCount = {sComponentName = "TMP_Text"},
|
||||
txt_DeleteIncomeTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "RoguelikeBuild_Manage_DeleteIncomeTitle"
|
||||
},
|
||||
PreferenceContent = {},
|
||||
btn_ConfirmPreference = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_ConfitmPreference"
|
||||
},
|
||||
btn_ClosePreference = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_ClosePreference"
|
||||
},
|
||||
txt_PreferenceCountTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "RoguelikeBuild_Manage_FilterPreference"
|
||||
},
|
||||
txt_PreferenceCountTitle2 = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "RoguelikeBuild_Manage_SelectedTitle"
|
||||
},
|
||||
txt_PreferenceCount = {sComponentName = "TMP_Text"},
|
||||
txt_ClosePreference = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "RoguelikeBuild_Common_BtnClose"
|
||||
},
|
||||
txt_SetPreference = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "RoguelikeBuild_Common_BtnConfirm"
|
||||
},
|
||||
ani_DeleteContent = {
|
||||
sNodeName = "DeleteContent",
|
||||
sComponentName = "Animator"
|
||||
}
|
||||
}
|
||||
StarTowerBuildBriefCtrl._mapEventConfig = {}
|
||||
local SortType = {Time = 1, Score = 2}
|
||||
local SortOrder = {Descending = true, Ascending = false}
|
||||
local PanelState = {
|
||||
Normal = 1,
|
||||
Delete = 2,
|
||||
Preference = 3
|
||||
}
|
||||
local BtnTextColor = {
|
||||
[true] = Color(0.3288888888888889, 0.43555555555555553, 0.5422222222222223, 1),
|
||||
[false] = Color(0.7288888888888889, 0.8, 0.8711111111111111, 1)
|
||||
}
|
||||
local FilterGradeIdx = {
|
||||
btn_FilterGradeS = 3,
|
||||
btn_FilterGradeA = 2,
|
||||
btn_FilterGradeB = 1,
|
||||
btn_FilterGradeC = 0
|
||||
}
|
||||
function StarTowerBuildBriefCtrl:RefreshList()
|
||||
if #self._tbAllBuild == 0 then
|
||||
self._mapNode.ExistContent:SetActive(false)
|
||||
self._mapNode.EmptyContent:SetActive(true)
|
||||
NovaAPI.SetTMPText(self._mapNode.txt_Empty, ConfigTable.GetUIText("RoguelikeBuild_Manage_EmptyList"))
|
||||
return
|
||||
else
|
||||
self._mapNode.ExistContent:SetActive(true)
|
||||
end
|
||||
self.tbCurShow = self:FilterAndSortBuildData()
|
||||
if #self.tbCurShow == 0 then
|
||||
self._mapNode.EmptyContent:SetActive(true)
|
||||
self._mapNode.ListContent:SetActive(false)
|
||||
NovaAPI.SetTMPText(self._mapNode.txt_Empty, ConfigTable.GetUIText("RoguelikeBuild_Manage_EmptyFilter"))
|
||||
return
|
||||
else
|
||||
self._mapNode.EmptyContent:SetActive(false)
|
||||
self._mapNode.ListContent:SetActive(true)
|
||||
end
|
||||
self._mapNode.BuildList:Init(#self.tbCurShow, self, self.RefreshBuildGrid)
|
||||
NovaAPI.SetTMPText(self._mapNode.txt_BuildCount, string.format("%d/%d", #self._tbAllBuild, ConfigTable.GetConfigNumber("StarTowerBuildNumberMax")))
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:FilterAndSortBuildData()
|
||||
local ret = {}
|
||||
local filterBuild = function(mapBuild)
|
||||
if self.nPanelState == PanelState.Delete and self.mapDelete[mapBuild.nBuildId] ~= nil then
|
||||
table.insert(ret, mapBuild)
|
||||
return
|
||||
end
|
||||
if self.nPanelState == PanelState.Preference then
|
||||
local bCheckIn = self.mapPreferenceCheckIn[mapBuild.nBuildId] ~= nil
|
||||
local bCheckOut = self.mapPreferenceCheckOut[mapBuild.nBuildId] ~= nil
|
||||
if not (not mapBuild.bPreference or bCheckOut) or not mapBuild.bPreference and bCheckIn then
|
||||
table.insert(ret, mapBuild)
|
||||
return
|
||||
end
|
||||
end
|
||||
if #self.FilterGrade > 0 and 0 >= table.indexof(self.FilterGrade, mapBuild.nGrade) then
|
||||
return
|
||||
end
|
||||
if self.FiterPreference ~= self.FilterUnpreference and (not (not self.FiterPreference or mapBuild.bPreference) or self.FilterUnpreference and mapBuild.bPreference) then
|
||||
return
|
||||
end
|
||||
if self.FilterPass ~= self.FilterUnpass and (not (not self.FilterPass or mapBuild.bPass) or self.FilterUnpass and mapBuild.bPass) then
|
||||
return
|
||||
end
|
||||
table.insert(ret, mapBuild)
|
||||
end
|
||||
for _, mapBuild in ipairs(self._tbAllBuild) do
|
||||
filterBuild(mapBuild)
|
||||
end
|
||||
if self.nSortype == SortType.Time then
|
||||
local sortByTime = function(a, b)
|
||||
if self.nPanelState == PanelState.Delete then
|
||||
local bSelecta = self.mapDelete[a.nBuildId] ~= nil
|
||||
local bSelectb = self.mapDelete[b.nBuildId] ~= nil
|
||||
if bSelecta ~= bSelectb then
|
||||
return bSelecta
|
||||
end
|
||||
end
|
||||
if self.nPanelState == PanelState.Preference then
|
||||
local bCheckInA = self.mapPreferenceCheckIn[a.nBuildId] ~= nil
|
||||
local bCheckOutA = self.mapPreferenceCheckOut[a.nBuildId] ~= nil
|
||||
local bSelectA = a.bPreference and not bCheckOutA or not a.bPreference and bCheckInA
|
||||
local bCheckInB = self.mapPreferenceCheckIn[b.nBuildId] ~= nil
|
||||
local bCheckOutB = self.mapPreferenceCheckOut[b.nBuildId] ~= nil
|
||||
local bSelectB = b.bPreference and not bCheckOutB or not b.bPreference and bCheckInB
|
||||
if bSelectA ~= bSelectB then
|
||||
return bSelectA
|
||||
end
|
||||
end
|
||||
if self.nSortOrder == SortOrder.Descending then
|
||||
return a.nBuildId > b.nBuildId
|
||||
else
|
||||
return a.nBuildId < b.nBuildId
|
||||
end
|
||||
end
|
||||
table.sort(ret, sortByTime)
|
||||
else
|
||||
local sortByScore = function(a, b)
|
||||
if self.nPanelState == PanelState.Delete then
|
||||
local bSelecta = self.mapDelete[a.nBuildId] ~= nil
|
||||
local bSelectb = self.mapDelete[b.nBuildId] ~= nil
|
||||
if bSelecta ~= bSelectb then
|
||||
return bSelecta
|
||||
end
|
||||
end
|
||||
if self.nPanelState == PanelState.Preference then
|
||||
local bCheckInA = self.mapPreferenceCheckIn[a.nBuildId] ~= nil
|
||||
local bCheckOutA = self.mapPreferenceCheckOut[a.nBuildId] ~= nil
|
||||
local bSelectA = a.bPreference and not bCheckOutA or not a.bPreference and bCheckInA
|
||||
local bCheckInB = self.mapPreferenceCheckIn[b.nBuildId] ~= nil
|
||||
local bCheckOutB = self.mapPreferenceCheckOut[b.nBuildId] ~= nil
|
||||
local bSelectB = b.bPreference and not bCheckOutB or not b.bPreference and bCheckInB
|
||||
if bSelectA ~= bSelectB then
|
||||
return bSelectA
|
||||
end
|
||||
end
|
||||
if self.nSortOrder == SortOrder.Descending then
|
||||
if a.nScore ~= b.nScore then
|
||||
return a.nScore > b.nScore
|
||||
else
|
||||
return a.nBuildId > b.nBuildId
|
||||
end
|
||||
elseif a.nScore ~= b.nScore then
|
||||
return a.nScore < b.nScore
|
||||
else
|
||||
return a.nBuildId > b.nBuildId
|
||||
end
|
||||
end
|
||||
table.sort(ret, sortByScore)
|
||||
end
|
||||
return ret
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:RefreshBuildGrid(goGrid, gridIndex)
|
||||
local nIndex = gridIndex + 1
|
||||
local mapData = self.tbCurShow[nIndex]
|
||||
local bSelectDelete = self.mapDelete[mapData.nBuildId] ~= nil
|
||||
local bCheckOut = self.mapPreferenceCheckOut[mapData.nBuildId] ~= nil
|
||||
local bCheckIn = self.mapPreferenceCheckIn[mapData.nBuildId] ~= nil
|
||||
if self.mapListItemCtrl[goGrid] == nil then
|
||||
self.mapListItemCtrl[goGrid] = self:BindCtrlByNode(goGrid, "Game.UI.StarTower.Build.StarTowerBuildBriefItem")
|
||||
self.mapListItemCtrl[goGrid]:Init(self)
|
||||
end
|
||||
self.mapListItemCtrl[goGrid]:RefreshGrid(mapData, self.nPanelState, bSelectDelete, bCheckOut, bCheckIn)
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnBuildGridLock(nIdx, itemCtrl)
|
||||
local mapBuild = self.tbCurShow[nIdx]
|
||||
local callback = function()
|
||||
itemCtrl:SetLockState(mapBuild.bLock)
|
||||
if self.nPanelState == PanelState.Delete and mapBuild.bLock and self.mapDelete[mapBuild.nBuildId] ~= nil then
|
||||
self.mapDelete[mapBuild.nBuildId] = nil
|
||||
self.nSelectedDeleteCount = self.nSelectedDeleteCount - 1
|
||||
itemCtrl:SetSelectDeleteState(false)
|
||||
self:SetDeleteResult()
|
||||
end
|
||||
end
|
||||
PlayerData.Build:ChangeBuildLock(mapBuild.nBuildId, not mapBuild.bLock, callback)
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnBuildGridPreference(nIdx, itemCtrl)
|
||||
if self.nPanelState ~= PanelState.Normal then
|
||||
self:OnBtnClickGrid(nIdx, itemCtrl)
|
||||
return
|
||||
end
|
||||
local mapBuild = self.tbCurShow[nIdx]
|
||||
local tbPreferenceCheckIn = {}
|
||||
local tbPreferenceCheckOut = {}
|
||||
local callback = function()
|
||||
itemCtrl:SetPreferenceState(mapBuild.bPreference)
|
||||
end
|
||||
if mapBuild.bPreference then
|
||||
table.insert(tbPreferenceCheckOut, mapBuild.nBuildId)
|
||||
else
|
||||
table.insert(tbPreferenceCheckIn, mapBuild.nBuildId)
|
||||
end
|
||||
PlayerData.Build:SetBuildPreference(tbPreferenceCheckIn, tbPreferenceCheckOut, callback)
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnBtnClickGrid(nIdx, itemCtrl)
|
||||
local mapBuild = self.tbCurShow[nIdx]
|
||||
if self.nPanelState == PanelState.Delete then
|
||||
if mapBuild.bLock then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("BUILD_01"))
|
||||
return
|
||||
end
|
||||
local bSelectDelete = self.mapDelete[mapBuild.nBuildId] ~= nil
|
||||
if bSelectDelete then
|
||||
self.mapDelete[mapBuild.nBuildId] = nil
|
||||
self.nSelectedDeleteCount = self.nSelectedDeleteCount - 1
|
||||
itemCtrl:SetSelectDeleteState(false)
|
||||
else
|
||||
self.mapDelete[mapBuild.nBuildId] = 0
|
||||
self.nSelectedDeleteCount = self.nSelectedDeleteCount + 1
|
||||
itemCtrl:SetSelectDeleteState(true)
|
||||
end
|
||||
self:SetDeleteResult()
|
||||
elseif self.nPanelState == PanelState.Preference then
|
||||
local bCheckIn = self.mapPreferenceCheckIn[mapBuild.nBuildId] ~= nil
|
||||
local bCheckOut = self.mapPreferenceCheckOut[mapBuild.nBuildId] ~= nil
|
||||
if bCheckIn then
|
||||
self.mapPreferenceCheckIn[mapBuild.nBuildId] = nil
|
||||
itemCtrl:SetSelectPreferenceState(false)
|
||||
self.nPreferenceCount = self.nPreferenceCount - 1
|
||||
elseif bCheckOut then
|
||||
self.mapPreferenceCheckOut[mapBuild.nBuildId] = nil
|
||||
itemCtrl:SetSelectPreferenceState(true)
|
||||
self.nPreferenceCount = self.nPreferenceCount + 1
|
||||
elseif mapBuild.bPreference then
|
||||
self.mapPreferenceCheckOut[mapBuild.nBuildId] = 0
|
||||
itemCtrl:SetSelectPreferenceState(false)
|
||||
self.nPreferenceCount = self.nPreferenceCount - 1
|
||||
else
|
||||
self.mapPreferenceCheckIn[mapBuild.nBuildId] = 0
|
||||
itemCtrl:SetSelectPreferenceState(true)
|
||||
self.nPreferenceCount = self.nPreferenceCount + 1
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txt_PreferenceCount, string.format("%d/%d", self.nPreferenceCount, #self._tbAllBuild))
|
||||
else
|
||||
local callback = function(mapData)
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.StarTowerBuildDetail, mapData)
|
||||
self._panel._nFadeInType = 2
|
||||
end
|
||||
PlayerData.Build:GetBuildDetailData(callback, mapBuild.nBuildId)
|
||||
end
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:CalDeleteResult()
|
||||
local ret = 0
|
||||
local bHasRare = false
|
||||
for nBuildId, _ in pairs(self.mapDelete) do
|
||||
local mapBuild = self._mapAllBuild[nBuildId]
|
||||
if mapBuild.mapRank.Rarity == GameEnum.itemRarity.SSR then
|
||||
bHasRare = true
|
||||
end
|
||||
ret = ret + math.floor(math.min(math.max(mapBuild.nScore / tonumber(self.tbCoinRate[1]), tonumber(self.tbCoinRate[2])), tonumber(self.tbCoinRate[3])))
|
||||
end
|
||||
return ret, bHasRare
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:SetDeleteResult()
|
||||
local nCoin = self:CalDeleteResult()
|
||||
local mapCfg = ConfigTable.GetData_Item(self.nDeleteReturnId)
|
||||
if nCoin == 0 then
|
||||
self._mapNode.rtResultTitle.gameObject:SetActive(false)
|
||||
else
|
||||
self._mapNode.rtResultTitle.gameObject:SetActive(true)
|
||||
self._mapNode.result1:SetItem(self.nDeleteReturnId, nil, nCoin, nil, nil, nil, nil, true)
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txt_SelectCount, string.format("%d/%d", self.nSelectedDeleteCount, #self._tbAllBuild))
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:CalPreferenceCount()
|
||||
local ret = 0
|
||||
for _, mapBuild in ipairs(self._tbAllBuild) do
|
||||
if mapBuild.bPreference then
|
||||
ret = ret + 1
|
||||
end
|
||||
end
|
||||
return ret
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OpenConfirmHint()
|
||||
local nCoin, bHasRare = self:CalDeleteResult()
|
||||
local CheckCallback = function()
|
||||
local sTip = ""
|
||||
if bHasRare then
|
||||
sTip = ConfigTable.GetUIText("BUILD_06")
|
||||
else
|
||||
sTip = ConfigTable.GetUIText("BUILD_02")
|
||||
end
|
||||
local msg = {
|
||||
nType = AllEnum.MessageBox.Item,
|
||||
sContent = sTip,
|
||||
tbItem = {
|
||||
[1] = {
|
||||
nTid = self.nDeleteReturnId,
|
||||
nCount = nCoin,
|
||||
bFullShow = true
|
||||
}
|
||||
},
|
||||
callbackConfirm = function()
|
||||
local hasDispatchingBuild = false
|
||||
local callback = function()
|
||||
local GetDataCallback = function(tbBuildData, mapAllBuild)
|
||||
self._mapAllBuild = mapAllBuild
|
||||
self._tbAllBuild = tbBuildData
|
||||
self:RefreshList()
|
||||
if hasDispatchingBuild then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Agent_Build_Same_Cant_Delete"))
|
||||
end
|
||||
end
|
||||
self:OnBtnClick_CloseDelete()
|
||||
PlayerData.Build:GetAllBuildBriefData(GetDataCallback)
|
||||
end
|
||||
local tbDelete = {}
|
||||
for key, _ in pairs(self.mapDelete) do
|
||||
if not PlayerData.Dispatch.IsBuildDispatching(key) then
|
||||
table.insert(tbDelete, key)
|
||||
else
|
||||
hasDispatchingBuild = true
|
||||
end
|
||||
end
|
||||
if 0 < #tbDelete and not hasDispatchingBuild then
|
||||
PlayerData.Build:DeleteBuild(tbDelete, callback)
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Agent_Build_Cant_Delete"))
|
||||
end
|
||||
end
|
||||
}
|
||||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||||
end
|
||||
PlayerData.Build:CheckCoinMax(nCoin, CheckCallback)
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:InitSort()
|
||||
NovaAPI.SetTMPColor(self._mapNode.txt_srot_timeTitle, BtnTextColor[self.nSortype == SortType.Time])
|
||||
NovaAPI.SetTMPColor(self._mapNode.txt_srot_ScoreTitle, BtnTextColor[self.nSortype == SortType.Score])
|
||||
self._mapNode.btn_sort_score.transform:Find("AnimRoot/btn_AsceIcon"):GetComponent("Button").interactable = self.nSortype == SortType.Score and self.nSortOrder == SortOrder.Ascending
|
||||
self._mapNode.btn_sort_score.transform:Find("AnimRoot/btn_DescIcon"):GetComponent("Button").interactable = self.nSortype == SortType.Score and self.nSortOrder == SortOrder.Descending
|
||||
self._mapNode.btn_sort_time.transform:Find("AnimRoot/btn_AsceIcon"):GetComponent("Button").interactable = self.nSortype == SortType.Time and self.nSortOrder == SortOrder.Ascending
|
||||
self._mapNode.btn_sort_time.transform:Find("AnimRoot/btn_DescIcon"):GetComponent("Button").interactable = self.nSortype == SortType.Time and self.nSortOrder == SortOrder.Descending
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:FadeIn(bPlayFadeIn)
|
||||
if self._panel._nFadeInType == 1 then
|
||||
EventManager.Hit(EventId.SetTransition)
|
||||
self._mapNode.animExistContent:SetTrigger("tIn")
|
||||
if #self._tbAllBuild > 0 then
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.4)
|
||||
end
|
||||
end
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:Awake()
|
||||
self.nDeleteReturnId = ConfigTable.GetConfigNumber("StarTowerBuildDeleteReturnItemId")
|
||||
self._tbAllBuild = {}
|
||||
self.tbCurShow = {}
|
||||
self.mapPreferenceCheckIn = {}
|
||||
self.mapPreferenceCheckOut = {}
|
||||
self.mapDelete = {}
|
||||
self.nSelectedDeleteCount = 0
|
||||
self.FilterGrade = {}
|
||||
self.FiterPreference = false
|
||||
self.FilterUnpreference = false
|
||||
self.FilterPass = false
|
||||
self.FilterUnpass = false
|
||||
self.nSortype = SortType.Score
|
||||
self.nSortOrder = SortOrder.Descending
|
||||
self.nPanelState = PanelState.Normal
|
||||
self:InitSort()
|
||||
self.mapListItemCtrl = {}
|
||||
self.tbCoinRate = ConfigTable.GetConfigArray("StarTowerBuildTransformParas")
|
||||
local tbLanguageId = {
|
||||
"RoguelikeBuild_Manage_DD_N",
|
||||
"RoguelikeBuild_Manage_DD_R",
|
||||
"RoguelikeBuild_Manage_DD_SR",
|
||||
"RoguelikeBuild_Manage_DD_SSR"
|
||||
}
|
||||
self._mapNode.DD_selectDelect:SetList(tbLanguageId, 3)
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnEnable()
|
||||
local GetDataCallback = function(tbBuildData, mapAllBuild)
|
||||
self._mapAllBuild = mapAllBuild
|
||||
self._tbAllBuild = tbBuildData
|
||||
self:RefreshList()
|
||||
end
|
||||
PlayerData.Build:GetAllBuildBriefData(GetDataCallback)
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnDisable()
|
||||
self.mapPreferenceCheckIn = {}
|
||||
self.mapPreferenceCheckOut = {}
|
||||
self.mapDelete = {}
|
||||
self.nSelectedDeleteCount = 0
|
||||
for nInstanceId, objCtrl in pairs(self.mapListItemCtrl) do
|
||||
self:UnbindCtrlByNode(objCtrl)
|
||||
self.mapListItemCtrl[nInstanceId] = nil
|
||||
end
|
||||
self.mapListItemCtrl = {}
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnDestroy()
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnRelease()
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:FadeOut(callback)
|
||||
local Callback = function()
|
||||
if type(callback) == "function" then
|
||||
callback()
|
||||
end
|
||||
end
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.03, Callback)
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnBtnClick_Preview()
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.BuildAttrPreview)
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnBtnClick_SelectDelete()
|
||||
if self.nPanelState == PanelState.Delete then
|
||||
return
|
||||
end
|
||||
self.nPanelState = PanelState.Delete
|
||||
self.mapDelete = {}
|
||||
self.nSelectedDeleteCount = 0
|
||||
self:SetDeleteResult()
|
||||
self._mapNode.DeleteContent:SetActive(true)
|
||||
self._mapNode.animExistContent:Play("RoguelikeBuildPanel_delete_in")
|
||||
self._mapNode.BuildList:ForceRefresh()
|
||||
self._mapNode.ani_DeleteContent:Play("goDismantle_in")
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnBtnClick_CloseDelete()
|
||||
self._mapNode.ani_DeleteContent:Play("goDismantle_out")
|
||||
self._mapNode.animExistContent:Play("RoguelikeBuildPanel_delete_out")
|
||||
function Callback()
|
||||
if self._mapNode == nil then
|
||||
return
|
||||
end
|
||||
self.nPanelState = PanelState.Normal
|
||||
self.mapDelete = {}
|
||||
self.nSelectedDeleteCount = 0
|
||||
self._mapNode.DeleteContent:SetActive(false)
|
||||
self:RefreshList()
|
||||
end
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.2, Callback)
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnBtnClick_SelectPreference()
|
||||
self.nPanelState = PanelState.Preference
|
||||
self.mapPreferenceCheckIn = {}
|
||||
self.mapPreferenceCheckOut = {}
|
||||
self.nPreferenceCount = self:CalPreferenceCount()
|
||||
NovaAPI.SetTMPText(self._mapNode.txt_PreferenceCount, string.format("%d/%d", self.nPreferenceCount, #self._tbAllBuild))
|
||||
self:RefreshList()
|
||||
self._mapNode.PreferenceContent:SetActive(true)
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnBtnClick_ClosePreference()
|
||||
local Callback = function()
|
||||
if self._mapNode == nil then
|
||||
return
|
||||
end
|
||||
self.nPanelState = PanelState.Normal
|
||||
self.mapPreferenceCheckIn = {}
|
||||
self.mapPreferenceCheckOut = {}
|
||||
self.nPreferenceCount = 0
|
||||
self._mapNode.PreferenceContent:SetActive(false)
|
||||
self:RefreshList()
|
||||
end
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.2, Callback)
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnBtnClick_SortTime(btn)
|
||||
if self.nSortype == SortType.Time then
|
||||
self.nSortOrder = not self.nSortOrder
|
||||
self._mapNode.btn_sort_time.transform:Find("AnimRoot/btn_AsceIcon"):GetComponent("Button").interactable = self.nSortOrder == SortOrder.Ascending
|
||||
self._mapNode.btn_sort_time.transform:Find("AnimRoot/btn_DescIcon"):GetComponent("Button").interactable = self.nSortOrder == SortOrder.Descending
|
||||
else
|
||||
self.nSortype = SortType.Time
|
||||
self.nSortOrder = SortOrder.Descending
|
||||
self._mapNode.btn_sort_time.transform:Find("AnimRoot/btn_AsceIcon"):GetComponent("Button").interactable = false
|
||||
self._mapNode.btn_sort_time.transform:Find("AnimRoot/btn_DescIcon"):GetComponent("Button").interactable = true
|
||||
self._mapNode.btn_sort_score.transform:Find("AnimRoot/btn_AsceIcon"):GetComponent("Button").interactable = false
|
||||
self._mapNode.btn_sort_score.transform:Find("AnimRoot/btn_DescIcon"):GetComponent("Button").interactable = false
|
||||
NovaAPI.SetTMPColor(self._mapNode.txt_srot_timeTitle, BtnTextColor[self.nSortype == SortType.Time])
|
||||
NovaAPI.SetTMPColor(self._mapNode.txt_srot_ScoreTitle, BtnTextColor[self.nSortype == SortType.Score])
|
||||
end
|
||||
self:RefreshList()
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnBtnClick_SortScore(btn)
|
||||
if self.nSortype == SortType.Score then
|
||||
self.nSortOrder = not self.nSortOrder
|
||||
self._mapNode.btn_sort_score.transform:Find("AnimRoot/btn_AsceIcon"):GetComponent("Button").interactable = self.nSortOrder == SortOrder.Ascending
|
||||
self._mapNode.btn_sort_score.transform:Find("AnimRoot/btn_DescIcon"):GetComponent("Button").interactable = self.nSortOrder == SortOrder.Descending
|
||||
else
|
||||
self.nSortype = SortType.Score
|
||||
self.nSortOrder = SortOrder.Descending
|
||||
self._mapNode.btn_sort_score.transform:Find("AnimRoot/btn_AsceIcon"):GetComponent("Button").interactable = false
|
||||
self._mapNode.btn_sort_score.transform:Find("AnimRoot/btn_DescIcon"):GetComponent("Button").interactable = true
|
||||
self._mapNode.btn_sort_time.transform:Find("AnimRoot/btn_AsceIcon"):GetComponent("Button").interactable = false
|
||||
self._mapNode.btn_sort_time.transform:Find("AnimRoot/btn_DescIcon"):GetComponent("Button").interactable = false
|
||||
NovaAPI.SetTMPColor(self._mapNode.txt_srot_timeTitle, BtnTextColor[self.nSortype == SortType.Time])
|
||||
NovaAPI.SetTMPColor(self._mapNode.txt_srot_ScoreTitle, BtnTextColor[self.nSortype == SortType.Score])
|
||||
end
|
||||
self:RefreshList()
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnBtnClick_FastSelectDeleteBuild(btn)
|
||||
local filterGrade = self._mapNode.DD_selectDelect:GetValue()
|
||||
if #self.tbCurShow == 0 then
|
||||
return
|
||||
end
|
||||
for _, mapBuild in ipairs(self.tbCurShow) do
|
||||
if mapBuild.mapRank.Rarity >= 4 - filterGrade and not mapBuild.bLock and self.mapDelete[mapBuild.nBuildId] == nil then
|
||||
self.mapDelete[mapBuild.nBuildId] = 0
|
||||
self.nSelectedDeleteCount = self.nSelectedDeleteCount + 1
|
||||
end
|
||||
end
|
||||
self._mapNode.BuildList:ForceRefresh()
|
||||
self:SetDeleteResult()
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnBtnClick_ConfitmPreference(btn)
|
||||
local tbCheckIn = {}
|
||||
for key, _ in pairs(self.mapPreferenceCheckIn) do
|
||||
table.insert(tbCheckIn, key)
|
||||
end
|
||||
local tbCheckOut = {}
|
||||
for key, _ in pairs(self.mapPreferenceCheckOut) do
|
||||
table.insert(tbCheckOut, key)
|
||||
end
|
||||
if #tbCheckIn == 0 and #self.mapPreferenceCheckOut == 0 then
|
||||
self:OnBtnClick_ClosePreference()
|
||||
end
|
||||
local callback = function()
|
||||
self:OnBtnClick_ClosePreference()
|
||||
end
|
||||
PlayerData.Build:SetBuildPreference(tbCheckIn, tbCheckOut, callback)
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnBtnClick_OpenDeleteHint(btn)
|
||||
if self.nSelectedDeleteCount == 0 then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("BUILD_03"))
|
||||
return
|
||||
end
|
||||
self:OpenConfirmHint()
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnBtnClick_OpenFilter(btn)
|
||||
end
|
||||
function StarTowerBuildBriefCtrl:OnBtnClick_Result1(btn)
|
||||
local mapData = {
|
||||
nTid = self.nDeleteReturnId,
|
||||
bShowDepot = true,
|
||||
bShowJumpto = false
|
||||
}
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.ItemTips, btn.transform, mapData)
|
||||
end
|
||||
return StarTowerBuildBriefCtrl
|
||||
@@ -0,0 +1,214 @@
|
||||
local StarTowerBuildBriefItem = class("StarTowerBuildBriefItem", BaseCtrl)
|
||||
local PanelState = {
|
||||
Normal = 1,
|
||||
Delete = 2,
|
||||
Preference = 3
|
||||
}
|
||||
StarTowerBuildBriefItem._mapNodeConfig = {
|
||||
img_SelectDelete = {},
|
||||
img_SelectPreference = {},
|
||||
btn_LockIcon = {sComponentName = "Button"},
|
||||
btn_grid = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Grid"
|
||||
},
|
||||
btn_Lock = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Lock"
|
||||
},
|
||||
btn_Detail = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Detail"
|
||||
},
|
||||
btn_Preference = {
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtnClick_Preference"
|
||||
},
|
||||
imgRareFrame = {sComponentName = "Image"},
|
||||
imgRareScore = {sComponentName = "Image"},
|
||||
txtBuildName = {sComponentName = "TMP_Text"},
|
||||
imgLike = {},
|
||||
txtLeaderCn = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_Leader"
|
||||
},
|
||||
txtSubCn = {
|
||||
nCount = 2,
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_Sub"
|
||||
},
|
||||
imgCharIcon = {nCount = 3, sComponentName = "Image"},
|
||||
imgCharFrame = {nCount = 3, sComponentName = "Image"},
|
||||
txtPotentialCount = {nCount = 3, sComponentName = "TMP_Text"},
|
||||
imgCharElement = {nCount = 3, sComponentName = "Image"},
|
||||
txtChar = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_Char_Title"
|
||||
},
|
||||
txtDisc = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_MainDisc_Title"
|
||||
},
|
||||
goDiscItem = {
|
||||
nCount = 3,
|
||||
sCtrlName = "Game.UI.StarTower.Build.BuildSimpleDiscItem"
|
||||
},
|
||||
btnExport = {sComponentName = "UIButton"},
|
||||
objUnavailable = {},
|
||||
objUnavailableIcon = {sComponentName = "Image"},
|
||||
imgRareScoreMask = {sComponentName = "Image"},
|
||||
texUnavailable = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "InfinityTower_Build_NotAvailable"
|
||||
},
|
||||
imgUnavailable = {},
|
||||
imgBuildUsed = {},
|
||||
txtBuildUsed = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "JointDrill_Build_Used"
|
||||
},
|
||||
imgCharUsed = {},
|
||||
txtCharUsed = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "JointDrill_Build_Char_Used"
|
||||
}
|
||||
}
|
||||
StarTowerBuildBriefItem._mapEventConfig = {}
|
||||
function StarTowerBuildBriefItem:RefreshGrid(mapData, nPanelState, bSelectDelete, bCheckOut, bCheckIn, nType)
|
||||
self._mapData = mapData
|
||||
self._nType = nType
|
||||
self:RefreshInfo()
|
||||
self:RefreshChar()
|
||||
self:RefreshDisc()
|
||||
if nPanelState == PanelState.Delete then
|
||||
self._mapNode.img_SelectDelete:SetActive(bSelectDelete)
|
||||
self._mapNode.img_SelectPreference:SetActive(false)
|
||||
elseif nPanelState == PanelState.Preference then
|
||||
if bCheckOut then
|
||||
self._mapNode.img_SelectPreference:SetActive(false)
|
||||
elseif bCheckIn then
|
||||
self._mapNode.img_SelectPreference:SetActive(true)
|
||||
else
|
||||
self._mapNode.img_SelectPreference:SetActive(mapData.bPreference)
|
||||
end
|
||||
self._mapNode.img_SelectDelete:SetActive(false)
|
||||
else
|
||||
self._mapNode.img_SelectPreference:SetActive(false)
|
||||
self._mapNode.img_SelectDelete:SetActive(false)
|
||||
end
|
||||
self._mapNode.btnExport.gameObject:SetActive(false)
|
||||
EventManager.Hit("BuildItemExport", self._mapNode.btnExport, self._mapData.nBuildId)
|
||||
if self._nType and self._nType == AllEnum.RegionBossFormationType.InfinityTower or self._nType == AllEnum.RegionBossFormationType.Vampire or self._nType == AllEnum.RegionBossFormationType.JointDrill then
|
||||
local sScore = "Icon/BuildRank/BuildRank_" .. self._mapData.mapRank.Id
|
||||
self:SetPngSprite(self._mapNode.imgRareScoreMask, sScore)
|
||||
local bShowUnavailable = false
|
||||
if self._nType == AllEnum.RegionBossFormationType.InfinityTower or self._nType == AllEnum.RegionBossFormationType.Vampire then
|
||||
bShowUnavailable = not self._mapData.isCanUse
|
||||
else
|
||||
bShowUnavailable = self._mapData.bBuildUsed or self._mapData.bCharUsed
|
||||
end
|
||||
self._mapNode.objUnavailable:SetActive(bShowUnavailable)
|
||||
self._mapNode.imgUnavailable:SetActive(self._mapData.isCanUse)
|
||||
self._mapNode.imgBuildUsed:SetActive(self._mapData.bBuildUsed)
|
||||
self._mapNode.imgCharUsed:SetActive(self._mapData.bCharUsed and not self._mapData.bBuildUsed)
|
||||
local sKey = self._nType == AllEnum.RegionBossFormationType.InfinityTower and "InfinityTower_Build_NotAvailable" or "VampireFormation_Unable"
|
||||
NovaAPI.SetTMPText(self._mapNode.texUnavailable, ConfigTable.GetUIText(sKey))
|
||||
else
|
||||
self._mapNode.objUnavailable:SetActive(false)
|
||||
end
|
||||
end
|
||||
function StarTowerBuildBriefItem:RefreshInfo()
|
||||
local sScore = "Icon/BuildRank/BuildRank_" .. self._mapData.mapRank.Id
|
||||
local sFrame = AllEnum.FrameType_New.BuildRankDB .. AllEnum.FrameColor_New[self._mapData.mapRank.Rarity]
|
||||
self:SetPngSprite(self._mapNode.imgRareScore, sScore)
|
||||
self:SetAtlasSprite(self._mapNode.imgRareFrame, "12_rare", sFrame)
|
||||
if self._mapData.sName == "" or self._mapData.sName == nil then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtBuildName, ConfigTable.GetUIText("RoguelikeBuild_EmptyBuildName"))
|
||||
else
|
||||
NovaAPI.SetTMPText(self._mapNode.txtBuildName, self._mapData.sName)
|
||||
end
|
||||
self._mapNode.imgLike:SetActive(self._mapData.bPreference)
|
||||
self._mapNode.btn_LockIcon.interactable = self._mapData.bLock
|
||||
end
|
||||
function StarTowerBuildBriefItem:RefreshChar()
|
||||
for i = 1, 3 do
|
||||
local nCharTid = self._mapData.tbChar[i].nTid
|
||||
local nCharSkinId = PlayerData.Char:GetCharSkinId(nCharTid)
|
||||
local mapCharSkin = ConfigTable.GetData_CharacterSkin(nCharSkinId)
|
||||
local mapCharCfg = ConfigTable.GetData_Character(nCharTid)
|
||||
local sFrame = AllEnum.FrameType_New.BoardFrame .. AllEnum.BoardFrameColor[mapCharCfg.Grade]
|
||||
self:SetPngSprite(self._mapNode.imgCharIcon[i], mapCharSkin.Icon .. AllEnum.CharHeadIconSurfix.XXL)
|
||||
self:SetAtlasSprite(self._mapNode.imgCharFrame[i], "12_rare", sFrame)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPotentialCount[i], self._mapData.tbChar[i].nPotentialCount)
|
||||
self:SetAtlasSprite(self._mapNode.imgCharElement[i], "12_rare", AllEnum.Char_Element[mapCharCfg.EET].icon)
|
||||
end
|
||||
end
|
||||
function StarTowerBuildBriefItem:RefreshDisc()
|
||||
local tbDisc = self._mapData.tbDisc
|
||||
local nIndex = 1
|
||||
for _, nId in ipairs(tbDisc) do
|
||||
if nil ~= self._mapNode.goDiscItem[nIndex] and nIndex <= 3 then
|
||||
self._mapNode.goDiscItem[nIndex]:Init(nId)
|
||||
end
|
||||
nIndex = nIndex + 1
|
||||
end
|
||||
end
|
||||
function StarTowerBuildBriefItem:Init(parentCtrl)
|
||||
self._parentCtrl = parentCtrl
|
||||
end
|
||||
function StarTowerBuildBriefItem:SetLockState(bLock)
|
||||
self._mapNode.btn_LockIcon.interactable = bLock
|
||||
end
|
||||
function StarTowerBuildBriefItem:SetPreferenceState(bPreference)
|
||||
self._mapNode.imgLike:SetActive(bPreference)
|
||||
end
|
||||
function StarTowerBuildBriefItem:SetSelectDeleteState(bSelect)
|
||||
self._mapNode.img_SelectDelete:SetActive(bSelect)
|
||||
end
|
||||
function StarTowerBuildBriefItem:SetSelectPreferenceState(bSelect)
|
||||
self._mapNode.img_SelectPreference:SetActive(bSelect)
|
||||
end
|
||||
function StarTowerBuildBriefItem:Awake()
|
||||
end
|
||||
function StarTowerBuildBriefItem:OnEnable()
|
||||
end
|
||||
function StarTowerBuildBriefItem:OnDisable()
|
||||
end
|
||||
function StarTowerBuildBriefItem:OnDestroy()
|
||||
end
|
||||
function StarTowerBuildBriefItem:OnRelease()
|
||||
end
|
||||
function StarTowerBuildBriefItem:OnBtnClick_Grid(btn)
|
||||
if self._nType then
|
||||
if self._nType == AllEnum.RegionBossFormationType.InfinityTower or self._nType == AllEnum.RegionBossFormationType.Vampire then
|
||||
if not self._mapData.isCanUse then
|
||||
local sKey = self._nType == AllEnum.RegionBossFormationType.InfinityTower and "InfinityTower_Build_NotMeetingCond" or "VampireFormation_UnableTips"
|
||||
local strTips = ConfigTable.GetUIText(sKey)
|
||||
EventManager.Hit(EventId.OpenMessageBox, strTips)
|
||||
return
|
||||
end
|
||||
elseif self._nType == AllEnum.RegionBossFormationType.JointDrill and (self._mapData.bCharUsed or self._mapData.bBuildUsed) then
|
||||
local sKey = "JointDrill_Build_NotMeetingCond"
|
||||
local strTips = ConfigTable.GetUIText(sKey)
|
||||
EventManager.Hit(EventId.OpenMessageBox, strTips)
|
||||
return
|
||||
end
|
||||
end
|
||||
if self._nType and self._nType == AllEnum.RegionBossFormationType.InfinityTower or self._nType == AllEnum.RegionBossFormationType.Vampire then
|
||||
end
|
||||
local nIndex = tonumber(self.gameObject.name) + 1
|
||||
self._parentCtrl:OnBtnClickGrid(nIndex, self)
|
||||
end
|
||||
function StarTowerBuildBriefItem:OnBtnClick_Lock(btn)
|
||||
local nIndex = tonumber(self.gameObject.name) + 1
|
||||
self._parentCtrl:OnBuildGridLock(nIndex, self)
|
||||
end
|
||||
function StarTowerBuildBriefItem:OnBtnClick_Detail(btn)
|
||||
local nIndex = tonumber(self.gameObject.name) + 1
|
||||
self._parentCtrl:OnBuildGridDetail(nIndex, self)
|
||||
end
|
||||
function StarTowerBuildBriefItem:OnBtnClick_Preference(btn)
|
||||
local nIndex = tonumber(self.gameObject.name) + 1
|
||||
self._parentCtrl:OnBuildGridPreference(nIndex, self)
|
||||
end
|
||||
return StarTowerBuildBriefItem
|
||||
@@ -0,0 +1,18 @@
|
||||
local StarTowerBuildBriefPanel = class("StarTowerBuildBriefPanel", BasePanel)
|
||||
StarTowerBuildBriefPanel._tbDefine = {
|
||||
{
|
||||
sPrefabPath = "StarTowerBuild/StarTowerBuildBriefPanel.prefab",
|
||||
sCtrlName = "Game.UI.StarTower.Build.StarTowerBuildBriefCtrl"
|
||||
}
|
||||
}
|
||||
function StarTowerBuildBriefPanel:Awake()
|
||||
end
|
||||
function StarTowerBuildBriefPanel:OnEnable()
|
||||
end
|
||||
function StarTowerBuildBriefPanel:OnDisable()
|
||||
end
|
||||
function StarTowerBuildBriefPanel:OnDestroy()
|
||||
end
|
||||
function StarTowerBuildBriefPanel:OnRelease()
|
||||
end
|
||||
return StarTowerBuildBriefPanel
|
||||
@@ -0,0 +1,258 @@
|
||||
local StarTowerBuildContentCtrl = class("StarTowerBuildContentCtrl", BaseCtrl)
|
||||
StarTowerBuildContentCtrl._mapNodeConfig = {
|
||||
btnPotentialTab = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Potential"
|
||||
},
|
||||
btnDiscTab = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Disc"
|
||||
},
|
||||
txtPotential = {
|
||||
sComponentName = "TMP_Text",
|
||||
nCount = 2,
|
||||
sLanguageId = "StarTower_Build_Potential_Btn"
|
||||
},
|
||||
txtDisc = {
|
||||
sComponentName = "TMP_Text",
|
||||
nCount = 2,
|
||||
sLanguageId = "StarTower_Build_Disc_Btn"
|
||||
},
|
||||
imgOn = {nCount = 2},
|
||||
imgOff = {nCount = 2},
|
||||
svPotential = {},
|
||||
PotentialList = {
|
||||
nCount = 3,
|
||||
sCtrlName = "Game.UI.StarTower.Build.PotentialListItemCtrl"
|
||||
},
|
||||
rtPotentialContent = {
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
goEmptyPotential = {},
|
||||
goPotentialList = {},
|
||||
svDisc = {},
|
||||
txtNoteLine = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_NoteSkill_Title"
|
||||
},
|
||||
txtSkillLine = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_DiscSkill_Title"
|
||||
},
|
||||
imgNote = {nCount = 12, sComponentName = "Image"},
|
||||
txtNoteCount = {nCount = 12, sComponentName = "TMP_Text"},
|
||||
imgSkillEmpty = {},
|
||||
rtSkill = {},
|
||||
txtSkillEmpty = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_DiscSkill_Empty"
|
||||
},
|
||||
btnNoteInfo = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_NoteInfo"
|
||||
},
|
||||
btnSkill = {
|
||||
nCount = 6,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Skill"
|
||||
},
|
||||
goSkillEmpty = {nCount = 6},
|
||||
imgSkillIconBg = {nCount = 6, sComponentName = "Image"},
|
||||
imgSkillIcon = {nCount = 6, sComponentName = "Image"},
|
||||
txtSkillName = {nCount = 6, sComponentName = "TMP_Text"},
|
||||
txtSkillLevel = {nCount = 6, sComponentName = "TMP_Text"},
|
||||
txtSkillUnactive1_ = {
|
||||
nCount = 6,
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_DiscSkill_NotActivated"
|
||||
},
|
||||
txtSkillUnactive2_ = {
|
||||
nCount = 6,
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_DiscSkill_NotActivated"
|
||||
},
|
||||
imgLock1_ = {nCount = 6},
|
||||
imgLock2_ = {nCount = 6},
|
||||
PotentialDepotItem = {},
|
||||
goEmptyDisc = {},
|
||||
txt_Empty = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_Disc_Skill_Empty"
|
||||
},
|
||||
txt_EmptyPotential = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_Potential_Empty"
|
||||
},
|
||||
scPotential = {
|
||||
sNodeName = "svPotential",
|
||||
sComponentName = "UIScrollToClick"
|
||||
},
|
||||
scDisc = {
|
||||
sNodeName = "svDisc",
|
||||
sComponentName = "UIScrollToClick"
|
||||
}
|
||||
}
|
||||
StarTowerBuildContentCtrl._mapEventConfig = {
|
||||
SelectDepotPotential = "OnEvent_SelectDepotPotential"
|
||||
}
|
||||
StarTowerBuildContentCtrl._mapRedDotConfig = {}
|
||||
function StarTowerBuildContentCtrl:Refresh(mapBuild)
|
||||
self.mapBuild = mapBuild
|
||||
self:InitDisc()
|
||||
self:InitPotential()
|
||||
self:SetDefaultTab()
|
||||
end
|
||||
function StarTowerBuildContentCtrl:SetDefaultTab()
|
||||
self.nCurTab = 1
|
||||
for i = 1, 2 do
|
||||
self._mapNode.imgOn[i]:SetActive(i == self.nCurTab)
|
||||
self._mapNode.imgOff[i]:SetActive(i ~= self.nCurTab)
|
||||
end
|
||||
self._mapNode.svPotential:SetActive(self.nCurTab == 1)
|
||||
self._mapNode.svDisc:SetActive(self.nCurTab == 2)
|
||||
end
|
||||
function StarTowerBuildContentCtrl:InitPotential()
|
||||
local tbPotential = self.mapBuild.tbPotentials
|
||||
local tbChar = self.mapBuild.tbChar
|
||||
local bEmpty = true
|
||||
for k, v in ipairs(self._mapNode.PotentialList) do
|
||||
local nCount = tbChar[k].nPotentialCount
|
||||
v.gameObject:SetActive(0 < nCount)
|
||||
if 0 < nCount then
|
||||
bEmpty = false
|
||||
v:Init(tbChar[k].nTid, tbChar[k].nPotentialCount, tbPotential[tbChar[k].nTid], self._mapNode.PotentialDepotItem, k == 1)
|
||||
end
|
||||
end
|
||||
self._mapNode.goEmptyPotential.gameObject:SetActive(bEmpty)
|
||||
self._mapNode.goPotentialList.gameObject:SetActive(not bEmpty)
|
||||
end
|
||||
function StarTowerBuildContentCtrl:InitDisc()
|
||||
local mapTowerCfg = ConfigTable.GetData("StarTower", self.mapBuild.nTowerId)
|
||||
local tbNote = {}
|
||||
if mapTowerCfg ~= nil then
|
||||
local nDropGroup = mapTowerCfg.SubNoteSkillDropGroupId
|
||||
local tbNoteDrop = CacheTable.GetData("_SubNoteSkillDropGroup", nDropGroup)
|
||||
if tbNoteDrop ~= nil then
|
||||
for _, v in ipairs(tbNoteDrop) do
|
||||
table.insert(tbNote, v.SubNoteSkillId)
|
||||
end
|
||||
end
|
||||
end
|
||||
table.sort(tbNote)
|
||||
local exNote = {}
|
||||
for nNoteId, _ in pairs(self.mapBuild.tbNotes) do
|
||||
if table.indexof(tbNote, nNoteId) < 1 then
|
||||
table.insert(exNote, nNoteId)
|
||||
end
|
||||
end
|
||||
table.sort(exNote)
|
||||
for _, nNoteId in ipairs(exNote) do
|
||||
table.insert(tbNote, nNoteId)
|
||||
end
|
||||
local nNoteCount = #tbNote
|
||||
self.tbShowNote = {}
|
||||
for i = 1, 12 do
|
||||
self._mapNode.imgNote[i].gameObject:SetActive(i <= nNoteCount)
|
||||
if i <= nNoteCount then
|
||||
self.tbShowNote[tbNote[i]] = self.mapBuild.tbNotes[tbNote[i]] or 0
|
||||
NovaAPI.SetTMPText(self._mapNode.txtNoteCount[i], self.mapBuild.tbNotes[tbNote[i]] or 0)
|
||||
local mapNoteSkillCfg = ConfigTable.GetData("SubNoteSkill", tbNote[i])
|
||||
if mapNoteSkillCfg then
|
||||
self:SetPngSprite(self._mapNode.imgNote[i], mapNoteSkillCfg.Icon)
|
||||
end
|
||||
end
|
||||
end
|
||||
self.tbSkill = {}
|
||||
local tbDisc = self.mapBuild.tbDisc
|
||||
for k, nId in ipairs(tbDisc) do
|
||||
if k <= 3 then
|
||||
local mapDisc = PlayerData.Disc:GetDiscById(nId)
|
||||
local tbSubSkill = mapDisc:GetAllSubSkill(self.mapBuild.tbNotes)
|
||||
for nSkillIndex, v in ipairs(tbSubSkill) do
|
||||
table.insert(self.tbSkill, {
|
||||
nSkillId = v,
|
||||
nDiscIndex = k,
|
||||
nSkillIndex = nSkillIndex
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
local sort = function(a, b)
|
||||
if a.nDiscIndex ~= b.nDiscIndex then
|
||||
return a.nDiscIndex < b.nDiscIndex
|
||||
elseif a.nSkillIndex ~= b.nSkillIndex then
|
||||
return a.nSkillIndex < b.nSkillIndex
|
||||
end
|
||||
end
|
||||
table.sort(self.tbSkill, sort)
|
||||
local bSkillEmpty = next(self.tbSkill) == nil
|
||||
self._mapNode.rtSkill:SetActive(not bSkillEmpty)
|
||||
self._mapNode.imgSkillEmpty:SetActive(bSkillEmpty)
|
||||
if bSkillEmpty then
|
||||
return
|
||||
end
|
||||
for i = 1, 6 do
|
||||
local mapSkill = self.tbSkill[i]
|
||||
self._mapNode.btnSkill[i].gameObject:SetActive(mapSkill)
|
||||
self._mapNode.goSkillEmpty[i]:SetActive(not mapSkill)
|
||||
if mapSkill then
|
||||
local nId = mapSkill.nSkillId
|
||||
local bActive = 0 < table.indexof(self.mapBuild.tbSecondarySkill, nId)
|
||||
self._mapNode.imgLock1_[i]:SetActive(not bActive)
|
||||
self._mapNode.imgLock2_[i]:SetActive(not bActive)
|
||||
self._mapNode.txtSkillUnactive1_[i].gameObject:SetActive(not bActive)
|
||||
self._mapNode.txtSkillLevel[i].gameObject:SetActive(bActive)
|
||||
local mapCfg = ConfigTable.GetData("SecondarySkill", nId)
|
||||
if mapCfg then
|
||||
self:SetPngSprite(self._mapNode.imgSkillIcon[i], mapCfg.Icon .. AllEnum.DiscSkillIconSurfix.Small)
|
||||
self:SetPngSprite(self._mapNode.imgSkillIconBg[i], mapCfg.IconBg .. AllEnum.DiscSkillIconSurfix.Small)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtSkillName[i], mapCfg.Name)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtSkillLevel[i], orderedFormat(ConfigTable.GetUIText("Build_DiscSkill_Sub_Level"), mapCfg.Level))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
function StarTowerBuildContentCtrl:ChangeTab(nIndex)
|
||||
if self.nCurTab == nIndex then
|
||||
return
|
||||
end
|
||||
for i = 1, 2 do
|
||||
self._mapNode.imgOn[i]:SetActive(i == nIndex)
|
||||
self._mapNode.imgOff[i]:SetActive(i ~= nIndex)
|
||||
end
|
||||
self.nCurTab = nIndex
|
||||
self._mapNode.svPotential:SetActive(self.nCurTab == 1)
|
||||
self._mapNode.svDisc:SetActive(self.nCurTab == 2)
|
||||
end
|
||||
function StarTowerBuildContentCtrl:Awake()
|
||||
self._mapNode.PotentialDepotItem.gameObject:SetActive(false)
|
||||
end
|
||||
function StarTowerBuildContentCtrl:OnDisable()
|
||||
end
|
||||
function StarTowerBuildContentCtrl:OnBtnClick_Potential()
|
||||
self:ChangeTab(1)
|
||||
end
|
||||
function StarTowerBuildContentCtrl:OnBtnClick_Disc()
|
||||
self:ChangeTab(2)
|
||||
end
|
||||
function StarTowerBuildContentCtrl:OnEvent_SelectDepotPotential(nPotentialId, nLevel, nPotentialAdd, btn)
|
||||
local tip = function()
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.PotentialDetail, nPotentialId, nLevel, nPotentialAdd)
|
||||
end
|
||||
self._mapNode.scPotential:ScrollToClick(btn.gameObject, 0.1)
|
||||
self:AddTimer(1, 0.1, tip, true, true, true)
|
||||
end
|
||||
function StarTowerBuildContentCtrl:OnEvent_BuildClickDiscSkill(btn, callback)
|
||||
self._mapNode.scDisc:ScrollToClick(btn.gameObject, 0.1)
|
||||
self:AddTimer(1, 0.1, callback, true, true, true)
|
||||
end
|
||||
function StarTowerBuildContentCtrl:OnBtnClick_NoteInfo()
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.NoteSkillInfo, self.tbShowNote)
|
||||
end
|
||||
function StarTowerBuildContentCtrl:OnBtnClick_Skill(btn, nIndex)
|
||||
local mapData = {
|
||||
nSkillId = self.tbSkill[nIndex].nSkillId
|
||||
}
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.DiscSkillTips, btn.transform, mapData)
|
||||
end
|
||||
return StarTowerBuildContentCtrl
|
||||
@@ -0,0 +1,161 @@
|
||||
local StarTowerBuildDetailCtrl = class("StarTowerBuildDetailCtrl", BaseCtrl)
|
||||
StarTowerBuildDetailCtrl._mapNodeConfig = {
|
||||
TopBar = {
|
||||
sNodeName = "TopBarPanel",
|
||||
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
|
||||
},
|
||||
TMPBuildSaveTime = {sComponentName = "TMP_Text"},
|
||||
btnRename = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Rename"
|
||||
},
|
||||
btn_Preference = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Preference"
|
||||
},
|
||||
btn_PreferenceIcon = {sComponentName = "Button"},
|
||||
txtLike = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_Like"
|
||||
},
|
||||
txtBuildLock = {sComponentName = "TMP_Text"},
|
||||
btn_Lock = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Lock"
|
||||
},
|
||||
btn_LockIcon = {sComponentName = "Button"},
|
||||
btnDelete = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_DeleteBuild"
|
||||
},
|
||||
txtBuildDelete = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_Delete"
|
||||
},
|
||||
ani_root = {
|
||||
sNodeName = "----SafeAreaRoot----",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
BuildDetail = {
|
||||
sCtrlName = "Game.UI.StarTower.Build.StarTowerBuildDetailItemCtrl"
|
||||
},
|
||||
ContentList = {
|
||||
sCtrlName = "Game.UI.StarTower.Build.StarTowerBuildContentCtrl"
|
||||
}
|
||||
}
|
||||
StarTowerBuildDetailCtrl._mapEventConfig = {}
|
||||
function StarTowerBuildDetailCtrl:InitPanel()
|
||||
if not self.mapBuild.bDetail then
|
||||
print("build数据错误 无详细数据")
|
||||
return
|
||||
end
|
||||
self._mapNode.BuildDetail:Refresh(self.mapBuild)
|
||||
self._mapNode.ContentList:Refresh(self.mapBuild)
|
||||
self._mapNode.btn_PreferenceIcon.interactable = self.mapBuild.bPreference
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtLike, self.mapBuild.bPreference and Color(0.14901960784313725, 0.25882352941176473, 0.47058823529411764) or Color(0.5803921568627451, 0.6666666666666666, 0.7529411764705882))
|
||||
self._mapNode.btn_LockIcon.interactable = self.mapBuild.bLock
|
||||
NovaAPI.SetTMPText(self._mapNode.txtBuildLock, self.mapBuild.bLock and ConfigTable.GetUIText("RoguelikeBuild_Save_Lock") or ConfigTable.GetUIText("RoguelikeBuild_Save_Unlock"))
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtBuildLock, self.mapBuild.bLock and Color(0.14901960784313725, 0.25882352941176473, 0.47058823529411764) or Color(0.5803921568627451, 0.6666666666666666, 0.7529411764705882))
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPBuildSaveTime, string.format("<color=#5e89b4>保存时间:</color>%s", os.date("%Y/%m/%d %H:%M", math.floor(self.mapBuild.nBuildId / 1.0E9))))
|
||||
end
|
||||
function StarTowerBuildDetailCtrl:OpenConfirmHint()
|
||||
local nCoin = math.floor(math.min(math.max(self.mapBuild.nScore / tonumber(self.tbCoinRate[1]), tonumber(self.tbCoinRate[2])), tonumber(self.tbCoinRate[3])))
|
||||
local CheckCallback = function()
|
||||
local sTip = ""
|
||||
if self.mapBuild.mapRank.Rarity == GameEnum.itemRarity.SSR then
|
||||
sTip = ConfigTable.GetUIText("BUILD_07")
|
||||
else
|
||||
sTip = ConfigTable.GetUIText("BUILD_10")
|
||||
end
|
||||
local msg = {
|
||||
nType = AllEnum.MessageBox.Item,
|
||||
sContent = sTip,
|
||||
tbItem = {
|
||||
[1] = {
|
||||
nTid = AllEnum.CoinItemId.FRRewardCurrency,
|
||||
nCount = nCoin
|
||||
}
|
||||
},
|
||||
callbackConfirm = function()
|
||||
local hasDispatchingBuild = false
|
||||
local tbDelete = {}
|
||||
if not PlayerData.Dispatch.IsBuildDispatching(self.mapBuild.nBuildId) then
|
||||
table.insert(tbDelete, self.mapBuild.nBuildId)
|
||||
else
|
||||
hasDispatchingBuild = true
|
||||
end
|
||||
local callback = function()
|
||||
EventManager.Hit(EventId.CloesCurPanel)
|
||||
end
|
||||
if 0 < #tbDelete and not hasDispatchingBuild then
|
||||
PlayerData.Build:DeleteBuild(tbDelete, nil, callback)
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Agent_Build_Cant_Delete"))
|
||||
end
|
||||
end
|
||||
}
|
||||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||||
end
|
||||
PlayerData.Build:CheckCoinMax(nCoin, CheckCallback)
|
||||
end
|
||||
function StarTowerBuildDetailCtrl:Awake()
|
||||
self.tbCoinRate = ConfigTable.GetConfigArray("StarTowerBuildTransformParas")
|
||||
local tbParam = self:GetPanelParam()
|
||||
if type(tbParam) == "table" then
|
||||
self.mapBuild = tbParam[1]
|
||||
end
|
||||
end
|
||||
function StarTowerBuildDetailCtrl:OnEnable()
|
||||
self:InitPanel()
|
||||
end
|
||||
function StarTowerBuildDetailCtrl:OnDisable()
|
||||
end
|
||||
function StarTowerBuildDetailCtrl:OnDestroy()
|
||||
end
|
||||
function StarTowerBuildDetailCtrl:OnRelease()
|
||||
end
|
||||
function StarTowerBuildDetailCtrl:OnBtnClick_Preference(btn)
|
||||
local tbPreferenceCheckIn = {}
|
||||
local tbPreferenceCheckOut = {}
|
||||
local callback = function()
|
||||
self._mapNode.btn_PreferenceIcon.interactable = self.mapBuild.bPreference
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtLike, self.mapBuild.bPreference and Color(0.14901960784313725, 0.25882352941176473, 0.47058823529411764) or Color(0.5803921568627451, 0.6666666666666666, 0.7529411764705882))
|
||||
end
|
||||
if self.mapBuild.bPreference then
|
||||
table.insert(tbPreferenceCheckOut, self.mapBuild.nBuildId)
|
||||
else
|
||||
table.insert(tbPreferenceCheckIn, self.mapBuild.nBuildId)
|
||||
end
|
||||
PlayerData.Build:SetBuildPreference(tbPreferenceCheckIn, tbPreferenceCheckOut, callback)
|
||||
end
|
||||
function StarTowerBuildDetailCtrl:OnBtnClick_Lock(btn)
|
||||
local callback = function()
|
||||
self._mapNode.btn_LockIcon.interactable = self.mapBuild.bLock
|
||||
NovaAPI.SetTMPText(self._mapNode.txtBuildLock, self.mapBuild.bLock and ConfigTable.GetUIText("RoguelikeBuild_Save_Lock") or ConfigTable.GetUIText("RoguelikeBuild_Save_Unlock"))
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtBuildLock, self.mapBuild.bLock and Color(0.14901960784313725, 0.25882352941176473, 0.47058823529411764) or Color(0.5803921568627451, 0.6666666666666666, 0.7529411764705882))
|
||||
end
|
||||
PlayerData.Build:ChangeBuildLock(self.mapBuild.nBuildId, not self.mapBuild.bLock, callback)
|
||||
end
|
||||
function StarTowerBuildDetailCtrl:OnBtnClick_DeleteBuild(btn)
|
||||
if self.mapBuild.bLock then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("BUILD_01"))
|
||||
return
|
||||
end
|
||||
self:OpenConfirmHint()
|
||||
end
|
||||
function StarTowerBuildDetailCtrl:OnBtnClick_Rename(btn)
|
||||
local callback = function(sName)
|
||||
self._mapNode.BuildDetail:SetName(sName)
|
||||
end
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.BuildRename, self.mapBuild, callback)
|
||||
end
|
||||
function StarTowerBuildDetailCtrl:OnBtnClick_CharInfo(btn, nIndex)
|
||||
local nCharTid = self.mapBuild.tbChar[nIndex].nTid
|
||||
local tbChar = {
|
||||
self.mapBuild.tbChar[1].nTid,
|
||||
self.mapBuild.tbChar[2].nTid,
|
||||
self.mapBuild.tbChar[3].nTid
|
||||
}
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.CharBgPanel, PanelId.CharInfo, nCharTid, tbChar)
|
||||
end
|
||||
return StarTowerBuildDetailCtrl
|
||||
@@ -0,0 +1,163 @@
|
||||
local StarTowerBuildDetailItemCtrl = class("StarTowerBuildDetailItemCtrl", BaseCtrl)
|
||||
StarTowerBuildDetailItemCtrl._mapNodeConfig = {
|
||||
imgRareFrame = {sComponentName = "Image"},
|
||||
imgRareScore = {sComponentName = "Image"},
|
||||
txtScoreCn = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Build_Score"
|
||||
},
|
||||
txtScore = {sComponentName = "TMP_Text"},
|
||||
txtChar = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_Char_Title"
|
||||
},
|
||||
btnLeader = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Leader"
|
||||
},
|
||||
btnSub = {
|
||||
nCount = 2,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Sub"
|
||||
},
|
||||
imgCharIcon = {nCount = 3, sComponentName = "Image"},
|
||||
imgCharFrame = {nCount = 3, sComponentName = "Image"},
|
||||
txtPotentialCount = {nCount = 3, sComponentName = "TMP_Text"},
|
||||
txtBuildName = {sComponentName = "TMP_Text"},
|
||||
txtDisc = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_MainDisc_Title"
|
||||
},
|
||||
txtLeaderCn = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_Leader"
|
||||
},
|
||||
txtSubCn = {
|
||||
nCount = 2,
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_Sub"
|
||||
},
|
||||
imgCharElement = {nCount = 3, sComponentName = "Image"},
|
||||
btnDiscItem = {
|
||||
nCount = 3,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Disc"
|
||||
},
|
||||
goDiscItem = {
|
||||
nCount = 3,
|
||||
sCtrlName = "Game.UI.StarTower.Build.BuildSimpleDiscItem"
|
||||
},
|
||||
btnDiscDetail = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_DiscDetail"
|
||||
},
|
||||
btnAttr = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Attr"
|
||||
},
|
||||
txtAttr = {sComponentName = "TMP_Text"}
|
||||
}
|
||||
StarTowerBuildDetailItemCtrl._mapEventConfig = {}
|
||||
StarTowerBuildDetailItemCtrl._mapRedDotConfig = {}
|
||||
function StarTowerBuildDetailItemCtrl:Refresh(mapData)
|
||||
self.mapBuild = mapData
|
||||
self:RefreshInfo()
|
||||
self:RefreshChar()
|
||||
self:RefreshDisc()
|
||||
end
|
||||
function StarTowerBuildDetailItemCtrl:RefreshInfo()
|
||||
local sScore = "Icon/BuildRank/BuildRank_" .. self.mapBuild.mapRank.Id
|
||||
local sFrame = AllEnum.FrameType_New.BuildRankDB .. AllEnum.FrameColor_New[self.mapBuild.mapRank.Rarity]
|
||||
self:SetPngSprite(self._mapNode.imgRareScore, sScore)
|
||||
self:SetAtlasSprite(self._mapNode.imgRareFrame, "12_rare", sFrame)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtScore, self.mapBuild.nScore)
|
||||
if self.mapBuild.sName == "" or self.mapBuild.sName == nil then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtBuildName, ConfigTable.GetUIText("RoguelikeBuild_EmptyBuildName"))
|
||||
else
|
||||
NovaAPI.SetTMPText(self._mapNode.txtBuildName, self.mapBuild.sName)
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtAttr, UTILS.ParseParamDesc(ConfigTable.GetUIText(self.mapBuild.mapRank.Desc), self.mapBuild.mapRank))
|
||||
end
|
||||
function StarTowerBuildDetailItemCtrl:RefreshChar()
|
||||
for i = 1, 3 do
|
||||
local nCharTid = self.mapBuild.tbChar[i].nTid
|
||||
local nCharSkinId = PlayerData.Char:GetCharSkinId(nCharTid)
|
||||
local mapCharSkin = ConfigTable.GetData_CharacterSkin(nCharSkinId)
|
||||
local mapCharCfg = ConfigTable.GetData_Character(nCharTid)
|
||||
local sFrame = AllEnum.FrameType_New.BoardFrame .. AllEnum.BoardFrameColor[mapCharCfg.Grade]
|
||||
self:SetPngSprite(self._mapNode.imgCharIcon[i], mapCharSkin.Icon .. AllEnum.CharHeadIconSurfix.XXL)
|
||||
self:SetAtlasSprite(self._mapNode.imgCharFrame[i], "12_rare", sFrame, true)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtPotentialCount[i], self.mapBuild.tbChar[i].nPotentialCount)
|
||||
self:SetAtlasSprite(self._mapNode.imgCharElement[i], "12_rare", AllEnum.Char_Element[mapCharCfg.EET].icon)
|
||||
end
|
||||
end
|
||||
function StarTowerBuildDetailItemCtrl:RefreshDisc()
|
||||
local nIndex = 1
|
||||
for _, nId in ipairs(self.mapBuild.tbDisc) do
|
||||
if nil ~= self._mapNode.goDiscItem[nIndex] and nIndex <= 3 then
|
||||
self._mapNode.goDiscItem[nIndex]:Init(nId)
|
||||
end
|
||||
nIndex = nIndex + 1
|
||||
end
|
||||
end
|
||||
function StarTowerBuildDetailItemCtrl:SetName(sName)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtBuildName, sName)
|
||||
end
|
||||
function StarTowerBuildDetailItemCtrl:Awake()
|
||||
end
|
||||
function StarTowerBuildDetailItemCtrl:FadeIn()
|
||||
end
|
||||
function StarTowerBuildDetailItemCtrl:FadeOut()
|
||||
end
|
||||
function StarTowerBuildDetailItemCtrl:OnEnable()
|
||||
end
|
||||
function StarTowerBuildDetailItemCtrl:OnDisable()
|
||||
end
|
||||
function StarTowerBuildDetailItemCtrl:OnDestroy()
|
||||
end
|
||||
function StarTowerBuildDetailItemCtrl:OnRelease()
|
||||
end
|
||||
function StarTowerBuildDetailItemCtrl:OnBtnClick_Attr()
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.BuildAttrPreview, self.mapBuild.mapRank.Id, self.mapBuild.nScore)
|
||||
end
|
||||
function StarTowerBuildDetailItemCtrl:OnBtnClick_Disc(btn, nIndex)
|
||||
local nIdx = 0
|
||||
local nDiscId = 0
|
||||
local tbAllDisc = {}
|
||||
for _, nId in ipairs(self.mapBuild.tbDisc) do
|
||||
nIdx = nIdx + 1
|
||||
if nIdx == nIndex then
|
||||
nDiscId = nId
|
||||
end
|
||||
table.insert(tbAllDisc, nId)
|
||||
end
|
||||
if nDiscId ~= 0 then
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.Disc, nDiscId, tbAllDisc)
|
||||
end
|
||||
end
|
||||
function StarTowerBuildDetailItemCtrl:OnBtnClick_Leader()
|
||||
local tbCharId = {}
|
||||
for _, v in ipairs(self.mapBuild.tbChar) do
|
||||
table.insert(tbCharId, v.nTid)
|
||||
end
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.CharBgPanel, PanelId.CharInfo, tbCharId[1], tbCharId, true)
|
||||
end
|
||||
function StarTowerBuildDetailItemCtrl:OnBtnClick_Sub(btn, nIndex)
|
||||
local tbCharId = {}
|
||||
for _, v in ipairs(self.mapBuild.tbChar) do
|
||||
table.insert(tbCharId, v.nTid)
|
||||
end
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.CharBgPanel, PanelId.CharInfo, tbCharId[nIndex + 1], tbCharId, true)
|
||||
end
|
||||
function StarTowerBuildDetailItemCtrl:OnBtnClick_DiscDetail()
|
||||
local tbDisc = {}
|
||||
local mapDiscData = {}
|
||||
for i = 1, 6 do
|
||||
tbDisc[i] = self.mapBuild.tbDisc[i] or 0
|
||||
if 0 ~= tbDisc[i] then
|
||||
mapDiscData[tbDisc[i]] = PlayerData.Disc:GetDiscById(tbDisc[i])
|
||||
end
|
||||
end
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.DiscSkill, tbDisc, self.mapBuild.tbNotes, mapDiscData)
|
||||
end
|
||||
return StarTowerBuildDetailItemCtrl
|
||||
@@ -0,0 +1,18 @@
|
||||
local StarTowerBuildDetailPanel = class("StarTowerBuildDetailPanel", BasePanel)
|
||||
StarTowerBuildDetailPanel._tbDefine = {
|
||||
{
|
||||
sPrefabPath = "StarTowerBuild/StarTowerBuildDetailPanel.prefab",
|
||||
sCtrlName = "Game.UI.StarTower.Build.StarTowerBuildDetailCtrl"
|
||||
}
|
||||
}
|
||||
function StarTowerBuildDetailPanel:Awake()
|
||||
end
|
||||
function StarTowerBuildDetailPanel:OnEnable()
|
||||
end
|
||||
function StarTowerBuildDetailPanel:OnDisable()
|
||||
end
|
||||
function StarTowerBuildDetailPanel:OnDestroy()
|
||||
end
|
||||
function StarTowerBuildDetailPanel:OnRelease()
|
||||
end
|
||||
return StarTowerBuildDetailPanel
|
||||
@@ -0,0 +1,232 @@
|
||||
local StarTowerBuildSaveCtrl = class("StarTowerBuildSaveCtrl", BaseCtrl)
|
||||
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
|
||||
StarTowerBuildSaveCtrl._mapNodeConfig = {
|
||||
goBg = {sNodeName = "---BG---"},
|
||||
goblur = {
|
||||
sNodeName = "t_fullscreen_blur_black"
|
||||
},
|
||||
goBuildContent = {},
|
||||
BuildDetail = {
|
||||
sCtrlName = "Game.UI.StarTower.Build.StarTowerBuildDetailItemCtrl"
|
||||
},
|
||||
ContentList = {
|
||||
sCtrlName = "Game.UI.StarTower.Build.StarTowerBuildContentCtrl"
|
||||
},
|
||||
btnLock = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Lock"
|
||||
},
|
||||
btnPreference = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Preference"
|
||||
},
|
||||
btnSave = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Save"
|
||||
},
|
||||
btnDelete = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Delete"
|
||||
},
|
||||
btnPreferenceIcon = {sComponentName = "Button"},
|
||||
btnRename = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Rename"
|
||||
},
|
||||
btnLockIcon = {sComponentName = "Button"},
|
||||
txtBuildLock = {sComponentName = "TMP_Text"},
|
||||
txtLike = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_Like"
|
||||
},
|
||||
txtSave = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "StarTower_Build_Save"
|
||||
},
|
||||
Mask = {
|
||||
sComponentName = "CanvasGroup"
|
||||
},
|
||||
goDeleteResult = {},
|
||||
goDeleteAnim = {
|
||||
sNodeName = "goDeleteResult",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
txtWindowTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "RoguelikeBuild_Common_HintTitle"
|
||||
},
|
||||
txtDeleteTip = {sComponentName = "TMP_Text", sLanguageId = "BUILD_08"},
|
||||
imgRewardIcon = {sComponentName = "Image"},
|
||||
txtDeleteRewardCount = {sComponentName = "TMP_Text"},
|
||||
btnClose = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_DeleteResult"
|
||||
},
|
||||
btnConfirm2 = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_DeleteResult"
|
||||
},
|
||||
txtDeleteBtn = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "RoguelikeBuild_Common_BtnConfirm"
|
||||
}
|
||||
}
|
||||
StarTowerBuildSaveCtrl._mapEventConfig = {}
|
||||
StarTowerBuildSaveCtrl._mapRedDotConfig = {}
|
||||
function StarTowerBuildSaveCtrl:InitPanel()
|
||||
self._mapNode.goBuildContent:SetActive(true)
|
||||
self._mapNode.BuildDetail:Refresh(self.mapBuild)
|
||||
self._mapNode.ContentList:Refresh(self.mapBuild)
|
||||
self.bLock = self.mapBuild.bLock
|
||||
self._mapNode.btnLockIcon.interactable = self.bLock
|
||||
NovaAPI.SetTMPText(self._mapNode.txtBuildLock, self.bLock and ConfigTable.GetUIText("RoguelikeBuild_Save_Lock") or ConfigTable.GetUIText("RoguelikeBuild_Save_Unlock"))
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtBuildLock, self.bLock and Color(0.14901960784313725, 0.25882352941176473, 0.47058823529411764) or Color(0.5803921568627451, 0.6666666666666666, 0.7529411764705882))
|
||||
end
|
||||
function StarTowerBuildSaveCtrl:InitPanelDelete()
|
||||
self._mapNode.goBuildContent:SetActive(false)
|
||||
self._mapNode.goBg:SetActive(false)
|
||||
self._mapNode.goDeleteResult:SetActive(true)
|
||||
self._mapNode.goDeleteAnim:Play("t_window_04_t_in")
|
||||
NovaAPI.SetTMPText(self._mapNode.txtDeleteRewardCount, string.format("x%d", self.mapBuild))
|
||||
local nDeleteReturnId = ConfigTable.GetConfigNumber("StarTowerBuildDeleteReturnItemId")
|
||||
local mapCfg = ConfigTable.GetData_Item(nDeleteReturnId)
|
||||
if mapCfg ~= nil then
|
||||
self:SetPngSprite(self._mapNode.imgRewardIcon, mapCfg.Icon)
|
||||
end
|
||||
end
|
||||
function StarTowerBuildSaveCtrl:OpenConfirmHint()
|
||||
local nCoin = math.floor(math.min(math.max(self.mapBuild.nScore / tonumber(self.tbCoinRate[1]), tonumber(self.tbCoinRate[2])), tonumber(self.tbCoinRate[3])))
|
||||
local CheckCallback = function()
|
||||
local sTip = ""
|
||||
if self.mapBuild.mapRank.Rarity == GameEnum.itemRarity.SSR then
|
||||
sTip = ConfigTable.GetUIText("BUILD_07")
|
||||
else
|
||||
sTip = ConfigTable.GetUIText("BUILD_10")
|
||||
end
|
||||
local msg = {
|
||||
nType = AllEnum.MessageBox.Item,
|
||||
sContent = sTip,
|
||||
tbItem = {
|
||||
[1] = {
|
||||
nTid = AllEnum.CoinItemId.FRRewardCurrency,
|
||||
nCount = nCoin
|
||||
}
|
||||
},
|
||||
callbackConfirm = function()
|
||||
local callback = function(mapChangeInfo)
|
||||
UTILS.OpenReceiveByChangeInfo(mapChangeInfo, function()
|
||||
self:ClosePanel()
|
||||
end)
|
||||
end
|
||||
PlayerData.Build:SaveBuild(self.mapBuild.nBuildId, true, self.bLock, self.bPreference, self.sName, callback)
|
||||
end
|
||||
}
|
||||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||||
end
|
||||
PlayerData.Build:CheckCoinMax(nCoin, CheckCallback)
|
||||
end
|
||||
function StarTowerBuildSaveCtrl:ClosePanel()
|
||||
if NovaAPI.GetCurrentModuleName() == "MainMenuModuleScene" then
|
||||
EventManager.Hit(EventId.CloesCurPanel)
|
||||
PlayerData.Base:CheckNextDayForSweep()
|
||||
else
|
||||
PanelManager.InputEnable(nil, true)
|
||||
NovaAPI.SetCanvasGroupAlpha(self._mapNode.Mask, 0)
|
||||
self._mapNode.Mask.gameObject:SetActive(true)
|
||||
local sequence = DOTween.Sequence()
|
||||
sequence:Append(self._mapNode.Mask:DOFade(1, 0.5):SetUpdate(true))
|
||||
sequence:AppendCallback(function()
|
||||
if self.bSuccess then
|
||||
NovaAPI.EnterModule("MainMenuModuleScene", true, 17)
|
||||
else
|
||||
local function levelEndCallback()
|
||||
EventManager.Remove("ADVENTURE_LEVEL_UNLOAD_COMPLETE", self, levelEndCallback)
|
||||
NovaAPI.EnterModule("MainMenuModuleScene", true, 17)
|
||||
end
|
||||
EventManager.Add("ADVENTURE_LEVEL_UNLOAD_COMPLETE", self, levelEndCallback)
|
||||
CS.AdventureModuleHelper.LevelStateChanged(true, 0, true)
|
||||
end
|
||||
end)
|
||||
sequence:SetUpdate(true)
|
||||
end
|
||||
end
|
||||
function StarTowerBuildSaveCtrl:Awake()
|
||||
self._mapNode.goBuildContent:SetActive(false)
|
||||
if NovaAPI.GetCurrentModuleName() ~= "MainMenuModuleScene" then
|
||||
PanelManager.InputDisable()
|
||||
end
|
||||
self.tbCoinRate = ConfigTable.GetConfigArray("StarTowerBuildTransformParas")
|
||||
local tbParam = self:GetPanelParam()
|
||||
if type(tbParam) == "table" then
|
||||
self.bSuccess = tbParam[1]
|
||||
self.mapBuild = tbParam[2]
|
||||
self.bSweep = tbParam[4]
|
||||
end
|
||||
end
|
||||
function StarTowerBuildSaveCtrl:OnEnable()
|
||||
if NovaAPI.GetCurrentModuleName() ~= "MainMenuModuleScene" then
|
||||
self._mapNode.goBg:SetActive(false)
|
||||
self._mapNode.goblur:SetActive(true)
|
||||
else
|
||||
self._mapNode.goBg:SetActive(true)
|
||||
self._mapNode.goblur:SetActive(false)
|
||||
end
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
if type(self.mapBuild) == "table" then
|
||||
self:InitPanel()
|
||||
else
|
||||
self:InitPanelDelete()
|
||||
end
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
end
|
||||
function StarTowerBuildSaveCtrl:OnDisable()
|
||||
end
|
||||
function StarTowerBuildSaveCtrl:OnDestroy()
|
||||
end
|
||||
function StarTowerBuildSaveCtrl:OnRelease()
|
||||
end
|
||||
function StarTowerBuildSaveCtrl:OnBtnClick_Rename()
|
||||
local callback = function(sName)
|
||||
self._mapNode.BuildDetail:SetName(sName)
|
||||
self.sName = sName
|
||||
end
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.BuildRename, self.mapBuild, callback, true, self.sName)
|
||||
end
|
||||
function StarTowerBuildSaveCtrl:OnBtnClick_Lock()
|
||||
self.bLock = not self.bLock
|
||||
self._mapNode.btnLockIcon.interactable = self.bLock
|
||||
NovaAPI.SetTMPText(self._mapNode.txtBuildLock, self.bLock and ConfigTable.GetUIText("RoguelikeBuild_Save_Lock") or ConfigTable.GetUIText("RoguelikeBuild_Save_Unlock"))
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtBuildLock, self.bLock and Color(0.14901960784313725, 0.25882352941176473, 0.47058823529411764) or Color(0.5803921568627451, 0.6666666666666666, 0.7529411764705882))
|
||||
end
|
||||
function StarTowerBuildSaveCtrl:OnBtnClick_Preference()
|
||||
self.bPreference = not self.bPreference
|
||||
self._mapNode.btnPreferenceIcon.interactable = self.bPreference
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtLike, self.bPreference and Color(0.14901960784313725, 0.25882352941176473, 0.47058823529411764) or Color(0.5803921568627451, 0.6666666666666666, 0.7529411764705882))
|
||||
end
|
||||
function StarTowerBuildSaveCtrl:OnBtnClick_Save(btn)
|
||||
local callback = function()
|
||||
local msg = {
|
||||
nType = AllEnum.MessageBox.Alert,
|
||||
sContent = ConfigTable.GetUIText("BUILD_09"),
|
||||
callbackConfirm = function()
|
||||
self:ClosePanel()
|
||||
end
|
||||
}
|
||||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||||
end
|
||||
PlayerData.Build:SaveBuild(self.mapBuild.nBuildId, false, self.bLock, self.bPreference, self.sName, callback)
|
||||
end
|
||||
function StarTowerBuildSaveCtrl:OnBtnClick_Delete()
|
||||
if self.bLock then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Build_LockDelete"))
|
||||
return
|
||||
end
|
||||
self:OpenConfirmHint()
|
||||
end
|
||||
function StarTowerBuildSaveCtrl:OnBtnClick_DeleteResult()
|
||||
self._mapNode.goDeleteResult:SetActive(false)
|
||||
self:ClosePanel()
|
||||
end
|
||||
return StarTowerBuildSaveCtrl
|
||||
@@ -0,0 +1,17 @@
|
||||
local StarTowerBuildSavePanel = class("StarTowerBuildSavePanel", BasePanel)
|
||||
StarTowerBuildSavePanel._bAddToBackHistory = false
|
||||
StarTowerBuildSavePanel._tbDefine = {
|
||||
{
|
||||
sPrefabPath = "StarTowerBuild/StarTowerBuildSavePanel.prefab",
|
||||
sCtrlName = "Game.UI.StarTower.Build.StarTowerBuildSaveCtrl"
|
||||
}
|
||||
}
|
||||
function StarTowerBuildSavePanel:Awake()
|
||||
end
|
||||
function StarTowerBuildSavePanel:OnEnable()
|
||||
end
|
||||
function StarTowerBuildSavePanel:OnDisable()
|
||||
end
|
||||
function StarTowerBuildSavePanel:OnDestroy()
|
||||
end
|
||||
return StarTowerBuildSavePanel
|
||||
Reference in New Issue
Block a user