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