Files
StellaSora_DataLua/lua/game/ui/infinitytower/infinitytowerbattleresultctrl.lua
T
SL1900 5e0d58cfad Initial version - 1.2.0.60
EN: 1.2.0.60
CN: 1.2.0.61
JP: 1.2.0.63
KR: 1.2.0.67
2025-12-03 01:00:00 +09:00

645 lines
23 KiB
Lua

local InfinityTowerBattleResultCtrl = class("InfinityTowerBattleResultCtrl", BaseCtrl)
local AdventureModuleHelper = CS.AdventureModuleHelper
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
local LocalData = require("GameCore.Data.LocalData")
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
local newDayTime = UTILS.GetDayRefreshTimeOffset()
InfinityTowerBattleResultCtrl._mapNodeConfig = {
imgBlurredBg = {},
safeAreaRoot = {
sNodeName = "----SafeAreaRoot----"
},
animRoot = {
sNodeName = "----SafeAreaRoot----",
sComponentName = "Animator"
},
bgComplete = {},
goComplete = {},
texLvCountTitle = {
sComponentName = "TMP_Text",
sLanguageId = "InfinityTower_Battle_LvCount"
},
texLvCount = {sComponentName = "TMP_Text"},
texTimeCountTitle = {
sComponentName = "TMP_Text",
sLanguageId = "InfinityTower_Battle_Time"
},
texTimeCount = {sComponentName = "TMP_Text"},
btn_Complete_Quit = {
sComponentName = "UIButton",
callback = "OnBtnClick_Quite"
},
txtCompleteQuit = {
sComponentName = "TMP_Text",
sLanguageId = "InfinityTower_Quit"
},
btn_NextLv = {
sComponentName = "UIButton",
callback = "OnBtnClick_NextLv"
},
txtNextLv = {
sComponentName = "TMP_Text",
sLanguageId = "InfinityTower_NextLv"
},
btn_NextMsg = {
sComponentName = "UIButton",
callback = "OnBtnClick_NextMsg"
},
tex_NextMsg = {
sComponentName = "TMP_Text",
sLanguageId = "InfinityTower_Next_LvMsg"
},
auto_lv = {},
auto_lvTime = {sComponentName = "TMP_Text"},
bgFail = {},
goFail = {},
btn_Fail_Quit = {
sComponentName = "UIButton",
callback = "OnBtnClick_Quite"
},
txtFailQuit = {
sComponentName = "TMP_Text",
sLanguageId = "InfinityTower_Quit"
},
btn_Again = {
sComponentName = "UIButton",
callback = "OnBtnClick_Again"
},
btnDamageResult = {
nCount = 2,
sComponentName = "UIButton",
callback = "OnBtnClick_DamageResult"
},
txtAgain = {
sComponentName = "TMP_Text",
sLanguageId = "InfinityTower_Again"
},
txtTip = {
sComponentName = "TMP_Text",
sLanguageId = "Battle_Result_Fail_Tip"
},
txtTipShadow = {
sComponentName = "TMP_Text",
sLanguageId = "Battle_Result_Fail_Tip"
},
texTowerNameSuccess = {sComponentName = "TMP_Text"},
texTowerNameFail = {sComponentName = "TMP_Text"},
goNextMsg = {},
anit_window = {
sNodeName = "t_window_04",
sComponentName = "Animator"
},
goNextMsg_blur = {},
t_window_04 = {},
MaskClose = {
sComponentName = "UIButton",
callback = "OnClickCloseNextMsgRoot"
},
btnCloseBV = {
sComponentName = "UIButton",
callback = "OnClickCloseNextMsgRoot"
},
txt_goNextMsgTitle = {
sComponentName = "TMP_Text",
sLanguageId = "InfinityTower_Next_LvMsg"
},
tex_goNextMsg_lvIndex = {sComponentName = "TMP_Text"},
tex_goNextMsg_lvName = {sComponentName = "TMP_Text"},
tex_goNextMsg_ReLv = {
sComponentName = "TMP_Text",
sLanguageId = "InfinityTower_Recommend_Lv"
},
tex_goNextMsg_ReLvCount = {sComponentName = "TMP_Text"},
img_goNextMsg_ReCon = {sComponentName = "Image"},
tex_goNextMsg_ReCon = {
sComponentName = "TMP_Text",
sLanguageId = "InfinityTower_Recommend_Construct"
},
btn_goNextMsg_MonInfo = {
sComponentName = "UIButton",
callback = "OnClickMonsterInfo"
},
tex_lvmsgBot_MonInfo = {
sComponentName = "TMP_Text",
sLanguageId = "MonsterInfo"
},
tex_goNextMsg_Affix = {
sComponentName = "TMP_Text",
sLanguageId = "InfinityTower_Affix"
},
goNextMsg_affixSCRoot = {sComponentName = "Transform"},
goNextMsg_affix_Item = {},
tex_goNextMsg_Reward = {
sComponentName = "TMP_Text",
sLanguageId = "MessageBox_Reward"
},
goNextMsg_RewardRoot = {sComponentName = "Transform"},
goNextMsg_RewardItem = {},
goEnemyInfo = {
sCtrlName = "Game.UI.MainlineEx.MainlineMonsterInfoCtrl"
}
}
InfinityTowerBattleResultCtrl._mapEventConfig = {
Infinity_Tower_SettleSuccess = "SettleSuccess",
Infinity_Tower_AgainOrNext = "InfinityTowerAgainOrNext",
[EventId.ClosePanel] = "OnEvent_ClosePanel",
Close_Infinity_BountyUp = "OnEvent_CloseInfinityBountyUp",
Stop_InfinityTowerAutoNextLv = "StopAutoNextLv"
}
function InfinityTowerBattleResultCtrl:Awake()
self.rewardItem = {}
self._mapNode.safeAreaRoot:SetActive(false)
self.tbGamepadUINode = self:GetGamepadUINode()
end
function InfinityTowerBattleResultCtrl:FadeIn()
end
function InfinityTowerBattleResultCtrl:FadeOut()
end
function InfinityTowerBattleResultCtrl:OnEnable()
end
function InfinityTowerBattleResultCtrl:OnDisable()
end
function InfinityTowerBattleResultCtrl:OnDestroy()
for go, ctrl in ipairs(self.rewardItem) do
self:UnbindCtrlByNode(ctrl)
end
self.rewardItem = {}
end
function InfinityTowerBattleResultCtrl:OnRelease()
end
function InfinityTowerBattleResultCtrl:OnBtnClick_Quite()
EventManager.Hit(EventId.BattleDashboardVisible, true)
PlayerData.InfinityTower:SetAutoNextLv(false)
self:StopAutoNextLv()
PlayerData.InfinityTower:LevelEnd()
local function levelEndCallback()
EventManager.Remove("ADVENTURE_LEVEL_UNLOAD_COMPLETE", self, levelEndCallback)
NovaAPI.EnterModule("MainMenuModuleScene", true)
end
EventManager.Add("ADVENTURE_LEVEL_UNLOAD_COMPLETE", self, levelEndCallback)
CS.AdventureModuleHelper.LevelStateChanged(true, 0, true)
end
function InfinityTowerBattleResultCtrl:OnBtnClick_NextLv()
self:StopAutoNextLv()
if self.haveReward or self.isBountyUp or self.isPlot then
return
end
local isCan, tmpLv = self:CheckGoNextLv(true)
if not isCan then
return
end
self:CheckRecommend(tmpLv)
end
function InfinityTowerBattleResultCtrl:CheckGoNextLv(isTips)
local isCan, tmpLv = PlayerData.InfinityTower:AnginOrNextLv(false)
if not self:CheckCanGo(tmpLv, isTips) then
return false, tmpLv
end
local tmpCharTid = PlayerData.InfinityTower.cacheCharTid
if not PlayerData.InfinityTower:JudgeInfinityTowerBuildCanUse(tmpCharTid, tmpLv) then
if isTips then
local strTips = ConfigTable.GetUIText("InfinityTower_Build_NotMeetingCond")
EventManager.Hit(EventId.OpenMessageBox, strTips)
end
return false, tmpLv
end
local _isLockWorldClass = PlayerData.InfinityTower:CheckLockWorldClass(tmpLv)
if _isLockWorldClass then
if isTips then
local strTips = ConfigTable.GetUIText("InfinityTower_Lock_WorldClass")
EventManager.Hit(EventId.OpenMessageBox, strTips)
end
return false, tmpLv
end
return true, tmpLv
end
function InfinityTowerBattleResultCtrl:OnBtnClick_Again()
local isCan, tmpLv = PlayerData.InfinityTower:AnginOrNextLv(true)
if not self:CheckCanGo(tmpLv, true) then
return
end
self:CheckRecommend(tmpLv)
end
function InfinityTowerBattleResultCtrl:GoAgainOrNext()
EventManager.Hit(EventId.ClosePanel, PanelId.BattleDamage)
PlayerData.InfinityTower:GoAnginOrNextLv()
end
function InfinityTowerBattleResultCtrl:InfinityTowerAgainOrNext()
GamepadUIManager.DisableGamepadUI("InfinityTowerBattleResultCtrl")
EventManager.Hit(EventId.BattleDashboardVisible, true)
PanelManager.InputEnable(true)
self._mapNode.imgBlurredBg:SetActive(false)
self._mapNode.safeAreaRoot:SetActive(false)
end
function InfinityTowerBattleResultCtrl:CheckCanGo(tmpLv, isTips)
local lvData = ConfigTable.GetData("InfinityTowerLevel", tmpLv)
if lvData == nil then
return false
end
local diff = lvData.DifficultyId
local diffData = ConfigTable.GetData("InfinityTowerDifficulty", diff)
local towerId = diffData.TowerId
local _isOpenDay = PlayerData.InfinityTower:CheckOpenDay(towerId)
if not _isOpenDay then
if isTips then
local strTips = ConfigTable.GetUIText("RegionBoss_Unlock_OpenDay")
EventManager.Hit(EventId.OpenMessageBox, strTips)
end
return false
end
return true
end
function InfinityTowerBattleResultCtrl:CheckRecommend(tmpLv)
local TipsTime = LocalData.GetPlayerLocalData("IntinityT_Tips_Time")
local _tipDay = 0
if TipsTime ~= nil then
_tipDay = tonumber(TipsTime)
end
local curTimeStamp = CS.ClientManager.Instance.serverTimeStampWithTimeZone
local fixedTimeStamp = curTimeStamp - newDayTime * 3600
local nYear = tonumber(os.date("!%Y", fixedTimeStamp))
local nMonth = tonumber(os.date("!%m", fixedTimeStamp))
local nDay = tonumber(os.date("!%d", fixedTimeStamp))
local nowD = nYear * 366 + nMonth * 31 + nDay
if nowD == _tipDay then
self:GoAgainOrNext()
EventManager.Hit("MainBattleMenuBtnPauseActive", false)
else
local GetBuildCallback = function(mapBuildData)
local recLv = ConfigTable.GetData("InfinityTowerLevel", tmpLv).RecommendLv
local recRank = ConfigTable.GetData("InfinityTowerLevel", tmpLv).RecommendBuildRank
local charTid = mapBuildData.tbChar[1].nTid
local charData = PlayerData.Char:GetCharDataByTid(charTid)
if charData ~= nil then
if recLv <= charData.nLevel and recRank <= PlayerData.Build:CalBuildRank(mapBuildData.nScore).Id then
self:GoAgainOrNext()
EventManager.Hit("MainBattleMenuBtnPauseActive", false)
else
local isSelectAgain = false
local confirmCallback = function()
if isSelectAgain then
local _curTimeStamp = CS.ClientManager.Instance.serverTimeStampWithTimeZone
local _fixedTimeStamp = _curTimeStamp - newDayTime * 3600
local _nYear = tonumber(os.date("!%Y", _fixedTimeStamp))
local _nMonth = tonumber(os.date("!%m", _fixedTimeStamp))
local _nDay = tonumber(os.date("!%d", _fixedTimeStamp))
local _nowD = _nYear * 366 + _nMonth * 31 + _nDay
LocalData.SetPlayerLocalData("IntinityT_Tips_Time", tostring(_nowD))
end
self:GoAgainOrNext()
EventManager.Hit("MainBattleMenuBtnPauseActive", false)
end
local againCallback = function(isSelect)
isSelectAgain = isSelect
end
local msg = {
nType = AllEnum.MessageBox.Confirm,
sContent = ConfigTable.GetUIText("InfinityTower_Recommend_Tips"),
callbackConfirm = confirmCallback,
callbackAgain = againCallback,
bBlur = false
}
EventManager.Hit(EventId.OpenMessageBox, msg)
end
else
self:GoAgainOrNext()
EventManager.Hit("MainBattleMenuBtnPauseActive", false)
end
end
local nBuildId = PlayerData.InfinityTower:GetCachedBuildId(tmpLv)
PlayerData.Build:GetBuildDetailData(GetBuildCallback, nBuildId)
end
end
function InfinityTowerBattleResultCtrl:SettleSuccess(isSuccess, time, tabItem, Change, tmpPlotId, tbCharDamage)
self._mapNode.imgBlurredBg:SetActive(true)
EventManager.Hit(EventId.BattleDashboardVisible, false)
PanelManager.InputDisable()
GamepadUIManager.EnableGamepadUI("InfinityTowerBattleResultCtrl", self.tbGamepadUINode, nil, true)
local lvId = PlayerData.InfinityTower:GetCurrentLv()
local lvData = ConfigTable.GetData("InfinityTowerLevel", lvId)
local diff = lvData.DifficultyId
local diffData = ConfigTable.GetData("InfinityTowerDifficulty", diff)
local towerId = diffData.TowerId
local towerData = ConfigTable.GetData("InfinityTower", towerId)
self.LvSuccess = isSuccess
self.tbCharDamage = tbCharDamage
for i = 1, 2 do
self._mapNode.btnDamageResult[i].gameObject:SetActive(self.tbCharDamage ~= nil and #self.tbCharDamage > 0)
end
if isSuccess then
self.isAuto = false
if PlayerData.InfinityTower:GetAutoNextLv() then
self.isAuto = true
end
if self.isAuto then
local isCanAuto, tmpNextLv = self:CheckGoNextLv(false)
if not isCanAuto then
self.isAuto = false
end
end
WwiseAudioMgr:PostEvent("ui_loading_combatSFX_mute", nil, false)
WwiseAudioMgr:PlaySound("ui_infinity_victory")
self.tmpPlotId = tmpPlotId
self.haveReward = false
self.isBountyUp = false
self.isPlot = tmpPlotId ~= 0 and not self.isAuto
if 0 < #tabItem then
self.haveReward = true
end
if PlayerData.InfinityTower.LastBountyLevel < PlayerData.InfinityTower.BountyLevel then
self.isBountyUp = true
end
NovaAPI.SetTMPText(self._mapNode.texTowerNameSuccess, towerData.Name)
self._mapNode.bgComplete:SetActive(true)
self._mapNode.goComplete:SetActive(true)
self._mapNode.goFail:SetActive(false)
self._mapNode.bgFail:SetActive(false)
local _diffSort = diffData.Sort
local _data = PlayerData.InfinityTower:GetTowerDiffData(towerId, _diffSort)
local _dataLv = _data.level
local firstFloor = _data.firstFloor
local endFloor = _data.endFloor
local indexlvCount = 0
for i = firstFloor, endFloor do
local tmpData = _dataLv[i]
indexlvCount = indexlvCount + 1
if tmpData.Id == lvId then
break
end
end
local strIndex = indexlvCount
if indexlvCount < 10 then
strIndex = "0" .. indexlvCount
end
NovaAPI.SetTMPText(self._mapNode.texLvCount, string.format(ConfigTable.GetUIText("Infinity_Diff_Lv"), _diffSort, strIndex))
NovaAPI.SetTMPText(self._mapNode.texTimeCount, time .. ConfigTable.GetUIText("Talent_Sec"))
local isCan, tmpLv = PlayerData.InfinityTower:AnginOrNextLv(false)
if isCan then
self._mapNode.btn_NextLv.gameObject:SetActive(true)
self._mapNode.btn_NextMsg.gameObject:SetActive(true)
else
self._mapNode.btn_NextLv.gameObject:SetActive(false)
self._mapNode.btn_NextMsg.gameObject:SetActive(false)
end
if not self.isAuto then
self._mapNode.auto_lv:SetActive(false)
self:AddTimer(1, 1, function()
PlayerData.SideBanner:TryOpenSideBanner()
if self.haveReward then
UTILS.OpenReceiveByDisplayItem(tabItem, Change)
elseif self.isBountyUp then
EventManager.Hit("Show_Infinity_BountyUp")
elseif self.isPlot then
PlayerData.InfinityTower:PlayPlot(self.tmpPlotId)
end
end, true, true, true)
else
self:AutoNextLv(tabItem, Change)
end
EventManager.Hit(EventId.TemporaryBlockInput, 2)
else
NovaAPI.SetTMPText(self._mapNode.texTowerNameFail, towerData.Name)
self._mapNode.bgComplete:SetActive(false)
self._mapNode.goComplete:SetActive(false)
self._mapNode.bgFail:SetActive(true)
self._mapNode.goFail:SetActive(true)
end
self._mapNode.safeAreaRoot:SetActive(true)
self:PlayAni(isSuccess)
end
function InfinityTowerBattleResultCtrl:PlayAni(isSuccess)
if isSuccess then
self._mapNode.animRoot:Play("InfinityTowerBattleResult_Complete")
else
self._mapNode.animRoot:Play("InfinityTowerBattleResult_Fail")
end
end
function InfinityTowerBattleResultCtrl:OnBtnClick_NextMsg()
self:StopAutoNextLv()
self._mapNode.goNextMsg:SetActive(true)
self._mapNode.goNextMsg_blur:SetActive(true)
self:ShowNextLvInfo(PlayerData.InfinityTower.NextLevelId)
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
self._mapNode.t_window_04:SetActive(true)
self._mapNode.anit_window:Play("t_window_04_t_in")
end
cs_coroutine.start(wait)
end
function InfinityTowerBattleResultCtrl:OnBtnClick_DamageResult()
EventManager.Hit(EventId.OpenPanel, PanelId.BattleDamage, self.tbCharDamage)
end
function InfinityTowerBattleResultCtrl:ShowNextLvInfo(levelId)
self.ChooseLevelId = levelId
local lvData = ConfigTable.GetData("InfinityTowerLevel", levelId)
local diffData = ConfigTable.GetData("InfinityTowerDifficulty", lvData.DifficultyId)
local towerId = diffData.TowerId
local diffSort = diffData.Sort
local data = PlayerData.InfinityTower:GetTowerDiffData(towerId, diffSort)
local dataLv = data.level
local firstFloor = data.firstFloor
local endFloor = data.endFloor
local indexlvCount = 0
for i = firstFloor, endFloor do
local tmpData = dataLv[i]
indexlvCount = indexlvCount + 1
if tmpData.Id == levelId then
break
end
end
local strIndex = indexlvCount
if indexlvCount < 10 then
strIndex = "0" .. indexlvCount
end
NovaAPI.SetTMPText(self._mapNode.tex_goNextMsg_lvIndex, orderedFormat(ConfigTable.GetUIText("InfinityTower_Lv_IndexSpace"), strIndex))
NovaAPI.SetTMPText(self._mapNode.tex_goNextMsg_lvName, lvData.Name)
NovaAPI.SetTMPText(self._mapNode.tex_goNextMsg_ReLvCount, lvData.RecommendLv)
local sScore = "Icon/BuildRank/BuildRank_" .. lvData.RecommendBuildRank
self:SetPngSprite(self._mapNode.img_goNextMsg_ReCon, sScore)
local childRewardCount = self._mapNode.goNextMsg_RewardRoot.childCount
for i = 1, childRewardCount do
self._mapNode.goNextMsg_RewardRoot:GetChild(i - 1).gameObject:SetActive(false)
end
local tbItem = {}
local _base = decodeJson(lvData.BaseAwardPreview)
for k, v in ipairs(_base) do
table.insert(tbItem, {
id = v[1],
count = UTILS.ParseRewardItemCount(v)
})
end
local index = 1
for i, v in pairs(tbItem) do
local objItem
if index > self._mapNode.goNextMsg_RewardRoot.childCount then
objItem = instantiate(self._mapNode.goNextMsg_RewardItem, self._mapNode.goNextMsg_RewardRoot)
else
objItem = self._mapNode.goNextMsg_RewardRoot:GetChild(index - 1).gameObject
end
local btn = objItem:GetComponent("UIButton")
btn.onClick:RemoveAllListeners()
local clickCb = function()
self:ShowItemTips(v.id, btn.gameObject)
end
btn.onClick:AddListener(clickCb)
objItem:SetActive(true)
local isGet = false
local _objR = objItem.transform:Find("AniRoot/_RewardItem").gameObject
self.rewardItem[_objR] = self:BindCtrlByNode(_objR, "Game.UI.TemplateEx.TemplateItemCtrl")
self.rewardItem[_objR]:SetItem(v.id, nil, v.count, nil, isGet, nil, nil, true)
index = index + 1
end
local childAffixCount = self._mapNode.goNextMsg_affixSCRoot.childCount
for i = 1, childAffixCount do
self._mapNode.goNextMsg_affixSCRoot:GetChild(i - 1).gameObject:SetActive(false)
end
local flData = ConfigTable.GetData("InfinityTowerFloor", lvData.FloorId)
local tabAffixId = flData.AffixId
local indexAffix = 1
if lvData.EntryCond ~= 0 then
local obj
if indexAffix + 1 > self._mapNode.goNextMsg_affixSCRoot.childCount then
obj = instantiate(self._mapNode.goNextMsg_affix_Item, self._mapNode.goNextMsg_affixSCRoot)
else
obj = self._mapNode.goNextMsg_affixSCRoot:GetChild(indexAffix).gameObject
end
self:ShowAffixItemMsg(obj, 0, false, lvData.EntryCond, lvData.EntryCondParam)
indexAffix = indexAffix + 1
end
for i = 1, #tabAffixId do
local obj
if indexAffix + 1 > self._mapNode.goNextMsg_affixSCRoot.childCount then
obj = instantiate(self._mapNode.goNextMsg_affix_Item, self._mapNode.goNextMsg_affixSCRoot)
else
obj = self._mapNode.goNextMsg_affixSCRoot:GetChild(indexAffix).gameObject
end
local affixId = 0
if tabAffixId[i] ~= nil then
affixId = tabAffixId[i]
end
self:ShowAffixItemMsg(obj, affixId, true, nil, nil)
indexAffix = indexAffix + 1
end
end
function InfinityTowerBattleResultCtrl:ShowItemTips(nTid, rtBtn)
UTILS.ClickItemGridWithTips(nTid, rtBtn, false, true, false)
end
function InfinityTowerBattleResultCtrl:ShowAffixItemMsg(obj, affixId, isAffix, entryCond, entryCondParam)
obj:SetActive(true)
local goNextMsg_affix_Item_1 = obj.transform:Find("goNextMsg_affix_Item_1").gameObject
local goNextMsg_affix_Item_2 = obj.transform:Find("goNextMsg_affix_Item_2").gameObject
local goNextMsg_affix_Item_3 = obj.transform:Find("goNextMsg_affix_Item_3").gameObject
goNextMsg_affix_Item_1:SetActive(isAffix)
goNextMsg_affix_Item_2:SetActive(not isAffix)
goNextMsg_affix_Item_3:SetActive(false)
if isAffix then
local tex_1 = goNextMsg_affix_Item_1.transform:Find("texgoNextMsg_affix_Item_1"):GetComponent("TMP_Text")
local dataAffix = ConfigTable.GetData("InfinityTowerAffix", affixId)
local sDesc = orderedFormat(ConfigTable.GetUIText("InfinityTowerAffix_Desc"), dataAffix.Name, dataAffix.Desc)
NovaAPI.SetTMPText(tex_1, UTILS.ParseParamDesc(sDesc, dataAffix))
else
local tex_2Title = goNextMsg_affix_Item_2.transform:Find("texgoNextMsg_affix_Item_2/Image/texgoNextMsg_affix_Item_2Title"):GetComponent("TMP_Text")
NovaAPI.SetTMPText(tex_2Title, ConfigTable.GetUIText("InfinityTower_Limit_March"))
local tex_2 = goNextMsg_affix_Item_2.transform:Find("texgoNextMsg_affix_Item_2"):GetComponent("TMP_Text")
local strElement = ConfigTable.GetUIText("ELEMENT_" .. entryCondParam[1])
if entryCond == GameEnum.InfinityTowerCond.MasterCharactersWithSpecificElementType then
NovaAPI.SetTMPText(tex_2, orderedFormat(ConfigTable.GetUIText("InfinityTower_Cond_SpecificElementType"), strElement))
elseif entryCond == GameEnum.InfinityTowerCond.ElementTypeWithSpecificQuantityNoLessThanQuantity then
NovaAPI.SetTMPText(tex_2, orderedFormat(ConfigTable.GetUIText("InfinityTower_Cond_SpecificQuantityNoLessThanQuantity"), strElement, entryCondParam[2]))
elseif entryCond == GameEnum.InfinityTowerCond.ElementTypeWithSpecificQuantityNoMoreThanQuantity then
NovaAPI.SetTMPText(tex_2, orderedFormat(ConfigTable.GetUIText("InfinityTower_Cond_SpecificQuantityNoMoreThanQuantity"), strElement, entryCondParam[2]))
end
end
end
function InfinityTowerBattleResultCtrl:OnClickMonsterInfo()
EventManager.Hit("OpenInfinityTowerMonsterInfo", self.ChooseLevelId)
end
function InfinityTowerBattleResultCtrl:OnClickCloseNextMsgRoot()
self._mapNode.goNextMsg_blur:SetActive(false)
self._mapNode.anit_window:Play("t_window_04_t_out")
self:AddTimer(1, 0.3, function()
self._mapNode.t_window_04:SetActive(false)
self._mapNode.goNextMsg:SetActive(false)
end, true, true, true)
end
function InfinityTowerBattleResultCtrl:OnEvent_ClosePanel(nPanelId)
if type(nPanelId) == "number" and nPanelId == PanelId.ReceivePropsTips then
if self.haveReward then
self.haveReward = false
if self.isBountyUp then
EventManager.Hit("Show_Infinity_BountyUp")
elseif self.isPlot then
if self.isAuto and self.LvSuccess then
self.isPlot = false
return
end
PlayerData.InfinityTower:PlayPlot(self.tmpPlotId)
end
elseif self.isPlot then
self.isPlot = false
end
end
end
function InfinityTowerBattleResultCtrl:OnEvent_CloseInfinityBountyUp()
self:StopAutoNextLv()
self.isBountyUp = false
if self.isPlot then
PlayerData.InfinityTower:PlayPlot(self.tmpPlotId)
end
end
function InfinityTowerBattleResultCtrl:AutoNextLv(tabItem, Change)
local callback = function()
self:StopAutoNextLv()
end
self:AddTimer(1, 0.1, function()
self._mapNode.auto_lv:SetActive(true)
end, true, true, true)
self:SetAutoLvTime(5)
local nCount = 0
self.AutoNextLvCor = self:AddTimer(5, 1, function()
nCount = nCount + 1
self:SetAutoLvTime(5 - nCount)
if nCount == 1 then
UTILS.OpenReceiveByDisplayItem(tabItem, Change, callback)
elseif nCount == 2 then
EventManager.Hit(EventId.ClosePanel, PanelId.ReceivePropsTips)
if self.isBountyUp then
EventManager.Hit("Show_Infinity_BountyUp")
end
elseif nCount == 3 then
if self.isBountyUp then
EventManager.Hit("Close_BountyUp_Auto")
self.isBountyUp = false
if self.isPlot then
self.isPlot = false
end
end
elseif nCount == 5 then
local isCan, tmpLv = self:CheckGoNextLv(true)
if not isCan then
return
end
self._mapNode.auto_lv:SetActive(false)
self:GoAgainOrNext()
EventManager.Hit("MainBattleMenuBtnPauseActive", false)
end
end, true, true, true)
end
function InfinityTowerBattleResultCtrl:StopAutoNextLv()
if nil ~= self.AutoNextLvCor and self.isAuto and self.LvSuccess then
self.isAuto = false
PlayerData.InfinityTower:SetAutoNextLv(false)
self.AutoNextLvCor:Cancel(false)
self.haveReward = false
self.isBountyUp = false
self.isPlot = false
end
EventManager.Hit("ChangeAutoBattleStateClose")
self.AutoNextLvCor = nil
self._mapNode.auto_lv:SetActive(false)
end
function InfinityTowerBattleResultCtrl:SetAutoLvTime(tSec)
NovaAPI.SetTMPText(self._mapNode.auto_lvTime, orderedFormat(ConfigTable.GetUIText("InfinityTower_AutoLevel_Time"), tSec))
end
return InfinityTowerBattleResultCtrl