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
|