ExperimentalGear/scripts/titlescreen/common/page/page.lua

90 lines
2.1 KiB
Lua
Raw Normal View History

require("common.globals")
require("common.class")
---@class Page
---@field content Field[]
---@field viewHandler nil|PageView
local Page = {
__name = "Page",
}
---Create a new Page instance
---@param params? Page # initial parameters
---@return Page
function Page.new(params)
params = params or {}
--set default parameters
params.content = params.content or {}
params.viewHandler = params.viewHandler or nil
return CreateInstance(Page, params)
end
---Initialize Page
2022-05-22 03:05:24 +02:00
function Page:init()
self:onInit()
end
---Add field to page
---@param field Field
function Page:addField(field)
field.parent = self
table.insert(self.content, field)
end
---Refresh content values
function Page:refreshFields()
for _, field in ipairs(self.content) do
field.parent = self
end
end
---@param button integer # options are under the `game` table prefixed with `BUTTON`
function Page:handleButtonInput(button)
if button == game.BUTTON_BCK then
if self.viewHandler then
self.viewHandler:back()
end
end
end
---@param knob integer # `0` = Left, `1` = Right
---@param delta number # in radians, `-2*pi` to `0` (turning CCW) and `0` to `2*pi` (turning CW)
function Page:handleKnobInput(knob, delta) end
---@param x number
---@param y number
---@param button integer
function Page:handleMouseInput(x, y, button) end
2022-06-29 00:23:16 +02:00
---Event callback on page initialization
2022-05-22 03:05:24 +02:00
function Page:onInit() end
2022-06-29 00:23:16 +02:00
---Event callback on page invalidation
---@param reason? any # reason for the invalidation
function Page:onInvalidation(reason) end
2022-05-22 03:05:24 +02:00
---@param deltaTime number # frametime in seconds
function Page:drawBackground(deltaTime) end
---@param deltaTime number # frametime in seconds
function Page:drawContent(deltaTime)
for _, child in ipairs(self.content) do
child:render(deltaTime)
end
end
---@param deltaTime number # frametime in seconds
function Page:drawForeground(deltaTime) end
---@param deltaTime number # frametime in seconds
function Page:render(deltaTime)
self:drawBackground(deltaTime)
self:drawContent(deltaTime)
self:drawForeground(deltaTime)
end
2022-04-05 23:53:19 +02:00
return Page