Added levels menu
This commit is contained in:
parent
fd1e314ec9
commit
e04b8e523e
3 changed files with 49 additions and 7 deletions
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