Files
SL1900 08b515afd9 Major Update - 2.0.0.143
EN: 2.0.0.143
CN: 2.0.0.142
JP: 2.0.0.145
KR: 2.0.0.150
2026-10-20 13:00:00 +09:00

209 lines
6.5 KiB
Lua

local SoldierBattleEventCtrl = class("SoldierBattleEventCtrl", BaseCtrl)
local SELECT_CARD_TYPE_STRATEGY = 2
SoldierBattleEventCtrl._mapNodeConfig = {
imgBgMain = {},
imgBgMain_Fx = {},
blur = {},
mainRoot = {
sNodeName = "----SafeAreaRoot----"
},
goSelectCard = {},
goSelectBattle = {},
txtTitle1 = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Select_BattleEvent_Title_1"
},
txtCardSelectTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Select_BattleEvent_Title_2"
},
txtRemainRewardCount = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_BattleEvent_RemainRewardCount"
},
txtBtnBack = {
sComponentName = "TMP_Text",
sLanguageId = "SoldierBattleEvent_Back"
},
EventItem = {
nCount = 3,
sCtrlName = "Game.UI.Soldier.BattleEvent.SoldierBattleEventItemCtrl"
},
StrategyItem = {
nCount = 3,
sCtrlName = "Game.UI.Soldier.BattleEvent.SoldierAddBuffItemCtrl"
},
btnReturn = {
sComponentName = "UIButton",
callback = "OnBtnClick_Return"
},
btnGuide = {
sComponentName = "UIButton",
callback = "OnBtnClick_Guide"
},
txtChoose = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Select_BattleEvent"
},
TopBar = {
sNodeName = "TopBarPanel"
}
}
SoldierBattleEventCtrl._mapEventConfig = {
SoldierSelectEventBattle = "OnEvent_SoldierSelectEventBattle",
SoldierShowBattleEventPanel = "OnEvent_ShowBattleEventPanel",
SoldierStrategySelect = "OnEvent_SoldierStrategySelect",
SoldierRecommendPanel_Open = "HidePanel",
SoldierRecommendPanel_Close = "ShowPanel",
SoldierHandbookPanel_Open = "HidePanel",
SoldierHandbookPanel_Close = "ShowPanel"
}
SoldierBattleEventCtrl._mapRedDotConfig = {}
function SoldierBattleEventCtrl:Awake()
self.tbStrategyCardData = nil
self.bSkipEvent = false
local tbParams = self:GetPanelParam()
if tbParams ~= nil and 0 < #tbParams then
self.bSkipEvent = tbParams[1] or false
end
end
function SoldierBattleEventCtrl:OnEnable()
if self.bSkipEvent then
self.bSkipEvent = false
self:OnSoldierEnterCardSelect()
return
end
self:RefreshBattleEventList()
end
function SoldierBattleEventCtrl:OnDisable()
self.tbStrategyCardData = nil
end
function SoldierBattleEventCtrl:GetAddBattleEventList()
local selectCardData = PlayerData.SoldierData:GetCurLevelData():GetEventBattleData()
local tbList = {}
local tbIds = selectCardData.tbIds or {}
if next(tbIds) ~= nil then
table.sort(tbIds, function(a, b)
local mapEventA = ConfigTable.GetData("SoldierEventBattlePool", a)
local mapEventB = ConfigTable.GetData("SoldierEventBattlePool", b)
return mapEventA.LevelName < mapEventB.LevelName
end)
end
for i = 1, 3 do
local nCardId = tbIds[i]
if nCardId ~= nil then
tbList[i] = {id = nCardId, index = i}
end
end
return tbList
end
function SoldierBattleEventCtrl:RefreshBattleEventList()
local tbList = self:GetAddBattleEventList()
if tbList == nil or #tbList <= 0 then
return
end
self._mapNode.goSelectBattle.gameObject:SetActive(true)
self._mapNode.goSelectCard.gameObject:SetActive(false)
for i = 1, 3 do
local item = self._mapNode.EventItem[i]
if item ~= nil then
item:SetItemData(tbList[i])
end
end
end
function SoldierBattleEventCtrl:RefreshStrategyCard()
if self.tbStrategyCardData == nil then
return
end
self._mapNode.goSelectBattle.gameObject:SetActive(false)
self._mapNode.goSelectCard.gameObject:SetActive(true)
for k, v in ipairs(self._mapNode.StrategyItem) do
local tbItem = {
id = self.tbStrategyCardData[k],
index = k
}
v:SetCharTipsRoot(v.gameObject.transform)
v:SetItemData(tbItem)
end
end
function SoldierBattleEventCtrl:OnItemSelected(nIndex, nCardId)
self._nSelectedIndex = nIndex or 0
self._nSelectedCardId = nCardId or -1
for k, v in ipairs(self._mapNode.StrategyItem) do
v:SetSelected(k == self._nSelectedIndex)
end
self:_MoveConfirmBtnTo(self._nSelectedIndex)
end
function SoldierBattleEventCtrl:_MoveConfirmBtnTo(nIndex)
local btnConfirm = self._mapNode.btnConfirm
if btnConfirm == nil or btnConfirm.transform == nil then
return
end
local item = self._mapNode.EventItem and self._mapNode.EventItem[nIndex]
if item == nil then
if btnConfirm.gameObject ~= nil then
btnConfirm.gameObject:SetActive(false)
end
return
end
local v3Pos = item:GetConfirmBtnPosition()
if v3Pos == nil then
return
end
btnConfirm.transform.position = v3Pos
if btnConfirm.gameObject ~= nil then
btnConfirm.gameObject:SetActive(true)
end
end
function SoldierBattleEventCtrl:GetSelectedCardId()
return self._nSelectedCardId
end
function SoldierBattleEventCtrl:GetSelectedIndex()
return self._nSelectedIndex
end
function SoldierBattleEventCtrl:HidePanel()
self.bPrevMainRootVisible = self._mapNode.mainRoot.gameObject.activeSelf or false
self.bPrevBlurVisible = self._mapNode.blur.gameObject.activeSelf or false
self.bPrevImgBgMainVisible = self._mapNode.imgBgMain.gameObject.activeSelf or false
self.bPrevImgBgMain_FxVisible = self._mapNode.imgBgMain_Fx.gameObject.activeSelf or false
self._mapNode.mainRoot.gameObject:SetActive(false)
self._mapNode.blur.gameObject:SetActive(false)
self._mapNode.imgBgMain.gameObject:SetActive(false)
self._mapNode.imgBgMain_Fx.gameObject:SetActive(false)
end
function SoldierBattleEventCtrl:ShowPanel()
self._mapNode.mainRoot.gameObject:SetActive(self.bPrevMainRootVisible)
self._mapNode.blur.gameObject:SetActive(self.bPrevBlurVisible)
self._mapNode.imgBgMain.gameObject:SetActive(self.bPrevImgBgMainVisible)
self._mapNode.imgBgMain_Fx.gameObject:SetActive(self.bPrevImgBgMain_FxVisible)
for k, v in ipairs(self._mapNode.StrategyItem) do
v:SetSelected(k == self._nSelectedIndex)
end
end
function SoldierBattleEventCtrl:OnBtnClick_Return()
CS.WwiseAudioManager.Instance:PostEvent("mode_900001_chess_ingame_transition")
self:HidePanel()
end
function SoldierBattleEventCtrl:OnBtnClick_Guide()
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierRecommendPanel, true)
end
function SoldierBattleEventCtrl:OnSoldierEnterCardSelect()
self.tbStrategyCardData = PlayerData.SoldierData:GetCurLevelData():GetSelectCardData()
self:RefreshStrategyCard()
end
function SoldierBattleEventCtrl:OnEvent_SoldierSelectEventBattle()
local bInSelectCard = PlayerData.SoldierData:GetCurLevelData():CheckInSelectCard()
if not bInSelectCard then
EventManager.Hit(EventId.ClosePanel, PanelId.SoldierBattleEventPanel)
else
self:OnSoldierEnterCardSelect()
end
end
function SoldierBattleEventCtrl:OnEvent_ShowBattleEventPanel()
self:ShowPanel()
end
function SoldierBattleEventCtrl:OnEvent_SoldierStrategySelect(nIndex, nCardId)
self:OnItemSelected(nIndex, nCardId)
end
return SoldierBattleEventCtrl