diff --git a/main.lua b/main.lua index 2c0533b..a1ca148 100644 --- a/main.lua +++ b/main.lua @@ -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 diff --git a/menu.lua b/menu.lua index 020322d..9a855d0 100644 --- a/menu.lua +++ b/menu.lua @@ -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() },