mirror of
https://github.com/SashLilac/cambridge.git
synced 2025-04-19 13:42:55 -05:00
I realized that playing at 4/8 for 800 levels straight is probably too much, so I made it that only the first 10 sections count for advancing the delay curve faster than it would normally go. Now only the last 500 levels can be at delay level 20.
135 lines
3.9 KiB
Lua
135 lines
3.9 KiB
Lua
local ModeSelectScene = Scene:extend()
|
|
|
|
ModeSelectScene.title = "Game Start"
|
|
|
|
current_mode = 1
|
|
current_ruleset = 1
|
|
|
|
game_modes = {
|
|
require 'tetris.modes.marathon_2020',
|
|
require 'tetris.modes.survival_2020',
|
|
require 'tetris.modes.strategy',
|
|
require 'tetris.modes.interval_training',
|
|
require 'tetris.modes.pacer_test',
|
|
require 'tetris.modes.demon_mode',
|
|
require 'tetris.modes.phantom_mania',
|
|
require 'tetris.modes.phantom_mania2',
|
|
require 'tetris.modes.phantom_mania_n',
|
|
require 'tetris.modes.race_40',
|
|
require 'tetris.modes.marathon_a1',
|
|
require 'tetris.modes.marathon_a2',
|
|
require 'tetris.modes.marathon_a3',
|
|
require 'tetris.modes.marathon_ax',
|
|
require 'tetris.modes.marathon_ax2',
|
|
require 'tetris.modes.marathon_ax3',
|
|
require 'tetris.modes.marathon_c89',
|
|
require 'tetris.modes.survival_a1',
|
|
require 'tetris.modes.survival_a2',
|
|
require 'tetris.modes.survival_a3',
|
|
require 'tetris.modes.survival_ax',
|
|
require 'tetris.modes.survival_ax2',
|
|
}
|
|
|
|
rulesets = {
|
|
require 'tetris.rulesets.cambridge',
|
|
require 'tetris.rulesets.standard',
|
|
require 'tetris.rulesets.standard_ti',
|
|
require 'tetris.rulesets.arika',
|
|
require 'tetris.rulesets.arika_ti',
|
|
require 'tetris.rulesets.arika_ace',
|
|
--require 'tetris.rulesets.bonkers',
|
|
--require 'tetris.rulesets.shirase',
|
|
--require 'tetris.rulesets.super302',
|
|
}
|
|
|
|
function ModeSelectScene:new()
|
|
self.menu_state = {
|
|
mode = current_mode,
|
|
ruleset = current_ruleset,
|
|
select = "mode",
|
|
}
|
|
end
|
|
|
|
function ModeSelectScene:update()
|
|
end
|
|
|
|
function ModeSelectScene:render()
|
|
love.graphics.draw(
|
|
backgrounds[0],
|
|
0, 0, 0,
|
|
0.5, 0.5
|
|
)
|
|
|
|
if self.menu_state.select == "mode" then
|
|
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
|
|
love.graphics.setColor(1, 1, 1, 0.25)
|
|
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
|
|
|
|
function ModeSelectScene:onKeyPress(e)
|
|
if e.scancode == "return" and e.isRepeat == false then
|
|
current_mode = self.menu_state.mode
|
|
current_ruleset = self.menu_state.ruleset
|
|
config.current_mode = current_mode
|
|
config.current_ruleset = current_ruleset
|
|
saveConfig()
|
|
scene = GameScene(game_modes[self.menu_state.mode], rulesets[self.menu_state.ruleset])
|
|
elseif (e.scancode == config.input["up"] or e.scancode == "up") and e.isRepeat == false then
|
|
self:changeOption(-1)
|
|
elseif (e.scancode == config.input["down"] or e.scancode == "down") and e.isRepeat == false then
|
|
self:changeOption(1)
|
|
elseif (e.scancode == config.input["left"] or e.scancode == "left") or
|
|
(e.scancode == config.input["right"] or e.scancode == "right") then
|
|
self:switchSelect()
|
|
end
|
|
end
|
|
|
|
function ModeSelectScene:changeOption(rel)
|
|
if self.menu_state.select == "mode" then
|
|
self:changeMode(rel)
|
|
elseif self.menu_state.select == "ruleset" then
|
|
self:changeRuleset(rel)
|
|
end
|
|
end
|
|
|
|
function ModeSelectScene:switchSelect(rel)
|
|
if self.menu_state.select == "mode" then
|
|
self.menu_state.select = "ruleset"
|
|
elseif self.menu_state.select == "ruleset" then
|
|
self.menu_state.select = "mode"
|
|
end
|
|
end
|
|
|
|
function ModeSelectScene:changeMode(rel)
|
|
local len = table.getn(game_modes)
|
|
self.menu_state.mode = (self.menu_state.mode + len + rel - 1) % len + 1
|
|
end
|
|
|
|
function ModeSelectScene:changeRuleset(rel)
|
|
local len = table.getn(rulesets)
|
|
self.menu_state.ruleset = (self.menu_state.ruleset + len + rel - 1) % len + 1
|
|
end
|
|
|
|
return ModeSelectScene
|