Compare commits

..

No commits in common. "e04b8e523ebdb5b7564f8f42653f61fb57370259" and "a47e14ffcaf0dde3f66f6e93157208e529c765ff" have entirely different histories.

4 changed files with 10 additions and 61 deletions

View file

@ -6,7 +6,7 @@ require 'makegrid'
---@field current integer ---@field current integer
LevelHandler = { LevelHandler = {
levels = { levels = {
'test2', 'test', 'test3' 'test3', 'test2', 'test'
}, },
current = 1, current = 1,
} }
@ -18,22 +18,13 @@ function LevelHandler:next()
if self.current > #self.levels then if self.current > #self.levels then
self.current = 1 self.current = 1
end end
local levelPath = 'levels/' .. self.levels[self.current] local levelPath = string.format('levels/%s', self.levels[self.current])
return MakeGrid( require( levelPath ) ) return MakeGrid( require( levelPath ) )
end end
-- Returns first level -- Returns first level
---@return Grid ---@return Grid
function LevelHandler:first() function LevelHandler:first()
local levelPath = 'levels/' .. self.levels[1] local levelPath = string.format('levels/%s', 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]
return MakeGrid( require( levelPath ) ) return MakeGrid( require( levelPath ) )
end end

View file

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

View file

@ -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)

View file

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