Files
StellaSora_DataLua/lua/gamecore/module/messageboxmanager.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

118 lines
4.2 KiB
Lua

local MessageBoxManager = {}
local objMessageBoxPanel, objPopupTipsPanel, objSideBannerPanel, objOrderWaitPanel
local OnEvent_Open = function(_, mapMsg, sLanguageId)
if type(mapMsg) == "string" then
mapMsg = {
nType = AllEnum.MessageBox.Tips,
bPositive = false,
sContent = mapMsg
}
elseif mapMsg == true then
mapMsg = {
nType = AllEnum.MessageBox.Tips,
bPositive = true,
sContent = ConfigTable.GetUIText(sLanguageId)
}
end
if mapMsg.nType == AllEnum.MessageBox.Tips then
if objPopupTipsPanel == nil then
local PopupTipsPanel = require("Game.UI.MessageBoxEx.PopupTipsPanel")
objPopupTipsPanel = PopupTipsPanel.new(AllEnum.UI_SORTING_ORDER.MessageBoxOverlay, 0, mapMsg)
objPopupTipsPanel:_PreEnter()
objPopupTipsPanel:_Enter()
else
EventManager.Hit("ContinuePopupTips", mapMsg)
end
elseif objMessageBoxPanel == nil then
local MessageBoxPanel = require("Game.UI.MessageBoxEx.MessageBoxPanel")
objMessageBoxPanel = MessageBoxPanel.new(AllEnum.UI_SORTING_ORDER.MessageBox, 0, mapMsg)
objMessageBoxPanel:_PreEnter()
objMessageBoxPanel:_Enter()
else
EventManager.Hit("ContinueMessageBox", mapMsg)
end
end
local OnEvent_ClosePopupTips = function(_)
if objPopupTipsPanel then
objPopupTipsPanel:_PreExit()
objPopupTipsPanel:_Exit()
objPopupTipsPanel:_Destroy()
objPopupTipsPanel = nil
end
end
local OnEvent_CloseMessageBox = function(_)
if objMessageBoxPanel then
objMessageBoxPanel:_PreExit()
objMessageBoxPanel:_Exit()
objMessageBoxPanel:_Destroy()
objMessageBoxPanel = nil
end
end
local OpenSideBannerPanel = function(mapMsg)
local SideBannerPanel = require("Game.UI.SideBanner.SideBannerPanel")
objSideBannerPanel = SideBannerPanel.new(AllEnum.UI_SORTING_ORDER.MessageBoxOverlay, 0, mapMsg)
objSideBannerPanel:_PreEnter()
objSideBannerPanel:_Enter()
end
local OnEvent_CloseSideBanner = function(_)
if objSideBannerPanel then
objSideBannerPanel:_PreExit()
objSideBannerPanel:_Exit()
objSideBannerPanel:_Destroy()
objSideBannerPanel = nil
end
end
local OnEvent_OpenSideBanner = function(_, mapMsg)
if objSideBannerPanel == nil then
OpenSideBannerPanel(mapMsg)
else
OnEvent_CloseSideBanner()
OpenSideBannerPanel(mapMsg)
end
end
local OpenOrderWaitPanel = function(mapMsg)
local OrderWaitPanel = require("Game.UI.Mall.OrderWaitPanel")
objOrderWaitPanel = OrderWaitPanel.new(AllEnum.UI_SORTING_ORDER.MessageBox, 0, mapMsg)
objOrderWaitPanel:_PreEnter()
objOrderWaitPanel:_Enter()
end
local OnEvent_CloseOrderWait = function(_)
if objOrderWaitPanel then
objOrderWaitPanel:_PreExit()
objOrderWaitPanel:_Exit()
objOrderWaitPanel:_Destroy()
objOrderWaitPanel = nil
end
end
local OnEvent_OpenOrderWait = function(_, mapMsg)
if objOrderWaitPanel == nil then
OpenOrderWaitPanel(mapMsg)
else
OnEvent_CloseOrderWait()
OpenOrderWaitPanel(mapMsg)
end
end
local function Uninit(_)
EventManager.Remove(EventId.OpenMessageBox, MessageBoxManager, OnEvent_Open)
EventManager.Remove(EventId.CloseMessageBox, MessageBoxManager, OnEvent_CloseMessageBox)
EventManager.Remove("OpenSideBanner", MessageBoxManager, OnEvent_OpenSideBanner)
EventManager.Remove("CloseSideBanner", MessageBoxManager, OnEvent_CloseSideBanner)
EventManager.Remove("OpenOrderWait", MessageBoxManager, OnEvent_OpenOrderWait)
EventManager.Remove("CloseOrderWait", MessageBoxManager, OnEvent_CloseOrderWait)
EventManager.Remove(EventId.CSLuaManagerShutdown, MessageBoxManager, Uninit)
end
function MessageBoxManager.CheckOrderWaitOpen()
return objOrderWaitPanel ~= nil
end
function MessageBoxManager.Init()
EventManager.Add(EventId.OpenMessageBox, MessageBoxManager, OnEvent_Open)
EventManager.Add(EventId.CloseMessageBox, MessageBoxManager, OnEvent_CloseMessageBox)
EventManager.Add(EventId.ClosePopupTips, MessageBoxManager, OnEvent_ClosePopupTips)
EventManager.Add("OpenSideBanner", MessageBoxManager, OnEvent_OpenSideBanner)
EventManager.Add("CloseSideBanner", MessageBoxManager, OnEvent_CloseSideBanner)
EventManager.Add("OpenOrderWait", MessageBoxManager, OnEvent_OpenOrderWait)
EventManager.Add("CloseOrderWait", MessageBoxManager, OnEvent_CloseOrderWait)
EventManager.Add(EventId.CSLuaManagerShutdown, MessageBoxManager, Uninit)
end
return MessageBoxManager