Added new menu to start at ASCENSION N when in test_mode.
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
This commit is contained in:
@@ -3,6 +3,7 @@ init/init.module.lua
|
||||
init/init.config.lua
|
||||
init/init.ascension.lua
|
||||
init/init.context.lua
|
||||
init/init.context_debug.lua
|
||||
system/system.util.lua
|
||||
system/system.print.lua
|
||||
system/system.input.lua
|
||||
@@ -73,6 +74,7 @@ window/window.intro.brief.lua
|
||||
window/window.menu.lua
|
||||
window/window.controls.lua
|
||||
window/window.audiotest.lua
|
||||
window/window.ascend_debug.lua
|
||||
window/window.popup.lua
|
||||
window/window.minigame.mash.lua
|
||||
window/window.minigame.rhythm.lua
|
||||
|
||||
65
inc/init/init.context_debug.lua
Normal file
65
inc/init/init.context_debug.lua
Normal file
@@ -0,0 +1,65 @@
|
||||
-- Debug helper: start the game at a specific ascension level.
|
||||
-- Set enabled = true and asc_level = 0..Ascension.get_max_level() before launching.
|
||||
ContextDebug = {
|
||||
enabled = false,
|
||||
asc_level = 0,
|
||||
}
|
||||
|
||||
local _level_overrides = {
|
||||
[0] = {
|
||||
day_count = 1,
|
||||
home_norman_visible = true,
|
||||
have_been_to_office = false,
|
||||
have_done_work_today = false,
|
||||
have_met_sumphore = false,
|
||||
},
|
||||
}
|
||||
for i = 1, Ascension.get_max_level() do
|
||||
_level_overrides[i] = {
|
||||
day_count = i + 3,
|
||||
home_norman_visible = true,
|
||||
have_been_to_office = false,
|
||||
have_done_work_today = false,
|
||||
have_met_sumphore = true,
|
||||
}
|
||||
end
|
||||
|
||||
--- Returns Context.initial_data() overridden for the given ascension level.
|
||||
--- @within Context
|
||||
--- @param level number Target ascension level (0..Ascension.get_max_level()).
|
||||
--- @return table Debug-patched initial context data.
|
||||
function Context.initial_data_debug_asc(level)
|
||||
local data = Context.initial_data()
|
||||
data.test_mode = true
|
||||
data.game_in_progress = true
|
||||
data.ascension = { level = level }
|
||||
local overrides = _level_overrides[level] or _level_overrides[0]
|
||||
for k, v in pairs(overrides) do
|
||||
data[k] = v
|
||||
end
|
||||
return data
|
||||
end
|
||||
|
||||
for i = 0, Ascension.get_max_level() do
|
||||
Context["initial_data_debug_asc_" .. i] = function()
|
||||
return Context.initial_data_debug_asc(i)
|
||||
end
|
||||
end
|
||||
|
||||
--- Starts the game at the given ascension level (defaults to ContextDebug.asc_level).
|
||||
--- Wire this to a key or call it directly; do not use Context.new_game() when debugging.
|
||||
--- @within Context
|
||||
--- @param level number|nil Target ascension level.
|
||||
function Context.new_game_debug(level)
|
||||
ContextDebug.enabled = true
|
||||
ContextDebug.asc_level = level or ContextDebug.asc_level
|
||||
|
||||
local data = Context["initial_data_debug_asc_" .. ContextDebug.asc_level]()
|
||||
for k in pairs(Context) do
|
||||
if type(Context[k]) ~= "function" then Context[k] = nil end
|
||||
end
|
||||
for k, v in pairs(data) do Context[k] = v end
|
||||
|
||||
MenuWindow.refresh_menu_items()
|
||||
Screen.get_by_id(Context.game.current_screen).init()
|
||||
end
|
||||
41
inc/window/window.ascend_debug.lua
Normal file
41
inc/window/window.ascend_debug.lua
Normal file
@@ -0,0 +1,41 @@
|
||||
--- @section AscendDebugWindow
|
||||
local _level = 0
|
||||
|
||||
--- Initialises the ASCEND debug start window.
|
||||
--- @within AscendDebugWindow
|
||||
function AscendDebugWindow.init()
|
||||
_level = 0
|
||||
end
|
||||
|
||||
--- Draws the ASCEND debug start window.
|
||||
--- @within AscendDebugWindow
|
||||
function AscendDebugWindow.draw()
|
||||
UI.draw_top_bar("ASCEND Debug Start")
|
||||
|
||||
local cx = Config.screen.width / 2
|
||||
local cy = Config.screen.height / 2
|
||||
|
||||
local left_arrow = _level > 0 and "<- " or " "
|
||||
local right_arrow = _level < Ascension.get_max_level() and " ->" or " "
|
||||
local label = left_arrow .. "Start at: " .. _level .. right_arrow
|
||||
Print.text_center(label, cx, cy - 4, Config.colors.white, false, 1)
|
||||
|
||||
Print.text_center("Z/select: start X/back: menu", cx, Config.screen.height - 10, Config.colors.dark_grey, false, 1)
|
||||
end
|
||||
|
||||
--- Updates the ASCEND debug start window logic.
|
||||
--- @within AscendDebugWindow
|
||||
function AscendDebugWindow.update()
|
||||
if Input.left() then
|
||||
_level = math.max(0, _level - 1)
|
||||
elseif Input.right() then
|
||||
_level = math.min(Ascension.get_max_level(), _level + 1)
|
||||
elseif Input.select() then
|
||||
Audio.sfx_select()
|
||||
Context.new_game_debug(_level)
|
||||
GameWindow.set_state("game")
|
||||
elseif Input.back() then
|
||||
Audio.sfx_deselect()
|
||||
GameWindow.set_state("menu")
|
||||
end
|
||||
end
|
||||
@@ -161,6 +161,13 @@ function MenuWindow.ddr_test()
|
||||
MinigameDDRWindow.start("menu", "generated", { special_mode = "only_nothing" })
|
||||
end
|
||||
|
||||
--- Opens the ASCEND debug start window.
|
||||
--- @within MenuWindow
|
||||
function MenuWindow.ascend_debug()
|
||||
AscendDebugWindow.init()
|
||||
GameWindow.set_state("ascend_debug")
|
||||
end
|
||||
|
||||
--- Refreshes the list of menu items based on current game state.
|
||||
--- @within MenuWindow
|
||||
function MenuWindow.refresh_menu_items()
|
||||
@@ -178,6 +185,7 @@ function MenuWindow.refresh_menu_items()
|
||||
table.insert(_menu_items, {label = "Audio Test", decision = MenuWindow.audio_test})
|
||||
table.insert(_menu_items, {label = "To Be Continued...", decision = MenuWindow.continued})
|
||||
table.insert(_menu_items, {label = "DDR Test", decision = MenuWindow.ddr_test})
|
||||
table.insert(_menu_items, {label = "Start at ASCEND N", decision = MenuWindow.ascend_debug})
|
||||
end
|
||||
|
||||
table.insert(_menu_items, {label = "Exit", decision = MenuWindow.exit})
|
||||
|
||||
@@ -22,6 +22,9 @@ Window.register("controls", ControlsWindow)
|
||||
AudioTestWindow = {}
|
||||
Window.register("audiotest", AudioTestWindow)
|
||||
|
||||
AscendDebugWindow = {}
|
||||
Window.register("ascend_debug", AscendDebugWindow)
|
||||
|
||||
MinigameButtonMashWindow = {}
|
||||
Window.register("minigame_button_mash", MinigameButtonMashWindow)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user