Compare commits
2 commits
a47e14ffca
...
e04b8e523e
| Author | SHA1 | Date | |
|---|---|---|---|
| e04b8e523e | |||
| fd1e314ec9 |
4 changed files with 61 additions and 10 deletions
|
|
@ -6,7 +6,7 @@ require 'makegrid'
|
||||||
---@field current integer
|
---@field current integer
|
||||||
LevelHandler = {
|
LevelHandler = {
|
||||||
levels = {
|
levels = {
|
||||||
'test3', 'test2', 'test'
|
'test2', 'test', 'test3'
|
||||||
},
|
},
|
||||||
current = 1,
|
current = 1,
|
||||||
}
|
}
|
||||||
|
|
@ -18,13 +18,22 @@ 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 = string.format('levels/%s', self.levels[self.current])
|
local levelPath = 'levels/' .. 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 = string.format('levels/%s', self.levels[1])
|
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]
|
||||||
return MakeGrid( require( levelPath ) )
|
return MakeGrid( require( levelPath ) )
|
||||||
end
|
end
|
||||||
|
|
|
||||||
5
menu.lua
5
menu.lua
|
|
@ -2,9 +2,6 @@ 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[]
|
||||||
|
|
@ -16,7 +13,7 @@ Menu = {
|
||||||
-- Pause menu
|
-- Pause menu
|
||||||
[MenuStateIndex.pause] = require 'menu.pause',
|
[MenuStateIndex.pause] = require 'menu.pause',
|
||||||
-- Level selector
|
-- Level selector
|
||||||
[MenuStateIndex.levels] = MenuState:new(),
|
[MenuStateIndex.levels] = require 'menu.levels',
|
||||||
-- Level completed menu
|
-- Level completed menu
|
||||||
[MenuStateIndex.completed] = require 'menu.completed',
|
[MenuStateIndex.completed] = require 'menu.completed',
|
||||||
-- Empty state
|
-- Empty state
|
||||||
|
|
|
||||||
47
menu/levels.lua
Normal file
47
menu/levels.lua
Normal 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)
|
||||||
|
|
@ -16,9 +16,7 @@ local startButton = Button:new(
|
||||||
nil,
|
nil,
|
||||||
nil,
|
nil,
|
||||||
function()
|
function()
|
||||||
Menu.current_state = MenuStateIndex.hidden
|
Menu.current_state = MenuStateIndex.levels
|
||||||
GameGrid = LevelHandler:first()
|
|
||||||
Menu.updateCellSize()
|
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue