53 lines
1 KiB
Lua
53 lines
1 KiB
Lua
-- Menu state class
|
|
---@class MenuState
|
|
---@field buttons Button[]
|
|
---@field text Text[]
|
|
MenuState = {
|
|
buttons = {},
|
|
text = {}
|
|
}
|
|
|
|
-- Factory function
|
|
---@param buttons Button[] | nil
|
|
---@param text Text[] | nil
|
|
---@return MenuState
|
|
function MenuState:new( buttons, text )
|
|
local state = {
|
|
buttons = buttons or MenuState.buttons,
|
|
text = text or MenuState.text
|
|
}
|
|
|
|
setmetatable( state, { __index = self } )
|
|
|
|
return state
|
|
end
|
|
|
|
-- Draw buttons
|
|
function MenuState:draw()
|
|
for _, button in ipairs(self.buttons) do
|
|
button:draw()
|
|
end
|
|
for _, txt in ipairs(self.text) do
|
|
txt:draw()
|
|
end
|
|
end
|
|
|
|
-- Update buttons
|
|
---@param dt number
|
|
---@param point Point
|
|
---@param pressed boolean
|
|
function MenuState:update( dt, point, pressed )
|
|
for _, button in pairs(self.buttons) do
|
|
button:update( dt, point, pressed )
|
|
end
|
|
end
|
|
|
|
---@enum MenuStateIndex
|
|
MenuStateIndex = {
|
|
start = 'start',
|
|
pause = 'pause',
|
|
levels = 'levels',
|
|
hidden = 'hidden',
|
|
completed = 'completed'
|
|
}
|
|
|