8c4bd41668
EN: 1.13.0.124 CN: 1.13.0.124 JP: 1.13.0.128 KR: 1.13.0.130
509 lines
19 KiB
Lua
509 lines
19 KiB
Lua
local SoldierPauseCtrl = class("SoldierPauseCtrl", BaseCtrl)
|
|
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
|
|
local SoldierAttrData = require("GameCore.Data.DataClass.Soldier.SoldierAttrData")
|
|
SoldierPauseCtrl._mapNodeConfig = {
|
|
goBlur = {
|
|
sNodeName = "t_fullscreen_blur_01"
|
|
},
|
|
aniBlur = {
|
|
sNodeName = "t_fullscreen_blur_01",
|
|
sComponentName = "Animator"
|
|
},
|
|
safeAreaRoot = {
|
|
sNodeName = "----SafeAreaRoot----"
|
|
},
|
|
txtWindowTitle = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Soldier_Battle_Pause"
|
|
},
|
|
btnClose = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Close"
|
|
},
|
|
snapshot = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Close"
|
|
},
|
|
btnRestart = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Restart"
|
|
},
|
|
txtBtnRestart = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Soldier_Btn_Restart"
|
|
},
|
|
btnResult = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Result"
|
|
},
|
|
txtBtnResult = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Soldier_Btn_Result"
|
|
},
|
|
btnLeave = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Leave"
|
|
},
|
|
txtBtnLeave = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Soldier_Btn_Leave"
|
|
},
|
|
goNodeInfo = {},
|
|
Node = {nCount = 8},
|
|
txtProgress = {sComponentName = "TMP_Text"},
|
|
txtLevel = {sComponentName = "TMP_Text"},
|
|
txtExp = {sComponentName = "TMP_Text"},
|
|
txtHp = {sComponentName = "TMP_Text"},
|
|
txtCoin = {sComponentName = "TMP_Text"},
|
|
btnCoin = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_CoinTips"
|
|
},
|
|
BarContainer = {
|
|
sComponentName = "RectTransform"
|
|
},
|
|
goChar = {},
|
|
goCharItem = {},
|
|
goCharList = {nCount = 2, sComponentName = "Transform"},
|
|
txtCharTitle = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Soldier_Battle_Char_Title"
|
|
},
|
|
txtPartnerTitle = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Soldier_Battle_Partner_Title"
|
|
},
|
|
goPartnerList = {sComponentName = "Transform"},
|
|
goPartnerItem = {sComponentName = "Transform"},
|
|
txtCardTitle = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Soldier_Battle_Card_Title"
|
|
},
|
|
btnStarterCard = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_StarterCard"
|
|
},
|
|
imgCardStarter = {sComponentName = "Image"},
|
|
imgCardIconStarter = {sComponentName = "Image"},
|
|
imgemptyStarter = {},
|
|
goStrategyCardList = {sComponentName = "Transform"},
|
|
btnStrategyCardItem = {sComponentName = "Transform"},
|
|
btnSetting = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Setting"
|
|
},
|
|
charDetialRoot = {sComponentName = "Transform"},
|
|
parnterDetialRoot = {sComponentName = "Transform"}
|
|
}
|
|
SoldierPauseCtrl._mapEventConfig = {
|
|
OpenSoldierPause = "OnEvent_OpenSoldierPause",
|
|
RefreshSoldierCoin = "OnEvent_RefreshCoin"
|
|
}
|
|
SoldierPauseCtrl._mapRedDotConfig = {}
|
|
local iconPath = "Icon/SoldierOtherIcon/"
|
|
local iconCardPath = "Icon/SoldierBuffCard/"
|
|
local iconPartnerPath = "Icon/SoldierPartner/"
|
|
function SoldierPauseCtrl:OpenUI()
|
|
self._mapNode.goBlur:SetActive(true)
|
|
local wait = function()
|
|
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
|
if self.bShow then
|
|
self._mapNode.safeAreaRoot:SetActive(true)
|
|
end
|
|
end
|
|
cs_coroutine.start(wait)
|
|
end
|
|
function SoldierPauseCtrl:Refresh()
|
|
local nStage, nNodexIndex = PlayerData.SoldierData:GetCurChallengeState()
|
|
NovaAPI.SetTMPText(self._mapNode.txtProgress, orderedFormat(ConfigTable.GetUIText("Soldier_Pause_Schedule"), nStage .. "-" .. nNodexIndex))
|
|
local nLevel, nMaxLevel = self.levelData:GetShopLevel()
|
|
NovaAPI.SetTMPText(self._mapNode.txtLevel, orderedFormat(ConfigTable.GetUIText("Soldier_Battle_LevelPause"), nLevel))
|
|
local mapLevelCfg = ConfigTable.GetData("SoldierShopLevel", nLevel)
|
|
local nNeedExp = 0
|
|
if mapLevelCfg ~= nil then
|
|
nNeedExp = mapLevelCfg.Exp
|
|
end
|
|
local nExp = self.levelData:GetExp()
|
|
NovaAPI.SetTMPText(self._mapNode.txtExp, string.format("%s/%s", nExp, nNeedExp))
|
|
local nHp = self.levelData:GetHp()
|
|
NovaAPI.SetTMPText(self._mapNode.txtHp, nHp)
|
|
local nCount = self.levelData:GetItem(AllEnum.CoinItemId.SoldierCurrency)
|
|
NovaAPI.SetTMPText(self._mapNode.txtCoin, tostring(nCount))
|
|
if self.isRefreshMSg then
|
|
return
|
|
end
|
|
self:RefreshShopLv()
|
|
self:InitNodeList()
|
|
self:RefreshCharList()
|
|
self:RefreshCardList()
|
|
self.isRefreshMSg = true
|
|
end
|
|
function SoldierPauseCtrl:RefreshShopLv()
|
|
local nCurLevel, nMaxLevel = self.levelData:GetShopLevel()
|
|
NovaAPI.SetTMPText(self._mapNode.txtLevel, orderedFormat(ConfigTable.GetUIText("Soldier_Battle_LevelPause"), nCurLevel))
|
|
if nCurLevel == nMaxLevel then
|
|
self._mapNode.BarContainer.sizeDelta = Vector2(134, 22)
|
|
NovaAPI.SetTMPText(self._mapNode.txtExp, ConfigTable.GetUIText("Soldier_Sandtable_MaxLevel"))
|
|
else
|
|
local ShopMsg = ConfigTable.GetData("SoldierShopLevel", nCurLevel)
|
|
if ShopMsg then
|
|
local nNeedExp = ShopMsg.Exp
|
|
local nCurExp = self.levelData:GetExp()
|
|
self._mapNode.BarContainer.sizeDelta = Vector2(134 * (nCurExp / nNeedExp), 22)
|
|
NovaAPI.SetTMPText(self._mapNode.txtExp, tostring(nCurExp) .. "/" .. tostring(nNeedExp))
|
|
else
|
|
printError("商店表找不到,商店当前等级为 === " .. nCurLevel)
|
|
end
|
|
end
|
|
end
|
|
function SoldierPauseCtrl:InitNodeList()
|
|
local nStage, nNodexIndex = PlayerData.SoldierData:GetCurChallengeState()
|
|
NovaAPI.SetTMPText(self._mapNode.TextPos, tostring(nStage) .. "-" .. tostring(nNodexIndex))
|
|
local curStageNodeList = self.levelData:GetNodeList()
|
|
for i = 1, #self._mapNode.Node do
|
|
local node = self._mapNode.Node[i]
|
|
if i > #curStageNodeList then
|
|
node.gameObject:SetActive(false)
|
|
else
|
|
local imgIcon = node.transform:Find("imgIcon"):GetComponent("Image")
|
|
self:SetPngSprite(imgIcon, iconPath .. AllEnum.SoliderNoteTypeCfg[curStageNodeList[i].nNodeType].Icon)
|
|
local imgCurrent = node.transform:Find("imgCurrent")
|
|
imgCurrent.gameObject:SetActive(i == nNodexIndex)
|
|
if nNodexIndex > i then
|
|
NovaAPI.SetImageColor(imgIcon, Color(0.7098039215686275, 0.7647058823529411, 0.8156862745098039, 0.3))
|
|
elseif nNodexIndex < i then
|
|
NovaAPI.SetImageColor(imgIcon, Color(0.7098039215686275, 0.7647058823529411, 0.8156862745098039, 1))
|
|
elseif i == nNodexIndex then
|
|
NovaAPI.SetImageColor(imgIcon, Color(1.0, 1.0, 1.0, 1))
|
|
end
|
|
node.gameObject:SetActive(true)
|
|
end
|
|
end
|
|
end
|
|
function SoldierPauseCtrl:RefreshCharList()
|
|
self._mapNode.goCharItem:SetActive(false)
|
|
local tabMain = {}
|
|
local tabSub = {}
|
|
for k, v in ipairs(self.tChess) do
|
|
local nIndex = v.nIndex
|
|
if v.nPositionType == GameEnum.SoldierPositionType.FightPosition then
|
|
tabMain[nIndex] = v
|
|
elseif v.nPositionType == GameEnum.SoldierPositionType.SupportPosition then
|
|
tabSub[nIndex] = v
|
|
end
|
|
end
|
|
local tbActivePartner, tbPartner = SoldierAttrData.CalcActivePartners(self.tChess)
|
|
for i, v in pairs(tabMain) do
|
|
local goChar = instantiate(self._mapNode.goCharItem, self._mapNode.goCharList[1])
|
|
goChar:SetActive(true)
|
|
if not self.tbMainCtrl[v.nIndex] then
|
|
self.tbMainCtrl[v.nIndex] = self:BindCtrlByNode(goChar, "Game.UI.Soldier.Template.Character.SoldierCharCardItemCtrl")
|
|
if v.nId > 0 then
|
|
self.tbMainCtrl[v.nIndex]:SetItemData(v.nId, GameEnum.SoldierPositionType.FightPosition)
|
|
self.tbMainCtrl[v.nIndex]:SetStar(v.nStar)
|
|
self.tbMainCtrl[v.nIndex]:SetAttribute(v.nIndex)
|
|
self.tbMainCtrl[v.nIndex]:SetClickCallback(_, function()
|
|
local chessData = {
|
|
nPositionType = GameEnum.SoldierPositionType.FightPosition,
|
|
nId = v.nId,
|
|
nStar = math.max(v.nStar, 1)
|
|
}
|
|
self:ClickCharactorTips(v.nUId, v.nId, goChar, chessData, self.tChess, tbActivePartner)
|
|
end)
|
|
else
|
|
self.tbMainCtrl[v.nIndex]:SetItemData(nil)
|
|
end
|
|
end
|
|
end
|
|
for i, v in pairs(tabSub) do
|
|
local goChar = instantiate(self._mapNode.goCharItem, self._mapNode.goCharList[2])
|
|
goChar:SetActive(true)
|
|
if not self.tbSubCtrl[v.nIndex] then
|
|
self.tbSubCtrl[v.nIndex] = self:BindCtrlByNode(goChar, "Game.UI.Soldier.Template.Character.SoldierCharCardItemCtrl")
|
|
if 0 < v.nId then
|
|
self.tbSubCtrl[v.nIndex]:SetItemData(v.nId, GameEnum.SoldierPositionType.SupportPosition)
|
|
self.tbSubCtrl[v.nIndex]:SetStar(v.nStar)
|
|
self.tbSubCtrl[v.nIndex]:SetAttribute(0)
|
|
self.tbSubCtrl[v.nIndex]:SetClickCallback(_, function()
|
|
local chessData = {
|
|
nPositionType = GameEnum.SoldierPositionType.SupportPosition,
|
|
nId = v.nId,
|
|
nStar = math.max(v.nStar, 1)
|
|
}
|
|
self:ClickCharactorTips(v.nUId, v.nId, goChar, chessData, self.tChess, tbActivePartner)
|
|
end)
|
|
else
|
|
self.tbSubCtrl[v.nIndex]:SetItemData(nil)
|
|
end
|
|
end
|
|
end
|
|
if tbPartner == nil then
|
|
return
|
|
end
|
|
self._mapNode.goPartnerItem.gameObject:SetActive(false)
|
|
self:RefreshPartnerList(tbPartner)
|
|
end
|
|
function SoldierPauseCtrl:ClickCharactorTips(nUId, nId, obj, chessData, tbChess, tbActivePartner)
|
|
local tmpEnergy = self.tabCacheSoldierEnergy[nUId]
|
|
if tmpEnergy.death == true then
|
|
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Soldier_Death_Tips"))
|
|
return
|
|
end
|
|
local Info = CS.AdventureModuleHelper.GetSoldierActorInfo(nId)
|
|
local HealthInfo = CS.AdventureModuleHelper.GetSoldierHealthInfo(nId)
|
|
local atk = Info ~= nil and Info.atk:AsFloat() or 0
|
|
local def = Info ~= nil and Info.def:AsFloat() or 0
|
|
local critRate = Info ~= nil and Info.critRate:AsFloat() or 0
|
|
local critPower = Info ~= nil and Info.critPower:AsFloat() or 0
|
|
local attackSpeed = Info ~= nil and Info.normalAttackSpd:AsFloat() or 0
|
|
local hp = HealthInfo ~= nil and HealthInfo.hp or 0
|
|
local hpMax = HealthInfo ~= nil and HealthInfo.hpMax or 0
|
|
local tab = {}
|
|
tab.atk = atk
|
|
tab.def = def
|
|
tab.critRate = critRate
|
|
tab.critPower = critPower
|
|
tab.attackSpeed = attackSpeed
|
|
tab.hp = hp
|
|
tab.hpMax = hpMax
|
|
tab.nEnergy = tmpEnergy ~= nil and tmpEnergy.energy or 0
|
|
tab.nMaxEnergy = tmpEnergy ~= nil and tmpEnergy.maxEnergy or 0
|
|
tab.nRecoverRate = tmpEnergy ~= nil and tmpEnergy.recoverRate or 0
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierCharCardTips, self._mapNode.charDetialRoot, chessData, tbChess, tbActivePartner, tab)
|
|
EventManager.Hit("OnSetTipsPosition", self._mapNode.charDetialRoot:GetChild(0).position, self._mapNode.charDetialRoot:GetChild(1).position, self._mapNode.charDetialRoot:GetChild(2).position)
|
|
EventManager.Hit("SoldierCharTips_ShowBg")
|
|
end
|
|
function SoldierPauseCtrl:RefreshPartnerList(tbPartner)
|
|
self.tabPartnerBtn = {}
|
|
for _, v in ipairs(tbPartner) do
|
|
local mapPartnerGroupCfg = CacheTable.GetData("_SoldierPartnerGroup", v.nType)
|
|
if mapPartnerGroupCfg ~= nil then
|
|
local nPartnerQty = GameEnum.PartnerLevelQuality.None
|
|
local sBgPath = ""
|
|
local cfgList = CacheTable.GetData("_SoldierPartner", v.nType)
|
|
if cfgList == nil then
|
|
return
|
|
end
|
|
local partnerCfg = cfgList[v.nActiveLevel]
|
|
if partnerCfg == nil then
|
|
partnerCfg = cfgList[1]
|
|
end
|
|
local goU = instantiate(self._mapNode.goPartnerItem, self._mapNode.goPartnerList)
|
|
goU.gameObject:SetActive(true)
|
|
local imgPartner = goU:Find("imgPartner"):GetComponent("Image")
|
|
local imgPartnerIcon = goU:Find("imgPartnerIcon"):GetComponent("Image")
|
|
local txtPartnerCount = goU:Find("txtPartnerCount"):GetComponent("TMP_Text")
|
|
if v.nActiveLevel == 0 then
|
|
self:SetPngSprite(imgPartner, iconPath .. AllEnum.SoldierPartnerLevelIcon[GameEnum.PartnerLevelQuality.None].bg)
|
|
else
|
|
self:SetPngSprite(imgPartner, iconPath .. AllEnum.SoldierPartnerLevelIcon[partnerCfg.PartnerLevelQuality].bg)
|
|
end
|
|
self:SetPngSprite(imgPartnerIcon, iconPartnerPath .. mapPartnerGroupCfg.Icon .. AllEnum.SoldierChessIconSurfix.M)
|
|
NovaAPI.SetTMPText(txtPartnerCount, tostring(v.nCurNum or 0))
|
|
local clickCb = function()
|
|
local bTrace = PlayerData.SoldierData:GetCurLevelData():CheckPartnerTrace(v.nType)
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierPartnerTips, self._mapNode.parnterDetialRoot, v.nType, v.nActiveLevel, bTrace)
|
|
EventManager.Hit("OnSetParnterTipsPosition", self._mapNode.parnterDetialRoot:GetChild(0).position, self._mapNode.parnterDetialRoot:GetChild(1).position, self._mapNode.parnterDetialRoot:GetChild(2).position)
|
|
EventManager.Hit("SoldierCharTips_ShowBg")
|
|
end
|
|
local btn = imgPartner.gameObject:GetComponent("UIButton")
|
|
btn.onClick:RemoveAllListeners()
|
|
btn.onClick:AddListener(clickCb)
|
|
table.insert(self.tabPartnerBtn, btn)
|
|
end
|
|
end
|
|
end
|
|
function SoldierPauseCtrl:RefreshCardList()
|
|
local starterCard, strategyCard = self.levelData:GetCardData()
|
|
if starterCard ~= nil then
|
|
if starterCard[1] ~= nil then
|
|
self.nStarterCardId = starterCard[1].nId
|
|
local SoldierStarterCardCfg = ConfigTable.GetData("SoldierStarterCard", self.nStarterCardId)
|
|
self._mapNode.imgCardStarter.gameObject:SetActive(true)
|
|
self._mapNode.imgCardIconStarter.gameObject:SetActive(true)
|
|
self._mapNode.imgemptyStarter.gameObject:SetActive(false)
|
|
local sBgPath = iconCardPath .. SoldierStarterCardCfg.Icon
|
|
self:SetPngSprite(self._mapNode.imgCardIconStarter, sBgPath)
|
|
else
|
|
self._mapNode.imgCardStarter.gameObject:SetActive(false)
|
|
self._mapNode.imgCardIconStarter.gameObject:SetActive(false)
|
|
self._mapNode.imgemptyStarter.gameObject:SetActive(true)
|
|
end
|
|
end
|
|
self._mapNode.btnStrategyCardItem.gameObject:SetActive(false)
|
|
self.tabStrategyCard = {}
|
|
if strategyCard ~= nil then
|
|
for k, v in ipairs(strategyCard) do
|
|
local goStrategy = instantiate(self._mapNode.btnStrategyCardItem, self._mapNode.goStrategyCardList)
|
|
goStrategy.gameObject:SetActive(true)
|
|
local clickCb = function()
|
|
self:OnBtnClick_StrategyCard(v.nId)
|
|
end
|
|
local cardBg = goStrategy:Find("AnimRoot/imgCardStrategy"):GetComponent("Image")
|
|
local cardIcon = goStrategy:Find("AnimRoot/imgCardIconStrategy"):GetComponent("Image")
|
|
local btn = goStrategy:GetComponent("UIButton")
|
|
btn.onClick:RemoveAllListeners()
|
|
btn.onClick:AddListener(clickCb)
|
|
table.insert(self.tabStrategyCard, btn)
|
|
local SoldierStrategyCardCfg = ConfigTable.GetData("SoldierStrategyCard", v.nId)
|
|
local cardBgPath = iconPath .. AllEnum.SoldierStrategyCardRarityIcon[SoldierStrategyCardCfg.Rarity] .. AllEnum.SoldierChessIconSurfix.S
|
|
self:SetPngSprite(cardBg, cardBgPath)
|
|
local cardIconPath = iconCardPath .. SoldierStrategyCardCfg.Icon
|
|
self:SetPngSprite(cardIcon, cardIconPath)
|
|
end
|
|
end
|
|
end
|
|
function SoldierPauseCtrl:CloseUI(callback)
|
|
if self._mapNode == nil then
|
|
return
|
|
end
|
|
self:AddTimer(1, 0.2, "ClosePanel", true, true, true, callback)
|
|
end
|
|
function SoldierPauseCtrl:ClosePanel(_, callback)
|
|
if self._mapNode == nil or not self.bShow then
|
|
return
|
|
end
|
|
self:OnPanelClose(callback)
|
|
end
|
|
function SoldierPauseCtrl:OnPanelClose(callback)
|
|
self.bShow = false
|
|
PanelManager.InputEnable()
|
|
GamepadUIManager.DisableGamepadUI("SoldierPauseCtrl")
|
|
EventManager.Hit(EventId.BattleDashboardVisible, true)
|
|
self._mapNode.safeAreaRoot:SetActive(false)
|
|
self._mapNode.goBlur:SetActive(false)
|
|
if callback then
|
|
callback()
|
|
end
|
|
end
|
|
function SoldierPauseCtrl:Awake()
|
|
self.nAllChallengeTime = ConfigTable.GetConfigNumber("JointDrill_Challenge_Time_Max")
|
|
self.nTotalTime = self._panel.nTotalTime
|
|
self._mapNode.safeAreaRoot:SetActive(false)
|
|
self.tbGamepadUINode = self:GetGamepadUINode()
|
|
self.tbMainCtrl = {}
|
|
self.tbSubCtrl = {}
|
|
end
|
|
function SoldierPauseCtrl:OnEnable()
|
|
self.nOpenTime = 0
|
|
self.nRemainTime = 0
|
|
if self._panel.nType ~= nil then
|
|
if self._panel.nType == GameEnum.JointDrillMode.JointDrill_Mode_1 then
|
|
self.nOpenTime = PlayerData.JointDrill_1:GetJointDrillStartTime()
|
|
elseif self._panel.nType == GameEnum.JointDrillMode.JointDrill_Mode_2 then
|
|
self.nOpenTime = PlayerData.JointDrill_2:GetJointDrillStartTime()
|
|
end
|
|
end
|
|
end
|
|
function SoldierPauseCtrl:OnDisable()
|
|
end
|
|
function SoldierPauseCtrl:OnDestroy()
|
|
for nInstanceId, objCtrl in pairs(self.tbMainCtrl) do
|
|
self:UnbindCtrlByNode(objCtrl)
|
|
self.tbMainCtrl[nInstanceId] = nil
|
|
end
|
|
self.tbMainCtrl = {}
|
|
for nInstanceId, objCtrl in pairs(self.tbSubCtrl) do
|
|
self:UnbindCtrlByNode(objCtrl)
|
|
self.tbSubCtrl[nInstanceId] = nil
|
|
end
|
|
self.tbSubCtrl = {}
|
|
if self.tabPartnerBtn then
|
|
for i, v in pairs(self.tabPartnerBtn) do
|
|
v.onClick:RemoveAllListeners()
|
|
end
|
|
self.tabPartnerBtn = nil
|
|
end
|
|
if self.tabStrategyCard then
|
|
for i, v in pairs(self.tabStrategyCard) do
|
|
v.onClick:RemoveAllListeners()
|
|
end
|
|
self.tabStrategyCard = nil
|
|
end
|
|
end
|
|
function SoldierPauseCtrl:OnBtnClick_Result()
|
|
local confirmCallback = function()
|
|
local callback = function()
|
|
EventManager.Hit("SettleSoldierBattle")
|
|
self:CloseUI(function()
|
|
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)
|
|
EventManager.Hit(EventId.ClosePanel, PanelId.SoldierBattlePanel)
|
|
end)
|
|
end
|
|
PlayerData.SoldierData:SendGiveUp(callback)
|
|
end
|
|
local nStage, nNodexIndex = PlayerData.SoldierData:GetCurChallengeState()
|
|
local str = orderedFormat(ConfigTable.GetUIText("Soldier_Battle_GiveUp"), nStage .. "-" .. nNodexIndex)
|
|
local msg = {
|
|
nType = AllEnum.MessageBox.Confirm,
|
|
sContent = str,
|
|
callbackConfirm = confirmCallback,
|
|
bBlur = false
|
|
}
|
|
EventManager.Hit(EventId.OpenMessageBox, msg)
|
|
end
|
|
function SoldierPauseCtrl:OnBtnClick_Close()
|
|
self:CloseUI()
|
|
end
|
|
function SoldierPauseCtrl:OnBtnClick_Restart()
|
|
self:CloseUI()
|
|
EventManager.Hit("RestartSoldier")
|
|
end
|
|
function SoldierPauseCtrl:OnBtnClick_Leave()
|
|
local tabM, tabS, tabO = self.levelData:GetDeploy()
|
|
local tbMain = {}
|
|
local tbSup = {}
|
|
for i, v in pairs(tabM) do
|
|
if v.nPositionType == GameEnum.SoldierPositionType.FightPosition then
|
|
table.insert(tbMain, v)
|
|
elseif v.nPositionType == GameEnum.SoldierPositionType.SupportPosition then
|
|
table.insert(tbSup, v)
|
|
end
|
|
end
|
|
local callback = function()
|
|
self:CloseUI(function()
|
|
local function levelEndCallback()
|
|
EventManager.Remove("ADVENTURE_LEVEL_UNLOAD_COMPLETE", self, levelEndCallback)
|
|
NovaAPI.EnterModule("MainMenuModuleScene", true, 17)
|
|
EventManager.Hit(EventId.ClosePanel, PanelId.SoldierBattlePanel)
|
|
end
|
|
EventManager.Add("ADVENTURE_LEVEL_UNLOAD_COMPLETE", self, levelEndCallback)
|
|
CS.AdventureModuleHelper.LevelStateChanged(true, 0, true)
|
|
end)
|
|
end
|
|
PlayerData.SoldierData:SendStepOut(tbMain, tbSup, tabS, callback)
|
|
end
|
|
function SoldierPauseCtrl:OnBtnClick_StarterCard()
|
|
if self.nStarterCardId and self.nStarterCardId > 0 then
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierSelectStarterCardItem, self.nStarterCardId)
|
|
end
|
|
end
|
|
function SoldierPauseCtrl:OnBtnClick_StrategyCard(StrategyCardId)
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierSelectStrategyCardItem, StrategyCardId)
|
|
end
|
|
function SoldierPauseCtrl:OnBtnClick_CoinTips()
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierGoldTips)
|
|
end
|
|
function SoldierPauseCtrl:OnBtnClick_Setting()
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.BattleSettings)
|
|
end
|
|
function SoldierPauseCtrl:OnEvent_OpenSoldierPause(tabChess, tabCacheSoldierEnergy)
|
|
self.tChess = tabChess
|
|
self.tabCacheSoldierEnergy = tabCacheSoldierEnergy
|
|
self.bShow = true
|
|
self.levelData = PlayerData.SoldierData:GetCurLevelData()
|
|
PanelManager.InputDisable()
|
|
self:OpenUI()
|
|
self:Refresh()
|
|
GamepadUIManager.EnableGamepadUI("SoldierPauseCtrl", self.tbGamepadUINode, nil, true)
|
|
end
|
|
function SoldierPauseCtrl:OnEvent_RefreshCoin(nCount)
|
|
NovaAPI.SetTMPText(self._mapNode.txtCoin, nCount)
|
|
end
|
|
return SoldierPauseCtrl
|