ExperimentalGear/scripts/titlescreen/service/page.lua

59 lines
1.4 KiB
Lua
Raw Normal View History

require("titlescreen.service.common")
---@class Page
local Page = {
title = "",
selectedIdx = 0,
fields = {}, ---@type Field[]
footer = PAGE_DEFAULT_FOOTER,
viewHandler = nil ---@type PageView
}
function Page:new(o, parent, title)
o = o or {}
setmetatable(o, self)
self.__index = self
self.parent = parent or nil
self.title = title or ""
return o
end
---Add field to page
---@param field Field
function Page:addField(field)
field.parent = self
table.insert(self.fields, field)
end
function Page:handleButtonInput(button)
if self.fields[selectedIndex] and self.fields[selectedIndex].handleButtonInput then
self.fields[selectedIndex].handleButtonInput(button)
else
HandlePageButtonInput(self, button)
end
end
function Page:handleKnobInput(knob, delta)
if self.fields[selectedIndex] and self.fields[selectedIndex].handleKnobInput then
self.fields[selectedIndex].handleKnobInput(knob, delta)
end
end
function Page:render(deltaTime)
--render page stuff
---background
---header
---footer
if self.fields[selectedIndex] and self.fields[selectedIndex].drawCustomFooter then
self.fields[selectedIndex].drawCustomFooter()
else
DrawPageFooter(self.footer)
end
--render children
for _, field in ipairs(self.fields) do
field.render(deltaTime)
end
end
return Page