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