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

134 lines
3.6 KiB
Lua

local uiCtrl = require_ex('UI/Panels/Base/UICtrl')
local PANEL_ID = PanelId.MapRegionToast
local ELevelAreaPriority = CS.Beyond.Gameplay.ELevelAreaPriority
MapRegionToastCtrl = HL.Class('MapRegionToastCtrl', uiCtrl.UICtrl)
local MAP_REGION_MAIN_HUD_TOAST_TYPE = "MapRegionToast"
MapRegionToastCtrl.s_messages = HL.StaticField(HL.Table) << {
[MessageConst.INTERRUPT_MAIN_HUD_ACTION_QUEUE] = "OnToastInterrupted",
}
MapRegionToastCtrl.RequestShowMapRegionToast = HL.StaticMethod(HL.Table) << function(args)
if GameWorld.worldInfo.curLevelId == Tables.spaceshipConst.visitSceneName then
return
end
local priority, isFirst, mainTitle, subTitle, depthText = unpack(args)
local toastInfo = {
priority = priority,
isFirst = isFirst,
mainTitle = mainTitle,
subTitle = subTitle,
depthText = depthText
}
LuaSystemManager.mainHudActionQueue:AddRequest(MAP_REGION_MAIN_HUD_TOAST_TYPE, function()
MapRegionToastCtrl._OnShowMapRegionToast(toastInfo)
end)
end
MapRegionToastCtrl.ClearAllMapRegionToast = HL.StaticMethod() << function()
if LuaSystemManager.mainHudActionQueue then
LuaSystemManager.mainHudActionQueue:RemoveActionsOfType(MAP_REGION_MAIN_HUD_TOAST_TYPE)
end
end
MapRegionToastCtrl._OnShowMapRegionToast = HL.StaticMethod(HL.Table) << function(toastInfo)
local self = UIManager:AutoOpen(PANEL_ID)
self:DisplayToast(toastInfo)
end
MapRegionToastCtrl.OnToastInterrupted = HL.Method() << function(self)
self.view.animationWrapper:ClearTween(false)
self:Hide()
end
MapRegionToastCtrl.OnCreate = HL.Override(HL.Any) << function(self, args)
end
MapRegionToastCtrl.OnClose = HL.Override() << function(self)
end
MapRegionToastCtrl.DisplayToast = HL.Method(HL.Table) << function(self, toastInfo)
local toastView = self.view.bigMapNode
local toastAnimName = "map_toast_inout"
local toastAudKey = "Au_UI_Banner_Region_big_Open"
if toastInfo.priority == ELevelAreaPriority.Override then
toastAnimName = "map_region_toast_normal_inout"
toastView = self.view.smallMapNode
toastAudKey = "Au_UI_Banner_Region_Side_Open"
if toastInfo.isFirst then
toastAnimName = "map_region_toast_first_inout"
toastView = self.view.firstSmallMapNode
toastAudKey = "Au_UI_Banner_Region_Main_Open"
end
toastView.numberTxt.text = toastInfo.depthText
else
local success, activeIds, releaseIds = GameInstance.player.remoteFactory:TryGetCacheChangedChapterIds()
if success then
toastAnimName = "map_toast_inout_with_chapter_changed"
self.view.systemStateNode.activeTxt.text = Tables.domainDataTable[activeIds].domainName
self.view.systemStateNode.releaseTxt.text = Tables.domainDataTable[releaseIds].domainName
self.view.systemStateNode.activeIcon:LoadSprite(UIConst.UI_SPRITE_SETTLEMENT, Tables.domainDataTable[activeIds].domainIcon)
self.view.systemStateNode.releaseIcon:LoadSprite(UIConst.UI_SPRITE_SETTLEMENT, Tables.domainDataTable[releaseIds].domainIcon)
toastAudKey = "Au_UI_Toast_FactoryStartStopWork_Open"
end
end
toastView.nameTxt.text = toastInfo.mainTitle
toastView.descTxt.text = toastInfo.subTitle
self.view.animationWrapper:Play(toastAnimName, function()
self:Hide()
Notify(MessageConst.ON_ONE_MAIN_HUD_ACTION_FINISHED, MAP_REGION_MAIN_HUD_TOAST_TYPE)
end)
AudioManager.PostEvent(toastAudKey)
end
HL.Commit(MapRegionToastCtrl)