Added level completed menu state and removed debug prints

This commit is contained in:
Alexey 2025-10-22 15:39:03 +03:00
commit 0eb2138a75
2 changed files with 43 additions and 27 deletions

View file

@ -27,11 +27,8 @@ function love.update( dt )
if InMenu then
Menu:update( dt, Point:new( Mouse.x, Mouse.y ), Mouse.pressed )
else
if Input:actionReleased( 'nextlevel' ) then
if GameGrid:isCompleted() then
GameGrid = LevelHandler:next()
Menu.updateCellSize()
end
if GameGrid:isCompleted() and not Mouse.pressed then
Menu.current_state = MenuStateIndex.completed
end
end
-- Switch menu state or exit
@ -55,19 +52,5 @@ function love.draw()
else
love.graphics.setLineWidth( Config.cellSize * Config.lineWidth )
GameGrid:draw()
local text = string.format( "%d:%d global\n%d:%d local\n%d:%d from start", Mouse.x, Mouse.y, Mouse.point.x, Mouse.point.y, Mouse.startX - Mouse.x, Mouse.startY - Mouse.y )
love.graphics.print( text, 64, 256 )
if Mouse.dragged then
love.graphics.print( "drag", 64, 300 )
end
if Mouse.lastLine ~= nil then
love.graphics.print( tostring( Mouse.lastLine ), 128, 300 )
end
if GameGrid:isCompleted() then
love.graphics.print( "Grid completed. Press space to proceed to next", 64, 320 )
end
end
end

View file

@ -43,12 +43,17 @@ MenuStateIndex = {
start = 'start',
pause = 'pause',
levels = 'levels',
hidden = 'hidden'
hidden = 'hidden',
completed = 'completed'
}
local buttonTopPos = Point:new( 240, 120 )
local buttonBotPos = Point:new( 240, 240 )
local buttonSize = Point:new( 320, 80 )
local startButton = Button:new(
Point:new( 240, 120 ),
Point:new( 320, 80 ),
buttonTopPos,
buttonSize,
'Start',
nil,
nil,
@ -60,8 +65,8 @@ local startButton = Button:new(
)
local exitToMenuButton = Button:new(
Point:new( 240, 200 ),
Point:new( 320, 80 ),
buttonBotPos,
buttonSize,
'Return to menu',
nil,
nil,
@ -71,8 +76,8 @@ local exitToMenuButton = Button:new(
)
local exitGameButton = Button:new(
Point:new( 240, 240 ),
Point:new( 320, 80 ),
buttonBotPos,
buttonSize,
'Exit',
nil,
nil,
@ -81,6 +86,30 @@ local exitGameButton = Button:new(
end
)
local nextLevelButton = Button:new(
buttonTopPos,
buttonSize,
'Next level',
nil,
nil,
function()
GameGrid = LevelHandler:next()
Menu.updateCellSize()
Menu.current_state = MenuStateIndex.hidden
end
)
local backToGameButton = Button:new(
buttonTopPos,
buttonSize,
'Continue',
nil,
nil,
function()
Menu.current_state = MenuStateIndex.hidden
end
)
-- Menu handler
---@class Menu
---@field states MenuState[]
@ -93,11 +122,15 @@ Menu = {
}),
-- Pause menu
[MenuStateIndex.pause] = MenuState:new({
exitToMenuButton
backToGameButton, exitToMenuButton
}),
-- Level selector
[MenuStateIndex.levels] = MenuState:new({
}),
-- Level completed menu
[MenuStateIndex.completed] = MenuState:new({
nextLevelButton, exitToMenuButton
}),
-- Empty state
[MenuStateIndex.hidden] = MenuState:new()
},