Files
StellaSora_DataLua/lua/game/ui/soldier/selectpolicy/soldierselectpolicyctrl.lua
T
SL1900 8c4bd41668 Update - 1.13.0.124
EN: 1.13.0.124
CN: 1.13.0.124
JP: 1.13.0.128
KR: 1.13.0.130
2026-07-21 12:30:00 +09:00

124 lines
3.7 KiB
Lua

local SoldierSelectPolicyCtrl = class("SoldierSelectPolicyCtrl", BaseCtrl)
SoldierSelectPolicyCtrl._mapNodeConfig = {
trBg = {sNodeName = "----BG----"},
imgBgMain_Fx = {},
trRoot = {
sNodeName = "----SafeAreaRoot----"
},
goPolicyItem = {
nCount = 3,
sCtrlName = "Game.UI.Soldier.SelectPolicy.SoldierPolicyItemCtrl"
},
btnPolicyItem = {
nCount = 3,
sNodeName = "goPolicyItem",
sComponentName = "UIButton",
callback = "OnBtnClick_PolicyItem"
},
btnRecommend = {
sComponentName = "UIButton",
callback = "OnBtnClick_Recommend"
},
btnRefreshBuff = {
sComponentName = "UIButton",
callback = "OnBtnClick_RefreshBuff"
},
imgBtnMask = {},
txtTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Select_Policy_Title"
},
txtReRollCount = {sComponentName = "TMP_Text"},
trCharDetail = {sComponentName = "Transform"}
}
SoldierSelectPolicyCtrl._mapEventConfig = {
SoldierRecommendPanel_Close = "OnEvent_SoldierRecommendPanelClose",
SoldierRecommendPanel_Open = "OnEvent_SoldierRecommendPanelOpen"
}
SoldierSelectPolicyCtrl._mapRedDotConfig = {}
function SoldierSelectPolicyCtrl:Awake()
self.levelData = PlayerData.SoldierData:GetCurLevelData()
self.tbCardList = {}
self.nReRollCount = 0
self.nSelectCardId = -1
self.nSelectIndex = 0
end
function SoldierSelectPolicyCtrl:OnEnable()
self:RefreshContent()
end
function SoldierSelectPolicyCtrl:OnDisable()
end
function SoldierSelectPolicyCtrl:OnDestroy()
end
function SoldierSelectPolicyCtrl:ClosePanel()
EventManager.Hit(EventId.ClosePanel, PanelId.SoldierSelectPolicy)
end
function SoldierSelectPolicyCtrl:RefreshContent()
self.nSelectCardId = -1
self.nSelectIndex = 0
if self.levelData == nil then
return
end
self.tbCardList, self.nReRollCount = self.levelData:GetSelectCardData()
for k, v in ipairs(self._mapNode.goPolicyItem) do
v.gameObject:SetActive(self.tbCardList[k] ~= nil)
if self.tbCardList[k] ~= nil then
v:SetItemData(self.tbCardList[k], k)
v:SetButtonCallback(function()
self:OnBtnClick_Confirm(k)
end)
end
end
local sRemain = orderedFormat(ConfigTable.GetUIText("Soldier_Policy_ReRoll_Count"), self.nReRollCount)
NovaAPI.SetTMPText(self._mapNode.txtReRollCount, sRemain)
self._mapNode.imgBtnMask.gameObject:SetActive(0 >= self.nReRollCount)
for k, v in ipairs(self._mapNode.goPolicyItem) do
v:SetCharTipsRoot(self._mapNode.trCharDetail)
end
end
function SoldierSelectPolicyCtrl:HidePanel()
self._mapNode.trBg.gameObject:SetActive(false)
self._mapNode.imgBgMain_Fx.gameObject:SetActive(false)
self._mapNode.trRoot.gameObject:SetActive(false)
end
function SoldierSelectPolicyCtrl:ShowPanel()
self._mapNode.trBg.gameObject:SetActive(true)
self._mapNode.imgBgMain_Fx.gameObject:SetActive(true)
self._mapNode.trRoot.gameObject:SetActive(true)
for k, v in ipairs(self._mapNode.goPolicyItem) do
v:SetSelected(k == self.nSelectIndex)
end
end
function SoldierSelectPolicyCtrl:OnBtnClick_PolicyItem(btn, nIndex)
for k, v in ipairs(self._mapNode.goPolicyItem) do
v:SetSelected(k == nIndex)
end
self.nSelectCardId = self.tbCardList[nIndex]
self.nSelectIndex = nIndex
end
function SoldierSelectPolicyCtrl:OnBtnClick_RefreshBuff()
if self.nReRollCount <= 0 then
return
end
local callback = function()
self:RefreshContent()
end
self.levelData:SendCardSelectReRoll(callback)
end
function SoldierSelectPolicyCtrl:OnBtnClick_Confirm(k)
local callback = function()
self:ClosePanel()
end
self.levelData:SendCardSelect(k, callback)
end
function SoldierSelectPolicyCtrl:OnBtnClick_Recommend()
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierRecommendPanel, true)
end
function SoldierSelectPolicyCtrl:OnEvent_SoldierRecommendPanelClose()
self:ShowPanel()
end
function SoldierSelectPolicyCtrl:OnEvent_SoldierRecommendPanelOpen()
self:HidePanel()
end
return SoldierSelectPolicyCtrl