Added levels menu

This commit is contained in:
Alexey 2025-10-23 16:32:58 +03:00
commit e04b8e523e
3 changed files with 49 additions and 7 deletions

View file

@ -2,9 +2,6 @@ require 'config'
require 'button'
require 'menu.state'
-- Menu handler
---@class Menu
---@field states MenuState[]
@ -16,7 +13,7 @@ Menu = {
-- Pause menu
[MenuStateIndex.pause] = require 'menu.pause',
-- Level selector
[MenuStateIndex.levels] = MenuState:new(),
[MenuStateIndex.levels] = require 'menu.levels',
-- Level completed menu
[MenuStateIndex.completed] = require 'menu.completed',
-- Empty state

47
menu/levels.lua Normal file
View file

@ -0,0 +1,47 @@
require 'menu.state'
require 'button'
require 'text'
local common = require 'menu.common'
local size, margin = 60, 30
local levelSize = Point:new( size, size )
local yOffset = 160
local levelsPerLine = 8
local levelCount = #LevelHandler.levels
local buttons = {}
for i=1,levelCount do
local x = (size + margin) * (i % levelsPerLine)
local y = (size + margin) * math.floor(i / levelsPerLine) + yOffset
local button = Button:new(
Point:new(x, y),
levelSize,
tostring(i),
nil,
nil,
function()
GameGrid = LevelHandler:indexed(i)
Menu.updateCellSize()
Menu.current_state = MenuStateIndex.hidden
end
)
table.insert(buttons, button)
end
local exitToMenuButton = Button:new(
Point:new( 240, 40 ),
common.buttonSize,
'Return to menu',
nil,
nil,
function()
Menu.current_state = MenuStateIndex.start
end
)
table.insert(buttons, exitToMenuButton)
return MenuState:new(buttons)

View file

@ -16,9 +16,7 @@ local startButton = Button:new(
nil,
nil,
function()
Menu.current_state = MenuStateIndex.hidden
GameGrid = LevelHandler:first()
Menu.updateCellSize()
Menu.current_state = MenuStateIndex.levels
end
)