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
This commit is contained in:
@@ -0,0 +1,644 @@
|
||||
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
|
||||
Reference in New Issue
Block a user