5e0d58cfad
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
182 lines
6.4 KiB
Lua
182 lines
6.4 KiB
Lua
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
|