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

122 lines
3.3 KiB
Lua

local uiCtrl = require_ex('UI/Panels/Base/UICtrl')
local PANEL_ID = PanelId.SettlementCommonToast
local settlementSystem = GameInstance.player.settlementSystem
SettlementCommonToastCtrl = HL.Class('SettlementCommonToastCtrl', uiCtrl.UICtrl)
local MAIN_HUD_TOAST_TYPE = "SettlementToast"
SettlementCommonToastCtrl.m_timerId = HL.Field(HL.Any) << nil
SettlementCommonToastCtrl.s_messages = HL.StaticField(HL.Table) << {
[MessageConst.INTERRUPT_MAIN_HUD_ACTION_QUEUE] = 'InterruptMainHudActionQueue',
}
SettlementCommonToastCtrl.OnCreate = HL.Override(HL.Any) << function(self, arg)
end
SettlementCommonToastCtrl._OnShowLink = HL.StaticMethod(HL.Table) << function(args)
local inQueue = args[4]
if inQueue then
LuaSystemManager.mainHudActionQueue:AddRequest(MAIN_HUD_TOAST_TYPE, function()
SettlementCommonToastCtrl._InternalOnShowLink(args, true)
end)
else
SettlementCommonToastCtrl._InternalOnShowLink(args, false)
end
end
SettlementCommonToastCtrl._InternalOnShowLink = HL.StaticMethod(HL.Table, HL.Boolean) << function(args, inQueue)
local self = UIManager:AutoOpen(PANEL_ID)
self.view.linkNode.gameObject:SetActiveIfNecessary(true)
self.view.levelUpNode.gameObject:SetActiveIfNecessary(false)
local settlementId, mainText, subText = args[1], args[2], args[3]
if subText then
subText = Language[subText]
subText = subText or Language.LUA_SETTLEMENT_LINK_AND_UNLOCK
self.view.unlockSubText.text = subText
end
if settlementId ~= nil then
mainText = mainText or Tables.settlementBasicDataTable[settlementId].settlementName
end
self.view.unlockMainText.text = mainText
self.view.interlinkageAniWrapper:Play("unlock_toast", function()
self:PlayAnimationOutWithCallback(function()
self:Close()
if inQueue then
Notify(MessageConst.ON_ONE_MAIN_HUD_ACTION_FINISHED, MAIN_HUD_TOAST_TYPE)
end
end)
end)
AudioAdapter.PostEvent("Au_UI_Toast_SettlementCommonToastPanel_Unlock_Open")
end
SettlementCommonToastCtrl._OnShowUpgrade = HL.StaticMethod(HL.Table) << function(args)
local self = UIManager:AutoOpen(PANEL_ID)
self.view.linkNode.gameObject:SetActiveIfNecessary(false)
self.view.levelUpNode.gameObject:SetActiveIfNecessary(true)
local settlementId, mainText = unpack(args)
if settlementId ~= nil then
if not mainText then
AudioAdapter.PostEvent("Au_UI_Toast_SettlementCommonToastPanel_LevelUp_Open")
end
mainText = mainText or Tables.settlementBasicDataTable[settlementId].settlementName
local level = settlementSystem:GetSettlementLevel(settlementId)
self.view.levelText.text = tostring(level)
self.view.levelText2.text = tostring(level + 1)
self.view.textOpenLv.gameObject:SetActive(false)
end
self.view.levelUpMainText.text = mainText
self.view.levelUpAniWrapper:Play("level_up_toast", function()
self:PlayAnimationOutWithCallback(function()
self:Close()
end)
end)
end
SettlementCommonToastCtrl.InterruptMainHudActionQueue = HL.Method() << function(self)
self.animationWrapper:ClearTween(false)
self:Close()
end
HL.Commit(SettlementCommonToastCtrl)