mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-09-02 08:43:42 -04:00
Merge pull request #2368 from TwilitRealm/speedrun-fixes
various speedrun game mode fixes
This commit is contained in:
@@ -191,6 +191,14 @@ void dBrightCheck_c::modeMove() {
|
||||
mDoAud_seStart(Z2SE_ENTER_GAME, NULL, 0, 0);
|
||||
#ifdef TARGET_PC
|
||||
toggleAutoSave(true);
|
||||
|
||||
if (!dusk::getSettings().game.hideTvSettingsScreen) {
|
||||
const dusk::gamemode::GameMode* gameMode =
|
||||
dusk::gamemode::getGameModeManager().getCurrentGameMode();
|
||||
if (gameMode) {
|
||||
gameMode->invokeOnSaveLoadedFunction();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
mCompleteCheck = true;
|
||||
mMode = MODE_WAIT_e;
|
||||
|
||||
@@ -1789,10 +1789,16 @@ void dFile_select_c::nameInput2() {
|
||||
#if TARGET_PC
|
||||
dusk::mods::svc::save_slot_new(mSelectNum);
|
||||
const dusk::gamemode::GameMode* gameMode =
|
||||
dusk::gamemode::getGameModeManager().getCurrentGameMode();
|
||||
dusk::gamemode::getGameModeManager().getCurrentGameMode();
|
||||
if (gameMode) {
|
||||
gameMode->invokeOnNewSaveFunction();
|
||||
gameMode->invokeOnSaveLoadedFunction();
|
||||
}
|
||||
|
||||
// only do OnSaveLoaded callback here if hiding the brightness check screen
|
||||
if (dusk::getSettings().game.hideTvSettingsScreen) {
|
||||
if (gameMode) {
|
||||
gameMode->invokeOnSaveLoadedFunction();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
mDataSelProc = DATASELPROC_NEXT_MODE_WAIT;
|
||||
|
||||
@@ -19,6 +19,8 @@ static void onSpeedrunModeDeactive() {
|
||||
if (getSettings().game.liveSplitEnabled) {
|
||||
speedrun::disconnectLiveSplit();
|
||||
}
|
||||
g_speedrunInfo.reset();
|
||||
reset();
|
||||
}
|
||||
|
||||
void registerSpeedrunGameMode() {
|
||||
@@ -82,6 +84,9 @@ void resetForSpeedrunMode() {
|
||||
getSettings().backend.enableAdvancedSettings.setSpeedrunValue(false);
|
||||
getSettings().game.recordingMode.setSpeedrunValue(false);
|
||||
getSettings().game.debugFlyCam.setSpeedrunValue(false);
|
||||
|
||||
getSettings().game.enableMoveLinkCombo.setSpeedrunValue(false);
|
||||
getSettings().game.enableTeleportCombo.setSpeedrunValue(false);
|
||||
}
|
||||
|
||||
static void clearSpeedrunOverrides() {
|
||||
|
||||
@@ -160,17 +160,12 @@ void MenuBar::build_tabs() {
|
||||
});
|
||||
|
||||
if (dusk::speedrun::isActive()) {
|
||||
mTabBar->add_tab("Reset Timer", [this] {
|
||||
mTabBar->add_tab("Reset Run", [this] {
|
||||
mTabBar->set_active_tab(-1);
|
||||
mDoAud_seStartMenu(kSoundClick);
|
||||
dusk::speedrun::g_speedrunInfo.reset();
|
||||
if (getSettings().game.liveSplitEnabled) {
|
||||
dusk::speedrun::reset();
|
||||
}
|
||||
auto* playScene = fpcM_SearchByName(fpcNm_PLAY_SCENE_e);
|
||||
if (playScene != nullptr) {
|
||||
fopScnM_ChangeReq((scene_class*)playScene, fpcNm_NAME_SCENE_e, 0x7FFF, 0);
|
||||
}
|
||||
dusk::speedrun::reset();
|
||||
JUTGamePad::C3ButtonReset::sResetSwitchPushing = true;
|
||||
hide(false);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1239,7 +1239,7 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) {
|
||||
{
|
||||
.key = "Speedrun Mode",
|
||||
.helpText =
|
||||
"Enables speedrunning options while restricting certain gameplay modifiers.",
|
||||
"Enables Speedrun game mode option in the Dusklight launch menu.",
|
||||
.onChange =
|
||||
[this](bool enabled) {
|
||||
if (enabled) {
|
||||
|
||||
Reference in New Issue
Block a user