ExperimentalGear/scripts/api/page/pagemanager.lua

60 lines
1.5 KiB
Lua

require "common.globals"
require "common.class"
---@type PageManager
local instance = nil
---@class PageManager
---@field pages Page[]
local PageManager = {
__name = "PageManager"
}
---Create new PageManager instance
---@param params? PageManager
---@return PageManager
function PageManager.new(params)
params = params or {}
local self = CreateInstance(PageManager, params)
self.pages = params.pages or {}
return self
end
---Get PageManager instance
---@return PageManager
function PageManager.get()
if not instance then
instance = PageManager.new()
end
return instance
end
---Store page with default name
---@param page Page
function PageManager:storePage(page)
if self.pages[page.__name] then
game.Log(self.__name .. ":storePage() : page `" .. tostring(page) .. "` already stored, overwriting...", game.LOGGER_WARNING)
else
game.Log(self.__name .. ":storePage() : stored page `" .. tostring(page) .. "` with key '" .. page.__name .. "'", game.LOGGER_DEBUG)
end
self.pages[page.__name] = page
end
---Get page by name or by class (default name)
---@param page string|Page
function PageManager:getPage(page)
if type(page) == "string" then
return self.pages[page]
elseif type(page) == "table" and page.__name then
return self.pages[page.__name]
end
game.Log(self.__name .. ":getPage() : invalid parameter (" .. tostring(page) .. ")", game.LOGGER_WARNING)
return nil
end
return PageManager