diff --git a/levelhandler.lua b/levelhandler.lua index 8c5931c..ed7b874 100644 --- a/levelhandler.lua +++ b/levelhandler.lua @@ -6,7 +6,7 @@ require 'makegrid' ---@field current integer LevelHandler = { levels = { - 'test2', 'test', 'test3' + 'test3', 'test2', 'test' }, current = 1, } @@ -18,22 +18,13 @@ function LevelHandler:next() if self.current > #self.levels then self.current = 1 end - local levelPath = 'levels/' .. self.levels[self.current] + local levelPath = string.format('levels/%s', self.levels[self.current]) return MakeGrid( require( levelPath ) ) end -- Returns first level ---@return Grid function LevelHandler:first() - local levelPath = 'levels/' .. self.levels[1] - return MakeGrid( require( levelPath ) ) -end - --- Returns level by its index in table ----@param i number ----@return Grid -function LevelHandler:indexed(i) - self.current = i - local levelPath = 'levels/' .. self.levels[self.current] + local levelPath = string.format('levels/%s', self.levels[1]) return MakeGrid( require( levelPath ) ) end diff --git a/menu.lua b/menu.lua index 8906354..fda11e6 100644 --- a/menu.lua +++ b/menu.lua @@ -2,6 +2,9 @@ require 'config' require 'button' require 'menu.state' + + + -- Menu handler ---@class Menu ---@field states MenuState[] @@ -13,7 +16,7 @@ Menu = { -- Pause menu [MenuStateIndex.pause] = require 'menu.pause', -- Level selector - [MenuStateIndex.levels] = require 'menu.levels', + [MenuStateIndex.levels] = MenuState:new(), -- Level completed menu [MenuStateIndex.completed] = require 'menu.completed', -- Empty state diff --git a/menu/levels.lua b/menu/levels.lua deleted file mode 100644 index 463566e..0000000 --- a/menu/levels.lua +++ /dev/null @@ -1,47 +0,0 @@ -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) diff --git a/menu/start.lua b/menu/start.lua index 8630976..8693b68 100644 --- a/menu/start.lua +++ b/menu/start.lua @@ -16,7 +16,9 @@ local startButton = Button:new( nil, nil, function() - Menu.current_state = MenuStateIndex.levels + Menu.current_state = MenuStateIndex.hidden + GameGrid = LevelHandler:first() + Menu.updateCellSize() end )