mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-08-12 12:18:32 -04:00
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>
This commit is contained in:
@@ -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 });
|
||||
|
||||
Reference in New Issue
Block a user