8c4bd41668
EN: 1.13.0.124 CN: 1.13.0.124 JP: 1.13.0.128 KR: 1.13.0.130
253 lines
8.4 KiB
Lua
253 lines
8.4 KiB
Lua
local SoldierBattleEventCtrl = class("SoldierBattleEventCtrl", BaseCtrl)
|
|
local SELECT_CARD_TYPE_STRATEGY = 2
|
|
SoldierBattleEventCtrl._mapNodeConfig = {
|
|
imgBgMain = {},
|
|
imgBgMain_Fx = {},
|
|
blur = {},
|
|
mainRoot = {
|
|
sNodeName = "----SafeAreaRoot----"
|
|
},
|
|
txtLabel = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "SoldierBattleEvent_Label"
|
|
},
|
|
txtRemainRewardCount = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Soldier_BattleEvent_RemainRewardCount"
|
|
},
|
|
txtFinalPoint = {sComponentName = "TMP_Text"},
|
|
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"
|
|
},
|
|
btnPolicy = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Policy"
|
|
},
|
|
btnReturn = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Return"
|
|
},
|
|
btnGuide = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Guide"
|
|
},
|
|
btnGoToDice = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_btnGoToDice"
|
|
},
|
|
txtGoToDice = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "SoldierBattleEvent_GoToDice"
|
|
},
|
|
imgFinalPoint = {},
|
|
ImgNum = {},
|
|
EventContainers = {},
|
|
StrategyContainers = {}
|
|
}
|
|
SoldierBattleEventCtrl._mapEventConfig = {
|
|
SoldierSelectEventBattle = "OnEvent_SoldierSelectEventBattle",
|
|
SoldierShowBattleEventPanel = "OnEvent_ShowBattleEventPanel",
|
|
SoldierDiceCasted = "RefreshDiceCasted",
|
|
SoldierStrategySelect = "OnEvent_SoldierStrategySelect",
|
|
SoldierRecommendPanel_Open = "HidePanel",
|
|
SoldierRecommendPanel_Close = "ShowPanel",
|
|
SoldierHandbookPanel_Open = "HidePanel",
|
|
SoldierHandbookPanel_Close = "ShowPanel"
|
|
}
|
|
SoldierBattleEventCtrl._mapRedDotConfig = {}
|
|
function SoldierBattleEventCtrl:Awake()
|
|
self.tbStrategyCardData = nil
|
|
self.nDicePoint = 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()
|
|
self._mapNode.imgFinalPoint.gameObject:SetActive(false)
|
|
self._mapNode.btnGoToDice.gameObject:SetActive(false)
|
|
if self.bSkipEvent then
|
|
self.bSkipEvent = false
|
|
self:OnSoldierEnterCardSelect()
|
|
return
|
|
end
|
|
self:RefreshBattleEventList()
|
|
self.nDicePoint = PlayerData.SoldierData:GetCurLevelData():GetEventBattleData().nPoint or 0
|
|
if self.tbStrategyCardData == nil and self.nDicePoint ~= nil and self.nDicePoint > 0 then
|
|
self:RefreshEventDicePoint()
|
|
end
|
|
end
|
|
function SoldierBattleEventCtrl:OnDisable()
|
|
self.tbStrategyCardData = nil
|
|
self.nDicePoint = 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.btnGoToDice.gameObject:SetActive(true)
|
|
self._mapNode.EventContainers.gameObject:SetActive(true)
|
|
self._mapNode.StrategyContainers.gameObject:SetActive(false)
|
|
self._mapNode.btnPolicy.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.EventContainers.gameObject:SetActive(false)
|
|
self._mapNode.StrategyContainers.gameObject:SetActive(true)
|
|
self._mapNode.btnGoToDice.gameObject:SetActive(false)
|
|
self._mapNode.imgFinalPoint.gameObject:SetActive(false)
|
|
self._mapNode.btnPolicy.gameObject:SetActive(false)
|
|
self._mapNode.ImgNum.gameObject:SetActive(false)
|
|
NovaAPI.SetTMPText(self._mapNode.txtLabel, ConfigTable.GetUIText("Soldier_Strategy_Title"))
|
|
for k, v in ipairs(self._mapNode.StrategyItem) do
|
|
local tbItem = {
|
|
id = self.tbStrategyCardData[k],
|
|
index = k
|
|
}
|
|
v:SetItemData(tbItem)
|
|
end
|
|
end
|
|
function SoldierBattleEventCtrl:RefreshDiceCasted()
|
|
self:RefreshBattleEventList()
|
|
self.nDicePoint = PlayerData.SoldierData:GetCurLevelData():GetEventBattleData().nPoint or 0
|
|
if self.tbStrategyCardData == nil and self.nDicePoint ~= nil and self.nDicePoint > 0 then
|
|
self:RefreshEventDicePoint()
|
|
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_btnGoToDice()
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierResolveadisputePanel)
|
|
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:OnBtnClick_Policy()
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierHandbookPanel, AllEnum.SoldierHandbookType.StrategyCard)
|
|
end
|
|
function SoldierBattleEventCtrl:RefreshEventDicePoint()
|
|
self._mapNode.imgFinalPoint.gameObject:SetActive(true)
|
|
self._mapNode.btnGoToDice.gameObject:SetActive(false)
|
|
local sFinalPoint = ConfigTable.GetUIText("SoldierBattleEvent_FinalPoint")
|
|
NovaAPI.SetTMPText(self._mapNode.txtFinalPoint, sFinalPoint .. self.nDicePoint)
|
|
for i = 1, 3 do
|
|
local item = self._mapNode.EventItem[i]
|
|
if item ~= nil then
|
|
item:SetDiceCasted(self.nDicePoint)
|
|
end
|
|
end
|
|
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
|