mirror of
https://github.com/SashLilac/cambridge.git
synced 2025-04-19 15:52:56 -05:00
Made the menu scroll up and down when it overflows.
This commit is contained in:
parent
901f7f2d12
commit
7fa0e60145
@ -5,6 +5,8 @@ ModeSelectScene.title = "Game Start"
|
|||||||
current_mode = 1
|
current_mode = 1
|
||||||
current_ruleset = 1
|
current_ruleset = 1
|
||||||
|
|
||||||
|
MAX_MODES = 19
|
||||||
|
|
||||||
game_modes = {
|
game_modes = {
|
||||||
require 'tetris.modes.marathon_2020',
|
require 'tetris.modes.marathon_2020',
|
||||||
require 'tetris.modes.survival_2020',
|
require 'tetris.modes.survival_2020',
|
||||||
@ -53,38 +55,58 @@ end
|
|||||||
function ModeSelectScene:update()
|
function ModeSelectScene:update()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function getCursorHeight(x)
|
||||||
|
return 78 + 20 * x
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function ModeSelectScene:drawList(name, items, cursor, x)
|
||||||
|
local start, finish
|
||||||
|
if table.getn(items) < MAX_MODES then
|
||||||
|
start = 1
|
||||||
|
finish = table.getn(items)
|
||||||
|
else
|
||||||
|
if cursor < 10 then
|
||||||
|
start = 1
|
||||||
|
finish = 19
|
||||||
|
elseif cursor > table.getn(items) - 9 then
|
||||||
|
start = table.getn(items) - 18
|
||||||
|
finish = table.getn(items)
|
||||||
|
else
|
||||||
|
start = cursor - 9
|
||||||
|
finish = cursor + 9
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if self.menu_state.select == name then
|
||||||
|
love.graphics.setColor(1, 1, 1, 0.5)
|
||||||
|
else
|
||||||
|
love.graphics.setColor(1, 1, 1, 0.25)
|
||||||
|
end
|
||||||
|
love.graphics.rectangle("fill", x, getCursorHeight(cursor - start), 240, 22)
|
||||||
|
|
||||||
|
love.graphics.setColor(1, 1, 1, 1)
|
||||||
|
|
||||||
|
for idx = start, finish do
|
||||||
|
local item = items[idx]
|
||||||
|
love.graphics.printf(item.name, x + 20, 80 + 20 * (idx - start), 200, "left")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
function ModeSelectScene:render()
|
function ModeSelectScene:render()
|
||||||
|
love.graphics.setFont(font_3x5_2)
|
||||||
|
|
||||||
love.graphics.draw(
|
love.graphics.draw(
|
||||||
backgrounds[0],
|
backgrounds[0],
|
||||||
0, 0, 0,
|
0, 0, 0,
|
||||||
0.5, 0.5
|
0.5, 0.5
|
||||||
)
|
)
|
||||||
|
|
||||||
if self.menu_state.select == "mode" then
|
love.graphics.draw(misc_graphics["select_mode"], 20, 30)
|
||||||
love.graphics.setColor(1, 1, 1, 0.5)
|
|
||||||
elseif self.menu_state.select == "ruleset" then
|
|
||||||
love.graphics.setColor(1, 1, 1, 0.25)
|
|
||||||
end
|
|
||||||
love.graphics.rectangle("fill", 20, 78 + 20 * self.menu_state.mode, 240, 22)
|
|
||||||
|
|
||||||
if self.menu_state.select == "mode" then
|
self:drawList("mode", game_modes, self.menu_state.mode, 20)
|
||||||
love.graphics.setColor(1, 1, 1, 0.25)
|
self:drawList("ruleset", rulesets, self.menu_state.ruleset, 320)
|
||||||
elseif self.menu_state.select == "ruleset" then
|
|
||||||
love.graphics.setColor(1, 1, 1, 0.5)
|
|
||||||
end
|
|
||||||
love.graphics.rectangle("fill", 340, 78 + 20 * self.menu_state.ruleset, 200, 22)
|
|
||||||
|
|
||||||
love.graphics.setColor(1, 1, 1, 1)
|
|
||||||
|
|
||||||
love.graphics.draw(misc_graphics["select_mode"], 20, 40)
|
|
||||||
|
|
||||||
love.graphics.setFont(font_3x5_2)
|
|
||||||
for idx, mode in pairs(game_modes) do
|
|
||||||
love.graphics.printf(mode.name, 40, 80 + 20 * idx, 200, "left")
|
|
||||||
end
|
|
||||||
for idx, ruleset in pairs(rulesets) do
|
|
||||||
love.graphics.printf(ruleset.name, 360, 80 + 20 * idx, 160, "left")
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function ModeSelectScene:onKeyPress(e)
|
function ModeSelectScene:onKeyPress(e)
|
||||||
|
Loading…
Reference in New Issue
Block a user