mirror of
https://github.com/SashLilac/cambridge.git
synced 2024-11-22 14:09:03 -06:00
Mode select changes (read below)
Added DAS to the up/down actions (24F start-up, 6F period) Added wheel scroll to the up/down/left/right actions Added a warning in case somehow the player has no modes or rulesets Mode select will load new modules every time you access it However, this does not reload changes to existing modules
This commit is contained in:
parent
dda116f00f
commit
fe162ed215
@ -6,6 +6,22 @@ current_mode = 1
|
|||||||
current_ruleset = 1
|
current_ruleset = 1
|
||||||
|
|
||||||
function ModeSelectScene:new()
|
function ModeSelectScene:new()
|
||||||
|
-- reload custom modules
|
||||||
|
initModules()
|
||||||
|
if table.getn(game_modes) == 0 or table.getn(rulesets) == 0 then
|
||||||
|
self.display_warning = true
|
||||||
|
current_mode = 1
|
||||||
|
current_ruleset = 1
|
||||||
|
else
|
||||||
|
self.display_warning = false
|
||||||
|
if current_mode > table.getn(game_modes) then
|
||||||
|
current_mode = 1
|
||||||
|
end
|
||||||
|
if current_ruleset > table.getn(rulesets) then
|
||||||
|
current_ruleset = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
self.menu_state = {
|
self.menu_state = {
|
||||||
mode = current_mode,
|
mode = current_mode,
|
||||||
ruleset = current_ruleset,
|
ruleset = current_ruleset,
|
||||||
@ -19,6 +35,7 @@ function ModeSelectScene:new()
|
|||||||
rotate_180 = false,
|
rotate_180 = false,
|
||||||
hold = false,
|
hold = false,
|
||||||
}
|
}
|
||||||
|
self.das = 0
|
||||||
DiscordRPC:update({
|
DiscordRPC:update({
|
||||||
details = "In menus",
|
details = "In menus",
|
||||||
state = "Choosing a mode",
|
state = "Choosing a mode",
|
||||||
@ -27,6 +44,17 @@ end
|
|||||||
|
|
||||||
function ModeSelectScene:update()
|
function ModeSelectScene:update()
|
||||||
switchBGM(nil) -- experimental
|
switchBGM(nil) -- experimental
|
||||||
|
|
||||||
|
if self.das_up or self.das_down then
|
||||||
|
self.das = self.das + 1
|
||||||
|
else
|
||||||
|
self.das = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
if self.das >= 24 then
|
||||||
|
self:changeOption(self.das_up and -1 or 1)
|
||||||
|
self.das = self.das * 0.75
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function ModeSelectScene:render()
|
function ModeSelectScene:render()
|
||||||
@ -36,6 +64,23 @@ function ModeSelectScene:render()
|
|||||||
0.5, 0.5
|
0.5, 0.5
|
||||||
)
|
)
|
||||||
|
|
||||||
|
love.graphics.draw(misc_graphics["select_mode"], 20, 40)
|
||||||
|
|
||||||
|
if self.display_warning then
|
||||||
|
love.graphics.setFont(font_3x5_3)
|
||||||
|
love.graphics.printf(
|
||||||
|
"You have no modes or rulesets.",
|
||||||
|
80, 200, 480, "center"
|
||||||
|
)
|
||||||
|
love.graphics.setFont(font_3x5_2)
|
||||||
|
love.graphics.printf(
|
||||||
|
"Come back to this menu after getting more modes or rulesets. " ..
|
||||||
|
"Press any button to return to the main menu.",
|
||||||
|
80, 250, 480, "center"
|
||||||
|
)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
if self.menu_state.select == "mode" then
|
if self.menu_state.select == "mode" then
|
||||||
love.graphics.setColor(1, 1, 1, 0.5)
|
love.graphics.setColor(1, 1, 1, 0.5)
|
||||||
elseif self.menu_state.select == "ruleset" then
|
elseif self.menu_state.select == "ruleset" then
|
||||||
@ -52,8 +97,6 @@ function ModeSelectScene:render()
|
|||||||
|
|
||||||
love.graphics.setColor(1, 1, 1, 1)
|
love.graphics.setColor(1, 1, 1, 1)
|
||||||
|
|
||||||
love.graphics.draw(misc_graphics["select_mode"], 20, 40)
|
|
||||||
|
|
||||||
love.graphics.setFont(font_3x5_2)
|
love.graphics.setFont(font_3x5_2)
|
||||||
for idx, mode in pairs(game_modes) do
|
for idx, mode in pairs(game_modes) do
|
||||||
if(idx >= self.menu_state.mode-9 and idx <= self.menu_state.mode+9) then
|
if(idx >= self.menu_state.mode-9 and idx <= self.menu_state.mode+9) then
|
||||||
@ -68,23 +111,37 @@ function ModeSelectScene:render()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function ModeSelectScene:onInputPress(e)
|
function ModeSelectScene:onInputPress(e)
|
||||||
if e.input == "menu_decide" or e.scancode == "return" then
|
if self.display_warning and e.input then
|
||||||
|
scene = TitleScene()
|
||||||
|
elseif e.type == "wheel" then
|
||||||
|
if e.x % 2 == 1 then
|
||||||
|
self:switchSelect()
|
||||||
|
end
|
||||||
|
if e.y ~= 0 then
|
||||||
|
self:changeOption(-e.y)
|
||||||
|
end
|
||||||
|
elseif e.input == "menu_decide" or e.scancode == "return" then
|
||||||
current_mode = self.menu_state.mode
|
current_mode = self.menu_state.mode
|
||||||
current_ruleset = self.menu_state.ruleset
|
current_ruleset = self.menu_state.ruleset
|
||||||
config.current_mode = current_mode
|
config.current_mode = current_mode
|
||||||
config.current_ruleset = current_ruleset
|
config.current_ruleset = current_ruleset
|
||||||
playSE("mode_decide")
|
playSE("mode_decide")
|
||||||
saveConfig()
|
saveConfig()
|
||||||
scene = GameScene(game_modes[self.menu_state.mode], rulesets[self.menu_state.ruleset], self.secret_inputs)
|
scene = GameScene(
|
||||||
|
game_modes[self.menu_state.mode],
|
||||||
|
rulesets[self.menu_state.ruleset],
|
||||||
|
self.secret_inputs
|
||||||
|
)
|
||||||
elseif e.input == "up" or e.scancode == "up" then
|
elseif e.input == "up" or e.scancode == "up" then
|
||||||
self:changeOption(-1)
|
self:changeOption(-1)
|
||||||
playSE("cursor")
|
self.das_up = true
|
||||||
|
self.das_down = nil
|
||||||
elseif e.input == "down" or e.scancode == "down" then
|
elseif e.input == "down" or e.scancode == "down" then
|
||||||
self:changeOption(1)
|
self:changeOption(1)
|
||||||
playSE("cursor")
|
self.das_down = true
|
||||||
|
self.das_up = nil
|
||||||
elseif e.input == "left" or e.input == "right" or e.scancode == "left" or e.scancode == "right" then
|
elseif e.input == "left" or e.input == "right" or e.scancode == "left" or e.scancode == "right" then
|
||||||
self:switchSelect()
|
self:switchSelect()
|
||||||
playSE("cursor_lr")
|
|
||||||
elseif e.input == "menu_back" or e.scancode == "delete" or e.scancode == "backspace" then
|
elseif e.input == "menu_back" or e.scancode == "delete" or e.scancode == "backspace" then
|
||||||
scene = TitleScene()
|
scene = TitleScene()
|
||||||
elseif e.input then
|
elseif e.input then
|
||||||
@ -95,6 +152,10 @@ end
|
|||||||
function ModeSelectScene:onInputRelease(e)
|
function ModeSelectScene:onInputRelease(e)
|
||||||
if e.input == "hold" or (e.input and string.sub(e.input, 1, 7) == "rotate_") then
|
if e.input == "hold" or (e.input and string.sub(e.input, 1, 7) == "rotate_") then
|
||||||
self.secret_inputs[e.input] = false
|
self.secret_inputs[e.input] = false
|
||||||
|
elseif e.input == "up" or e.scancode == "up" then
|
||||||
|
self.das_up = nil
|
||||||
|
elseif e.input == "down" or e.scancode == "down" then
|
||||||
|
self.das_down = nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -104,24 +165,26 @@ function ModeSelectScene:changeOption(rel)
|
|||||||
elseif self.menu_state.select == "ruleset" then
|
elseif self.menu_state.select == "ruleset" then
|
||||||
self:changeRuleset(rel)
|
self:changeRuleset(rel)
|
||||||
end
|
end
|
||||||
|
playSE("cursor")
|
||||||
end
|
end
|
||||||
|
|
||||||
function ModeSelectScene:switchSelect(rel)
|
function ModeSelectScene:switchSelect()
|
||||||
if self.menu_state.select == "mode" then
|
if self.menu_state.select == "mode" then
|
||||||
self.menu_state.select = "ruleset"
|
self.menu_state.select = "ruleset"
|
||||||
elseif self.menu_state.select == "ruleset" then
|
elseif self.menu_state.select == "ruleset" then
|
||||||
self.menu_state.select = "mode"
|
self.menu_state.select = "mode"
|
||||||
end
|
end
|
||||||
|
playSE("cursor_lr")
|
||||||
end
|
end
|
||||||
|
|
||||||
function ModeSelectScene:changeMode(rel)
|
function ModeSelectScene:changeMode(rel)
|
||||||
local len = table.getn(game_modes)
|
local len = table.getn(game_modes)
|
||||||
self.menu_state.mode = (self.menu_state.mode + len + rel - 1) % len + 1
|
self.menu_state.mode = Mod1(self.menu_state.mode + rel, len)
|
||||||
end
|
end
|
||||||
|
|
||||||
function ModeSelectScene:changeRuleset(rel)
|
function ModeSelectScene:changeRuleset(rel)
|
||||||
local len = table.getn(rulesets)
|
local len = table.getn(rulesets)
|
||||||
self.menu_state.ruleset = (self.menu_state.ruleset + len + rel - 1) % len + 1
|
self.menu_state.ruleset = Mod1(self.menu_state.ruleset + rel, len)
|
||||||
end
|
end
|
||||||
|
|
||||||
return ModeSelectScene
|
return ModeSelectScene
|
||||||
|
Loading…
Reference in New Issue
Block a user