UIM/src/Shared/Modules/Managers/UIManager/init.lua
2024-04-30 21:40:21 +02:00

53 lines
No EOL
1.1 KiB
Lua

local replicated = game:GetService("ReplicatedStorage")
local trove = require(replicated.Modules.Utility.Trove)
local types = require(script.Types)
local manager: types.Manager = {
Packages = {Trove = trove},
Windows = {
Open = {},
Stored = {},
},
} :: types.Manager
function manager:GetWindow(name: string)
return self.Windows.Stored[name]
end
function manager:OpenWindow(window: types.Window)
window:Build(self)
window:Open()
self.Windows.Open[window.Name] = window
end
function manager:CloseWindow(window: types.Window)
window:Close()
window:Remove()
self.Windows.Open[window.Name] = nil
end
function manager:Build(source: { ModuleScript })
self:Clean()
for _, module: ModuleScript in source do
local window: types.Window = require(module) :: types.Window
self.Windows.Stored[window.Name] = window
end
end
function manager:Clean()
for _, window in self.Windows.Open do
window:Remove()
end
self.Windows = {
Open = {},
Stored = {},
}
end
return manager