From 248fe8cb1346acdf236818cb1ed0bdcd1e019b50 Mon Sep 17 00:00:00 2001 From: Jordan Longstaff Date: Sat, 25 Oct 2025 16:25:50 -0400 Subject: [PATCH] Modularize Reset Navi Timer hook (#5872) * Modularize Reset Navi Timer hook * Remove unnecessary sceneNum param name --- soh/soh/Enhancements/QoL/ResetNaviTimer.cpp | 17 +++++++++++++++++ soh/soh/Enhancements/mods.cpp | 9 --------- 2 files changed, 17 insertions(+), 9 deletions(-) create mode 100644 soh/soh/Enhancements/QoL/ResetNaviTimer.cpp diff --git a/soh/soh/Enhancements/QoL/ResetNaviTimer.cpp b/soh/soh/Enhancements/QoL/ResetNaviTimer.cpp new file mode 100644 index 000000000..b3048be53 --- /dev/null +++ b/soh/soh/Enhancements/QoL/ResetNaviTimer.cpp @@ -0,0 +1,17 @@ +#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" +#include "soh/ShipInit.hpp" + +extern "C" { +#include "variables.h" +extern SaveContext gSaveContext; +} + +static constexpr int32_t CVAR_RESET_NAVI_DEFAULT = 0; +#define CVAR_RESET_NAVI_NAME CVAR_ENHANCEMENT("ResetNaviTimer") +#define CVAR_RESET_NAVI_VALUE CVarGetInteger(CVAR_RESET_NAVI_NAME, CVAR_RESET_NAVI_DEFAULT) + +static void RegisterResetNaviTimer() { + COND_HOOK(OnSceneInit, CVAR_RESET_NAVI_VALUE, [](int32_t) { gSaveContext.naviTimer = 0; }); +} + +static RegisterShipInitFunc initFunc(RegisterResetNaviTimer, { CVAR_RESET_NAVI_NAME }); diff --git a/soh/soh/Enhancements/mods.cpp b/soh/soh/Enhancements/mods.cpp index cd53428bd..1f3d9009d 100644 --- a/soh/soh/Enhancements/mods.cpp +++ b/soh/soh/Enhancements/mods.cpp @@ -409,14 +409,6 @@ void RegisterPatchHandHandler() { [](int32_t sceneNum) { UpdatePatchHand(); }); } -void RegisterResetNaviTimer() { - GameInteractor::Instance->RegisterGameHook([](int32_t sceneNum) { - if (CVarGetInteger(CVAR_ENHANCEMENT("ResetNaviTimer"), 0)) { - gSaveContext.naviTimer = 0; - } - }); -} - // this map is used for enemies that can be uniquely identified by their id // and that are always counted // enemies that can't be uniquely identified by their id @@ -873,7 +865,6 @@ void InitMods() { RegisterHyperBosses(); UpdateHyperEnemiesState(); RegisterMirrorModeHandler(); - RegisterResetNaviTimer(); RegisterEnemyDefeatCounts(); RegisterBossDefeatTimestamps(); RegisterRandomizedEnemySizes();