2022-04-24 15:07:52 +02:00
|
|
|
require("common.globals")
|
2022-04-03 19:43:50 +02:00
|
|
|
require("common.class")
|
|
|
|
|
2022-04-03 01:35:41 +02:00
|
|
|
---@class Page
|
|
|
|
---@field content Field[]
|
|
|
|
---@field viewHandler nil|PageView
|
|
|
|
local Page = {
|
2022-05-06 01:02:30 +02:00
|
|
|
__name = "Page",
|
2022-04-03 01:35:41 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
---Create a new Page instance
|
2022-05-06 01:02:30 +02:00
|
|
|
---@param params? Page # initial parameters
|
2022-04-03 01:35:41 +02:00
|
|
|
---@return Page
|
2022-05-04 03:34:37 +02:00
|
|
|
function Page.new(params)
|
|
|
|
params = params or {}
|
2022-04-03 01:35:41 +02:00
|
|
|
|
2022-05-04 03:34:37 +02:00
|
|
|
--set default parameters
|
2022-04-03 01:35:41 +02:00
|
|
|
|
2022-05-04 03:34:37 +02:00
|
|
|
params.content = params.content or {}
|
|
|
|
params.viewHandler = params.viewHandler or nil
|
2022-04-03 01:35:41 +02:00
|
|
|
|
2022-05-04 03:34:37 +02:00
|
|
|
return CreateInstance(Page, params)
|
2022-04-11 18:47:26 +02:00
|
|
|
end
|
|
|
|
|
2022-05-04 03:34:37 +02:00
|
|
|
---Initialize Page
|
2022-05-22 03:05:24 +02:00
|
|
|
function Page:init()
|
|
|
|
self:onInit()
|
|
|
|
end
|
2022-05-04 03:34:37 +02:00
|
|
|
|
2022-04-03 01:35:41 +02:00
|
|
|
---Add field to page
|
|
|
|
---@param field Field
|
|
|
|
function Page:addField(field)
|
|
|
|
field.parent = self
|
|
|
|
table.insert(self.content, field)
|
|
|
|
end
|
|
|
|
|
2022-04-03 19:43:50 +02:00
|
|
|
---Refresh content values
|
|
|
|
function Page:refreshFields()
|
|
|
|
for _, field in ipairs(self.content) do
|
|
|
|
field.parent = self
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2022-04-12 23:45:28 +02:00
|
|
|
---@param button integer # options are under the `game` table prefixed with `BUTTON`
|
2022-04-03 01:35:41 +02:00
|
|
|
function Page:handleButtonInput(button)
|
|
|
|
if button == game.BUTTON_BCK then
|
|
|
|
if self.viewHandler then
|
|
|
|
self.viewHandler:back()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2022-04-12 23:45:28 +02:00
|
|
|
---@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)
|
2022-04-03 01:35:41 +02:00
|
|
|
function Page:handleKnobInput(knob, delta) end
|
|
|
|
|
2022-05-04 03:34:37 +02:00
|
|
|
---@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
|
|
|
|
2022-04-12 23:45:28 +02:00
|
|
|
---@param deltaTime number # frametime in seconds
|
2022-04-15 04:54:30 +02:00
|
|
|
function Page:drawBackground(deltaTime) end
|
2022-04-03 01:35:41 +02:00
|
|
|
|
2022-04-15 04:54:30 +02:00
|
|
|
---@param deltaTime number # frametime in seconds
|
|
|
|
function Page:drawContent(deltaTime)
|
2022-04-03 01:35:41 +02:00
|
|
|
for _, child in ipairs(self.content) do
|
|
|
|
child:render(deltaTime)
|
|
|
|
end
|
2022-04-15 04:54:30 +02:00
|
|
|
end
|
2022-04-03 01:35:41 +02:00
|
|
|
|
2022-04-15 04:54:30 +02:00
|
|
|
---@param deltaTime number # frametime in seconds
|
|
|
|
function Page:drawForeground(deltaTime) end
|
2022-04-03 01:35:41 +02:00
|
|
|
|
2022-04-15 04:54:30 +02:00
|
|
|
---@param deltaTime number # frametime in seconds
|
|
|
|
function Page:render(deltaTime)
|
|
|
|
self:drawBackground(deltaTime)
|
|
|
|
self:drawContent(deltaTime)
|
|
|
|
self:drawForeground(deltaTime)
|
2022-04-03 01:35:41 +02:00
|
|
|
end
|
|
|
|
|
2022-04-05 23:53:19 +02:00
|
|
|
return Page
|