Files
Endfield-Data/LuaScripts/UI/Panels/AdventureLevelUp/AdventureLevelUpCtrl.lua
2025-12-02 20:37:18 +07:00

795 lines
26 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
local uiCtrl = require_ex('UI/Panels/Base/UICtrl')
local PANEL_ID = PanelId.AdventureLevelUp
local MAIN_HUD_TOAST_TYPE = "AdventureLevelUp"
AdventureLevelUpCtrl = HL.Class('AdventureLevelUpCtrl', uiCtrl.UICtrl)
AdventureLevelUpCtrl.s_messages = HL.StaticField(HL.Table) << {
[MessageConst.INTERRUPT_MAIN_HUD_ACTION_QUEUE] = 'InterruptMainHudActionQueue',
}
AdventureLevelUpCtrl.m_genRecipeCells = HL.Field(HL.Forward("UIListCache"))
AdventureLevelUpCtrl.m_genRewardCells = HL.Field(HL.Forward("UIListCache"))
AdventureLevelUpCtrl.m_levelUpInfoQueue = HL.Field(HL.Forward("Queue"))
AdventureLevelUpCtrl.m_aniQueue = HL.Field(HL.Forward("Queue"))
AdventureLevelUpCtrl.m_aniPlayInfo = HL.Field(HL.Table)
AdventureLevelUpCtrl.m_clearScreenKey = HL.Field(HL.Number) << -1
AdventureLevelUpCtrl.m_isWorldFreeze = HL.Field(HL.Boolean) << false
AdventureLevelUpCtrl.IsWaitOpen = HL.StaticField(HL.Boolean) << false
AdventureLevelUpCtrl.skipNextResume = HL.StaticField(HL.Boolean) << false
AdventureLevelUpCtrl.ResumePreLv = HL.StaticField(HL.Number) << 1
AdventureLevelUpCtrl.ResumePreExp = HL.StaticField(HL.Number) << 0
AdventureLevelUpCtrl.isLevelUpForForceSNS = HL.StaticField(HL.Boolean) << false
AdventureLevelUpCtrl.m_inputBindKeyExit = HL.Field(HL.Number) << -1
AdventureLevelUpCtrl.OnCreate = HL.Override(HL.Any) << function(self, arg)
self.view.continueBtn.onClick:AddListener(function()
self:_TryPlayUpgrade()
end)
self.m_genRecipeCells = UIUtils.genCellCache(self.view.rewardToast.recipeCell)
self.m_genRewardCells = UIUtils.genCellCache(self.view.rewardToast.rewardCell)
self.m_levelUpInfoQueue = require_ex("Common/Utils/DataStructure/Queue")()
self.m_aniQueue = require_ex("Common/Utils/DataStructure/Queue")()
self.view.controllerHintPlaceholder:InitControllerHintPlaceholder({self.view.inputGroup.groupId})
self.view.rewardToast.allRewardNaviGroup.onIsFocusedChange:AddListener(function(isFocused)
if not isFocused then
Notify(MessageConst.HIDE_ITEM_TIPS)
end
end)
end
AdventureLevelUpCtrl.OnClose = HL.Override() << function(self)
self:_SetFreezeWorld(false)
end
AdventureLevelUpCtrl.OnShowAdventureLevelUp = HL.StaticMethod(HL.Any) << function(arg)
local preLv, preExp = unpack(arg)
AdventureLevelUpCtrl.isLevelUpForForceSNS = preLv < GameInstance.player.adventure.adventureLevelData.lv
if AdventureLevelUpCtrl.IsWaitOpen then
return
end
AdventureLevelUpCtrl.IsWaitOpen = true
AdventureLevelUpCtrl.skipNextResume = UIManager:IsShow(PANEL_ID)
logger.info("AdventureLevelUpCtrl:OnShowAdventureLevelUp")
LuaSystemManager.mainHudActionQueue:AddRequest(MAIN_HUD_TOAST_TYPE, function(isResume)
Notify(MessageConst.HIDE_ITEM_TIPS)
if isResume then
if AdventureLevelUpCtrl.skipNextResume then
logger.info("AdventureLevelUpCtrl:OnShowAdventureLevelUp -> skipNextResume")
AdventureLevelUpCtrl.skipNextResume = false
Notify(MessageConst.ON_ONE_MAIN_HUD_ACTION_FINISHED, MAIN_HUD_TOAST_TYPE)
return
end
logger.info("AdventureLevelUpCtrl:OnShowAdventureLevelUp -> isResume")
local self = UIManager:AutoOpen(PANEL_ID)
self:_StartShow(AdventureLevelUpCtrl.ResumePreLv, AdventureLevelUpCtrl.ResumePreExp)
else
logger.info("AdventureLevelUpCtrl:OnShowAdventureLevelUp -> not isResume")
local self = UIManager:AutoOpen(PANEL_ID)
self:_StartShow(preLv, preExp)
end
AdventureLevelUpCtrl.IsWaitOpen = false
end, nil, nil, function()
AdventureLevelUpCtrl.IsWaitOpen = false
end)
end
AdventureLevelUpCtrl.HaveAdventureLevelUpInQueue = HL.StaticMethod().Return(HL.Boolean) << function()
return AdventureLevelUpCtrl.isLevelUpForForceSNS and (AdventureLevelUpCtrl.IsWaitOpen or UIManager:IsShow(PANEL_ID))
end
AdventureLevelUpCtrl.InterruptMainHudActionQueue = HL.Method() << function(self)
AdventureLevelUpCtrl.IsWaitOpen = true
self.animationWrapper:ClearTween(false)
self:_ClearCache()
self:Close()
end
AdventureLevelUpCtrl._UpdateData = HL.Method(HL.Number, HL.Number) << function(self, preLv, preExp)
local adventureData = GameInstance.player.adventure.adventureLevelData
local totalTargetLv = adventureData.lv
local totalTargetExp = adventureData.exp
local targetLvCfg = Tables.adventureLevelTable[totalTargetLv]
local hasLevelUp = preLv < totalTargetLv
logger.info("AdventureLevelUpCtrl:_UpdateData -> ResumePreLv " .. AdventureLevelUpCtrl.ResumePreLv)
logger.info("AdventureLevelUpCtrl:_UpdateData -> ResumePreExp " .. AdventureLevelUpCtrl.ResumePreExp)
if hasLevelUp then
local raiseStamina = 0
local recipeItemInfos = {}
local rewardItemInfos = {}
local rewardItemMap = {}
for level = preLv + 1, totalTargetLv do
local curLvCfg = Tables.adventureLevelTable[level]
local rewardId = curLvCfg.rewardId
local rewardsCfg = Tables.rewardTable[rewardId]
raiseStamina = raiseStamina + curLvCfg.raiseMaxStamina
for _, itemBundle in pairs(rewardsCfg.itemBundles) do
local itemCfg = Tables.itemTable[itemBundle.id]
local count = itemBundle.count
local rarity = itemCfg.rarity
local type = itemCfg.type
if type == GEnums.ItemType.EquipFormula then
local formulaInfo = {
id = itemBundle.id,
count = count,
rarity = rarity,
type = type,
sortId1 = itemCfg.sortId1,
sortId2 = itemCfg.sortId2,
}
table.insert(recipeItemInfos, formulaInfo)
else
local itemInfo = rewardItemMap[itemBundle.id]
if itemInfo == nil then
itemInfo = {
id = itemBundle.id,
count = count,
rarity = rarity,
type = type,
sortId1 = itemCfg.sortId1,
sortId2 = itemCfg.sortId2,
}
rewardItemMap[itemBundle.id] = itemInfo
else
itemInfo.count = itemInfo.count + count
end
end
end
end
for _, info in pairs(rewardItemMap) do
table.insert(rewardItemInfos, info)
end
table.sort(recipeItemInfos, Utils.genSortFunction(UIConst.COMMON_ITEM_SORT_KEYS, true))
table.sort(rewardItemInfos, Utils.genSortFunction(UIConst.COMMON_ITEM_SORT_KEYS, true))
local preLvCfg = Tables.adventureLevelTable[preLv]
local maxExp = preLvCfg.nextLevelUpExp - preLvCfg.levelUpExp
self.m_levelUpInfoQueue:Push({
curLv = preLv,
targetLv = totalTargetLv,
curExp = preExp - preLvCfg.levelUpExp,
targetExp = maxExp,
maxExp = maxExp,
totalAddExp = totalTargetExp - preExp,
isLevelUp = true,
isMaxLevel = false,
raiseStamina = raiseStamina,
recipeItemInfos = recipeItemInfos,
rewardItemInfos = rewardItemInfos,
curLvLevelUpExp = targetLvCfg.levelUpExp,
})
AdventureLevelUpCtrl.ResumePreLv = totalTargetLv
AdventureLevelUpCtrl.ResumePreExp = targetLvCfg.levelUpExp
else
AdventureLevelUpCtrl.ResumePreLv = preLv
AdventureLevelUpCtrl.ResumePreExp = preExp
end
local isMaxLevel = totalTargetLv == adventureData.maxLv
local targetExp = totalTargetExp - targetLvCfg.levelUpExp
local curExp = hasLevelUp and 0 or preExp - targetLvCfg.levelUpExp
local curLvMaxExp = targetLvCfg.nextLevelUpExp - targetLvCfg.levelUpExp
if isMaxLevel then
curExp = targetLvCfg.levelUpExp
targetExp = curExp
curLvMaxExp = targetExp
end
self.m_levelUpInfoQueue:Push({
curLv = totalTargetLv,
targetLv = totalTargetLv,
curExp = curExp,
targetExp = targetExp,
maxExp = curLvMaxExp,
totalAddExp = hasLevelUp and -1 or totalTargetExp - preExp,
isLevelUp = false,
isMaxLevel = isMaxLevel,
raiseStamina = 0,
recipeItemInfos = nil,
rewardItemInfos = nil,
curLvLevelUpExp = targetLvCfg.levelUpExp,
})
end
AdventureLevelUpCtrl._GetLevelUpReward = HL.Method(HL.String).Return(HL.Table, HL.Table) << function(self, rewardId)
local recipeItemInfos = {}
local rewardItemInfos = {}
local rewardsCfg = Tables.rewardTable[rewardId]
for _, itemBundle in pairs(rewardsCfg.itemBundles) do
local itemCfg = Tables.itemTable[itemBundle.id]
local count = itemBundle.count
local rarity = itemCfg.rarity
local type = itemCfg.type
local info = {
id = itemBundle.id,
count = count,
rarity = rarity,
type = type,
sortId1 = itemCfg.sortId1,
sortId2 = itemCfg.sortId2,
}
if type == GEnums.ItemType.EquipFormula then
table.insert(recipeItemInfos, info)
else
table.insert(rewardItemInfos, info)
end
end
table.sort(recipeItemInfos, Utils.genSortFunction(UIConst.COMMON_ITEM_SORT_KEYS, true))
table.sort(rewardItemInfos, Utils.genSortFunction(UIConst.COMMON_ITEM_SORT_KEYS, true))
return recipeItemInfos, rewardItemInfos
end
AdventureLevelUpCtrl._ClearCache = HL.Method() << function(self)
if self.m_aniPlayInfo and self.m_aniPlayInfo.updateKey > 0 then
LuaUpdate:Remove(self.m_aniPlayInfo.updateKey)
end
self:_ClearOrRecoverScreen(false)
self:_SetFreezeWorld(false)
self.m_aniPlayInfo = nil
self.m_levelUpInfoQueue:Clear()
self.m_aniQueue:Clear()
end
AdventureLevelUpCtrl._StartShow = HL.Method(HL.Number, HL.Number) << function(self, preLv, preExp)
logger.info("AdventureLevelUpCtrl:_StartShow -> preLv " .. preLv)
logger.info("AdventureLevelUpCtrl:_StartShow -> preExp " .. preExp)
self:_UpdateData(preLv, preExp)
self:_TryPlayUpgrade()
end
AdventureLevelUpCtrl._TryPlayUpgrade = HL.Method() << function(self)
if self.m_levelUpInfoQueue:Count() <= 0 then
self:_CompleteCloseSelf(true)
return
end
local lvUpInfo = self.m_levelUpInfoQueue:Pop()
self.m_aniPlayInfo = {
basicInfo = lvUpInfo,
updateKey = -1,
curLvGainExp = lvUpInfo.targetExp - lvUpInfo.curExp,
curTickTime = 0,
totalTime = self.view.config.PROGRESS_INCREASE_ANI_DURATION,
}
AdventureLevelUpCtrl.ResumePreLv = lvUpInfo.curLv
AdventureLevelUpCtrl.ResumePreExp = lvUpInfo.curLvLevelUpExp + lvUpInfo.curExp
if lvUpInfo.isLevelUp then
if BEYOND_DEBUG_COMMAND then
self.m_inputBindKeyExit = self:BindInputPlayerAction("common_cancel_no_hint", function()
self:_CompleteCloseSelf(true)
end)
end
self:_ClearOrRecoverScreen(true)
self:_StartPlayLevelUpAni()
GameInstance.player.guide:OnAdventureLevelUpShow()
else
self:_StartPlayNotLevelUpAni()
end
end
AdventureLevelUpCtrl._StartPlayLevelUpAni = HL.Method() << function(self)
if self.m_aniPlayInfo == nil or self.m_aniPlayInfo.basicInfo == nil then
self:_CompleteCloseSelf()
return
end
local lvUpInfo = self.m_aniPlayInfo.basicInfo
local viewRef = self.view
local upgradeView = self.view.upgradeToast
viewRef.upgradeToast.gameObject:SetActiveIfNecessary(true)
viewRef.rewardToast.gameObject:SetActiveIfNecessary(false)
viewRef.blurWithUI.gameObject:SetActiveIfNecessary(true)
self:ChangePanelCfg("blockKeyboardEvent", true)
self:ChangePanelCfg("realMouseMode", Types.EPanelMouseMode.NeedShow)
self:_SetFreezeWorld(true)
self:_UpdateUIProgress(upgradeView.progressNode, lvUpInfo.curExp, lvUpInfo.targetExp, lvUpInfo.maxExp)
upgradeView.curLvTxt.text = lvUpInfo.curLv
upgradeView.targetLvTxt.text = lvUpInfo.targetLv
local showTotalAddExp = lvUpInfo.totalAddExp > 0
if showTotalAddExp then
upgradeView.diffExpTxt.text = "+" .. lvUpInfo.totalAddExp
upgradeView.diffExpNode.gameObject:SetActiveIfNecessary(true)
else
upgradeView.diffExpNode.gameObject:SetActiveIfNecessary(false)
end
AudioManager.PostEvent("Au_UI_Menu_AdventureLevelUpPanel_B_Open")
local aniWrapper = self.animationWrapper
aniWrapper:PlayWithTween("adventurelevelup_upgradetoast_levelup_init", function()
AudioManager.PostEvent("Au_UI_Event_Count")
if showTotalAddExp then
upgradeView.aniWrapper:PlayWithTween("adventurelevelup_diffexptext_out")
end
if self.m_aniPlayInfo then
self.m_aniPlayInfo.updateKey = LuaUpdate:Add("Tick", function(deltaTime)
self:_OnUpdateLevelUpProgressAni(deltaTime)
end)
end
end)
end
AdventureLevelUpCtrl._OnUpdateLevelUpProgressAni = HL.Method(HL.Number) << function(self, deltaTime)
local playInfo = self.m_aniPlayInfo
local lvUpInfo = playInfo.basicInfo
playInfo.curTickTime = playInfo.curTickTime + deltaTime
if playInfo.curTickTime >= playInfo.totalTime then
self:_OnEndLevelUpProgressAni()
return
end
local progressNode = self.view.upgradeToast.progressNode
local timeProg = self.view.config.PROGRESSIVE_CURVE:Evaluate(playInfo.curTickTime / playInfo.totalTime)
local curTickExp = timeProg * playInfo.curLvGainExp + lvUpInfo.curExp
AdventureLevelUpCtrl.ResumePreExp = lume.round(lvUpInfo.curLvLevelUpExp + curTickExp)
self:_UpdateUIProgress(progressNode, math.floor(curTickExp), lvUpInfo.targetExp, lvUpInfo.maxExp)
end
AdventureLevelUpCtrl._OnEndLevelUpProgressAni = HL.Method() << function(self)
if self.m_aniPlayInfo == nil or self.m_aniPlayInfo.basicInfo == nil then
self:_CompleteCloseSelf()
return
end
local aniWrapper = self.animationWrapper
local targetExp = self.m_aniPlayInfo.basicInfo.targetExp
self:_UpdateUIProgress(self.view.upgradeToast.progressNode, targetExp, targetExp, self.m_aniPlayInfo.basicInfo.maxExp)
LuaUpdate:Remove(self.m_aniPlayInfo.updateKey)
self.m_aniPlayInfo.updateKey = -1
logger.info("LevelUp Start Play Levelup")
AudioManager.PostEvent("Au_UI_Event_AdventureLevelUp")
aniWrapper:PlayWithTween("adventurelevelup_upgradetoast_levelup", function()
logger.info("LevelUp Start Play Reward")
self.view.rewardToast.progressNode.progressStaticFillOffset.fillAmount = 0
self:_PlayReward()
end)
end
AdventureLevelUpCtrl._StartPlayNotLevelUpAni = HL.Method() << function(self)
if BEYOND_DEBUG_COMMAND then
if self.m_inputBindKeyExit >= 0 then
self:DeleteInputBinding(self.m_inputBindKeyExit)
self.m_inputBindKeyExit = -1
end
end
if self.m_aniPlayInfo == nil or self.m_aniPlayInfo.basicInfo == nil then
self:_CompleteCloseSelf()
return
end
local lvUpInfo = self.m_aniPlayInfo.basicInfo
local viewRef = self.view
local rewardToast = self.view.rewardToast
viewRef.upgradeToast.gameObject:SetActiveIfNecessary(false)
viewRef.continueBtnNode.gameObject:SetActiveIfNecessary(false)
viewRef.blurWithUI.gameObject:SetActiveIfNecessary(false)
rewardToast.gameObject:SetActiveIfNecessary(true)
rewardToast.state:SetState("ShowToast")
self:_ClearOrRecoverScreen(false)
self:ChangePanelCfg("blockKeyboardEvent", false)
self:ChangePanelCfg("realMouseMode", Types.EPanelMouseMode.NotNeedShow)
self:_SetFreezeWorld(false)
self:_UpdateUIProgress(rewardToast.progressNode, lvUpInfo.curExp, lvUpInfo.targetExp, lvUpInfo.maxExp)
rewardToast.curLvTxt.text = lvUpInfo.curLv
rewardToast.maxLevelText.gameObject:SetActiveIfNecessary(lvUpInfo.isMaxLevel)
rewardToast.numProgressNode.gameObject:SetActiveIfNecessary(not lvUpInfo.isMaxLevel)
local showTotalAddExp = lvUpInfo.totalAddExp > 0
if showTotalAddExp then
rewardToast.diffExpTxt.text = "+" .. lvUpInfo.totalAddExp
rewardToast.diffExpNode.gameObject:SetActiveIfNecessary(true)
else
rewardToast.diffExpNode.gameObject:SetActiveIfNecessary(false)
end
AudioManager.PostEvent("Au_UI_Menu_AdventureLevelUpPanel_A_Open")
local aniWrapper = self.animationWrapper
aniWrapper:PlayWithTween("adventurelevelup_exptoast_init", function()
AudioManager.PostEvent("Au_UI_Event_Count")
if showTotalAddExp then
rewardToast.aniWrapper:PlayWithTween("adventurelevelup_exptoast_diffexptext_out")
end
if self.m_aniPlayInfo then
self.m_aniPlayInfo.updateKey = LuaUpdate:Add("Tick", function(deltaTime)
self:_OnUpdateNotLevelUpProgressAni(deltaTime)
end)
end
end)
end
AdventureLevelUpCtrl._OnUpdateNotLevelUpProgressAni = HL.Method(HL.Number) << function(self, deltaTime)
local playInfo = self.m_aniPlayInfo
local lvUpInfo = playInfo.basicInfo
playInfo.curTickTime = playInfo.curTickTime + deltaTime
if playInfo.curTickTime >= playInfo.totalTime then
self:_OnEndNotLevelUpProgressAni()
return
end
local progressNode = self.view.rewardToast.progressNode
local timeProg = self.view.config.PROGRESSIVE_CURVE:Evaluate(playInfo.curTickTime / playInfo.totalTime)
local curTickExp = timeProg * playInfo.curLvGainExp + lvUpInfo.curExp
AdventureLevelUpCtrl.ResumePreExp = lume.round(lvUpInfo.curLvLevelUpExp + curTickExp)
self:_UpdateUIProgress(progressNode, math.floor(curTickExp), lvUpInfo.targetExp, lvUpInfo.maxExp)
end
AdventureLevelUpCtrl._OnEndNotLevelUpProgressAni = HL.Method() << function(self)
if self.m_aniPlayInfo == nil or self.m_aniPlayInfo.basicInfo == nil then
self:_CompleteCloseSelf()
return
end
local aniWrapper = self.animationWrapper
local lvUpInfo = self.m_aniPlayInfo.basicInfo
local targetExp = lvUpInfo.targetExp
self:_UpdateUIProgress(self.view.rewardToast.progressNode, targetExp, targetExp, lvUpInfo.maxExp)
self.view.rewardToast.maxLevelText.gameObject:SetActiveIfNecessary(lvUpInfo.isMaxLevel)
LuaUpdate:Remove(self.m_aniPlayInfo.updateKey)
self.m_aniPlayInfo.updateKey = -1
aniWrapper:PlayWithTween("adventurelevelup_exptoast_out", function()
self:_TryPlayUpgrade()
end)
end
AdventureLevelUpCtrl._PlayReward = HL.Method() << function(self)
if self.m_aniPlayInfo == nil or self.m_aniPlayInfo.basicInfo == nil then
self:_CompleteCloseSelf()
return
end
local levelUpInfo = self.m_aniPlayInfo.basicInfo
local upgradeView = self.view.upgradeToast
local rewardView = self.view.rewardToast
upgradeView.gameObject:SetActiveIfNecessary(false)
rewardView.gameObject:SetActiveIfNecessary(true)
rewardView.state:SetState("ShowReward")
rewardView.diffExpNode.gameObject:SetActiveIfNecessary(false)
rewardView.numProgressNode.gameObject:SetActiveIfNecessary(false)
self.view.continueBtnNode.gameObject:SetActiveIfNecessary(false)
self.m_aniQueue:Push({ aniName = "adventurelevelup_rewardtoast_in" })
rewardView.curLvTxt.text = levelUpInfo.targetLv
rewardView.staminaRewardNode.gameObject:SetActiveIfNecessary(false)
if levelUpInfo.raiseStamina > 0 then
local curStamina = GameInstance.player.adventure:GetAdventureLevelStaminaLimit(levelUpInfo.curLv)
local targetStamina = curStamina + levelUpInfo.raiseStamina
rewardView.curStaminaTxt.text = curStamina
rewardView.targetStaminaTxt.text = targetStamina
self.m_aniQueue:Push({
targetObj = rewardView.staminaRewardNode.gameObject,
aniName = "adventurelevelup_rewardtoast_stamina_in",
voice = "Au_UI_Event_AdventureReward",
})
end
local recipeCount = #levelUpInfo.recipeItemInfos
rewardView.recipeRewardNode.gameObject:SetActiveIfNecessary(false)
if recipeCount > 0 then
self.m_genRecipeCells:Refresh(recipeCount, function(cell, luaIndex)
local info = levelUpInfo.recipeItemInfos[luaIndex]
cell:InitItem(info, function()
UIUtils.showItemSideTips(cell)
end)
cell:SetExtraInfo({ isSideTips = DeviceInfo.usingController })
if DeviceInfo.usingController then
cell:SetEnableHoverTips(false)
else
cell:SetEnableHoverTips(true)
end
end)
self.m_aniQueue:Push({
targetObj = rewardView.recipeRewardNode.gameObject,
aniName = "adventurelevelup_rewardtoast_recipe_in",
voice = "Au_UI_Event_AdventureReward",
})
end
local rewardCount = #levelUpInfo.rewardItemInfos
rewardView.rewardNode.gameObject:SetActiveIfNecessary(false)
if rewardCount > 0 then
self.m_genRewardCells:Refresh(rewardCount, function(cell, luaIndex)
local info = levelUpInfo.rewardItemInfos[luaIndex]
cell:InitItem(info, function()
UIUtils.showItemSideTips(cell)
end)
cell:SetExtraInfo({ isSideTips = DeviceInfo.usingController })
if DeviceInfo.usingController then
cell:SetEnableHoverTips(false)
else
cell:SetEnableHoverTips(true)
end
end)
self.m_aniQueue:Push({
targetObj = rewardView.rewardNode.gameObject,
aniName = "adventurelevelup_rewardtoast_reward_in",
voice = "Au_UI_Event_AdventureReward",
})
end
if recipeCount <= 0 and rewardCount <= 0 then
self.view.rewardToast.focusKeyHintRoot.gameObject:SetActive(false)
elseif recipeCount > 0 then
self.view.rewardToast.focusKeyHintRoot.gameObject:SetActive(true)
local firstCell = self.m_genRecipeCells:Get(1)
self.view.rewardToast.focusKeyHintRoot:SetParent(firstCell.view.transform)
self.view.rewardToast.focusKeyHintRoot.anchoredPosition = Vector2(-74, 0)
else
self.view.rewardToast.focusKeyHintRoot.gameObject:SetActive(true)
local firstCell = self.m_genRewardCells:Get(1)
self.view.rewardToast.focusKeyHintRoot:SetParent(firstCell.view.transform)
self.view.rewardToast.focusKeyHintRoot.anchoredPosition = Vector2(-74, 0)
end
self.m_aniQueue:Push({ aniName = "adventurelevelup_rewardtoast_continueBtn_in" })
self:_NestedPlayAniQueue()
end
AdventureLevelUpCtrl._NestedPlayAniQueue = HL.Method() << function(self)
if self.m_aniQueue:Count() > 0 then
local aniWrapper = self.animationWrapper
local aniBundle = self.m_aniQueue:Pop()
if aniBundle.targetObj then
aniBundle.targetObj:SetActiveIfNecessary(true)
end
if aniBundle.voice then
AudioManager.PostEvent(aniBundle.voice)
end
aniWrapper:PlayWithTween(aniBundle.aniName, function()
self:_NestedPlayAniQueue()
end)
end
end
AdventureLevelUpCtrl._CompleteCloseSelf = HL.Method(HL.Opt(HL.Boolean)) << function(self, fastMode)
if fastMode then
self:_ClearCache()
self:Close()
Notify(MessageConst.ON_ONE_MAIN_HUD_ACTION_FINISHED, MAIN_HUD_TOAST_TYPE)
return
end
self:PlayAnimationOutWithCallback(function()
self:_ClearCache()
self:Close()
Notify(MessageConst.ON_ONE_MAIN_HUD_ACTION_FINISHED, MAIN_HUD_TOAST_TYPE)
end)
end
AdventureLevelUpCtrl._UpdateUIProgress = HL.Method(HL.Any, HL.Number, HL.Number, HL.Number)
<< function(self, viewRef, curValue, targetGrowthValue, totalValue)
local fillOffset = self.view.config.PROGRESS_STATIC_FILLAMOUNT_OFFSET
local realFillPercent = 1 - 2 * fillOffset
local fillAmount = curValue / totalValue
local realFill = fillAmount * realFillPercent + fillOffset
viewRef.curExpTxt.text = curValue
viewRef.targetExpTxt.text = totalValue
viewRef.progressFillOffset.fillAmount = realFill
if curValue < totalValue then
viewRef.progressStaticFillOffset.gameObject:SetActiveIfNecessary(true)
local pStaticRectTransform = viewRef.progressStaticRectTransform
local pRectTransform = viewRef.progressiveRectTransform
local posXOffset = self.view.config.PROGRESS_STATIC_POS_X_OFFSET
local staticFillAmount = (targetGrowthValue - curValue) / totalValue
local realStaticFill = staticFillAmount * realFillPercent + fillOffset
viewRef.progressStaticFillOffset.fillAmount = realStaticFill
local posX = pRectTransform.rect.width * realFill + posXOffset
pStaticRectTransform.anchoredPosition = Vector2(posX, 0)
else
viewRef.progressStaticFillOffset.gameObject:SetActiveIfNecessary(false)
end
end
AdventureLevelUpCtrl._ClearOrRecoverScreen = HL.Method(HL.Boolean) << function(self, isClear)
if isClear then
if self.m_clearScreenKey <= 0 then
self.m_clearScreenKey = UIManager:ClearScreen({ PanelId.AdventureLevelUp })
end
else
if self.m_clearScreenKey > 0 then
UIManager:RecoverScreen(self.m_clearScreenKey)
self.m_clearScreenKey = -1
end
end
end
AdventureLevelUpCtrl._SetFreezeWorld = HL.Method(HL.Boolean) << function(self, isFreeze)
if self.m_isWorldFreeze == isFreeze then
return
end
self.m_isWorldFreeze = isFreeze
if isFreeze then
Notify(MessageConst.OPEN_FREEZE_WORLD_PANEL, "AdventureLevelUpCtrl")
else
Notify(MessageConst.CLOSE_FREEZE_WORLD_PANEL, "AdventureLevelUpCtrl")
end
end
HL.Commit(AdventureLevelUpCtrl)