40 lines
757 B
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 |