ExperimentalGear/scripts/titlescreen/service/pageview.lua

40 lines
757 B
Lua

---@class PageView
local PageView = {
pageStack = {} ---@type Page[]
}
local function pushStack(t, o)
table.insert(t, 1, o)
end
local function popStack(t)
return table.remove(t, 1)
end
function PageView:new(o, rootPage)
o = o or {}
setmetatable(o, self)
self.__index = self
rootPage.viewHandler = self
pushStack(self.pageStack, rootPage)
end
---Navigate to page
---@param page Page
function PageView:navigate(page)
page.viewHandler = self
pushStack(self.pageStack, page)
end
function PageView:back()
self.pageStack[1].viewHandler = nil
popStack(self.pageStack)
end
function PageView:render(deltaTime)
if self.pageStack[1] then
self.pageStack[1].render(deltaTime)
end
end
return PageView