diff options
| author | Mark Eldridge <8285554+meldridge@users.noreply.github.com> | 2026-07-23 15:02:32 +0930 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-07-23 05:32:32 +0000 |
| commit | c71203ad06da8883cba28af0f6b81090ac046a56 (patch) | |
| tree | c3e342be3ae60702bb19fc127b16afe2165b8a38 | |
| parent | 23685ce11fd2f264314ca0ffbcb449a88a439abe (diff) | |
Respect the Better Save Menu enable toggle (#6970)
RegisterBetterSave registered its VB_LOAD_SAVE_MENU and VB_DRAW_SAVE_MENU
hooks unconditionally, and hardcoded the save/continue text overrides to
`true`, so the feature applied regardless of the enable checkbox and
toggling it off did nothing. CVAR_BETTERSAVE_VALUE was defined but never
read.
Gate all five hooks on CVAR_BETTERSAVE_VALUE (COND_VB_SHOULD for the two
vanilla-behavior hooks, the condition arg for the three OnOpenText hooks).
RegisterShipInitFunc already re-runs RegisterBetterSave when CVAR_BETTERSAVE
changes, so the COND_* macros unregister the hooks when it is off and
re-register them when it is on.
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
| -rw-r--r-- | soh/soh/Enhancements/QoL/BetterSaveMenu.cpp | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/soh/soh/Enhancements/QoL/BetterSaveMenu.cpp b/soh/soh/Enhancements/QoL/BetterSaveMenu.cpp index 894caac79..99dabd598 100644 --- a/soh/soh/Enhancements/QoL/BetterSaveMenu.cpp +++ b/soh/soh/Enhancements/QoL/BetterSaveMenu.cpp @@ -191,30 +191,32 @@ void RegisterBetterSave() { continueOverworldMsg.Format(); continueDungeonMsg.Format(); - REGISTER_VB_SHOULD(VB_LOAD_SAVE_MENU, { + COND_VB_SHOULD(VB_LOAD_SAVE_MENU, CVAR_BETTERSAVE_VALUE, { PlayState* play = va_arg(args, PlayState*); HandleSaveMenu(should, play); }); - REGISTER_VB_SHOULD(VB_DRAW_SAVE_MENU, { *should = false; }); + COND_VB_SHOULD(VB_DRAW_SAVE_MENU, CVAR_BETTERSAVE_VALUE, { *should = false; }); - COND_ID_HOOK(OnOpenText, TEXT_SAVE_MSG, true, [](uint16_t* textId, bool* loadFromMessageTable) { + COND_ID_HOOK(OnOpenText, TEXT_SAVE_MSG, CVAR_BETTERSAVE_VALUE, [](uint16_t* textId, bool* loadFromMessageTable) { saveMsg.LoadIntoFont(); *loadFromMessageTable = false; return; }); - COND_ID_HOOK(OnOpenText, TEXT_CONTINUE_DUNGEON_MSG, true, [](uint16_t* textId, bool* loadFromMessageTable) { - continueDungeonMsg.LoadIntoFont(); - *loadFromMessageTable = false; - return; - }); + COND_ID_HOOK(OnOpenText, TEXT_CONTINUE_DUNGEON_MSG, CVAR_BETTERSAVE_VALUE, + [](uint16_t* textId, bool* loadFromMessageTable) { + continueDungeonMsg.LoadIntoFont(); + *loadFromMessageTable = false; + return; + }); - COND_ID_HOOK(OnOpenText, TEXT_CONTINUE_OVERWORLD_MSG, true, [](uint16_t* textId, bool* loadFromMessageTable) { - continueOverworldMsg.LoadIntoFont(); - *loadFromMessageTable = false; - return; - }); + COND_ID_HOOK(OnOpenText, TEXT_CONTINUE_OVERWORLD_MSG, CVAR_BETTERSAVE_VALUE, + [](uint16_t* textId, bool* loadFromMessageTable) { + continueOverworldMsg.LoadIntoFont(); + *loadFromMessageTable = false; + return; + }); } static RegisterShipInitFunc initFunc(RegisterBetterSave, { CVAR_BETTERSAVE }); |
