lines-lua/menu.lua
2025-10-23 16:32:58 +03:00

44 lines
1.3 KiB
Lua

require 'config'
require 'button'
require 'menu.state'
-- Menu handler
---@class Menu
---@field states MenuState[]
---@field current_state MenuStateIndex
Menu = {
states = {
-- Main menu
[MenuStateIndex.start] = require 'menu.start',
-- Pause menu
[MenuStateIndex.pause] = require 'menu.pause',
-- Level selector
[MenuStateIndex.levels] = require 'menu.levels',
-- Level completed menu
[MenuStateIndex.completed] = require 'menu.completed',
-- Empty state
[MenuStateIndex.hidden] = MenuState:new()
},
current_state = MenuStateIndex.start
}
-- Draw current state
function Menu:draw()
self.states[self.current_state]:draw()
end
-- Update current state
---@param dt number
---@param point Point
---@param pressed boolean
function Menu:update( dt, point, pressed )
self.states[self.current_state]:update( dt, point, pressed )
end
function Menu.updateCellSize()
local width, height = love.graphics.getDimensions()
local gridX, gridY = GameGrid.size:coords();
local isWidthBased = (width / height) / (gridX / gridY)
Config.cellSize = math.floor(isWidthBased and height / gridY or width / gridX)
love.graphics.setLineWidth( Config.cellSize * Config.lineWidth )
end