ExperimentalGear/scripts/titlescreen/screen.lua

70 lines
1.7 KiB
Lua
Raw Normal View History

require "common.globals"
require "common.class"
local PageView = require "api.page.pageview"
---@class Screen
---@field pageview PageView
local Screen = {
__name = "Screen"
}
---Create a new Screen instance
---@param params? Screen
---@return Screen
function Screen.new(params)
local self = CreateInstance(Screen, params)
self.pageview = PageView.new()
return self
end
---Initialize screen
function Screen:init()
end
---@param button integer # options are under the `game` table prefixed with `BUTTON`
function Screen:handleButtonInput(button)
if self.pageview:get() then
self.pageview:get():handleButtonInput(button)
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 Screen:handleKnobInput(knob, delta)
if self.pageview:get() then
self.pageview:get():handleKnobInput(knob, delta)
end
end
---@param x number
---@param y number
---@param button integer # `0` = Left, `1` = Right, `2` = Middle
function Screen:handleMouseInput(x, y, button)
if self.pageview:get() then
self.pageview:get():handleMouseInput(x, y, button)
end
end
---@class ScreenCallbackObject
---@field reason string # short string representation what the cb object is about
---@field hint any # hint object to help continue code flow in parent
---Event callback when screen gets deactivated (eg.: pageview is empty)
---@param obj ScreenCallbackObject
function Screen.onDeactivation(obj)
end
function Screen:deactivate()
self.onDeactivation({reason = "deactivation"})
end
---@param deltaTime number # frametime in seconds
function Screen:render(deltaTime)
self.pageview:render(deltaTime)
end
return Screen