From c60d151ed33964b399fbea5ccb77a403cb22a00c Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Fri, 7 Mar 2025 04:59:01 -0600 Subject: [PATCH] If autosave prefs open before autosave check, use default --- src/game/boe.dlgutil.cpp | 2 +- src/game/boe.fileio.cpp | 10 +++++++--- src/game/boe.fileio.hpp | 1 + 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/game/boe.dlgutil.cpp b/src/game/boe.dlgutil.cpp index f3ce5221..c078a259 100644 --- a/src/game/boe.dlgutil.cpp +++ b/src/game/boe.dlgutil.cpp @@ -1297,7 +1297,7 @@ void autosave_preferences(cDialog* parent) { cControl* ctrl = iter->second; cLed* led = dynamic_cast(ctrl); if(led != nullptr){ - led->setState(get_bool_pref("Autosave_" + id, true) ? led_red : led_off); + led->setState(check_autosave_trigger(id) ? led_red : led_off); } } prefsDlog.attachClickHandlers(&prefs_autosave_event_filter, {"okay", "cancel"}); diff --git a/src/game/boe.fileio.cpp b/src/game/boe.fileio.cpp index 50e65023..03fda0d2 100644 --- a/src/game/boe.fileio.cpp +++ b/src/game/boe.fileio.cpp @@ -491,12 +491,16 @@ std::map autosave_trigger_defaults = { {"Eat", false} }; -void try_auto_save(std::string reason) { - if(!get_bool_pref("Autosave", true)) return; +bool check_autosave_trigger(std::string reason) { bool reason_default_on = false; if(autosave_trigger_defaults.find(reason) != autosave_trigger_defaults.end()) reason_default_on = autosave_trigger_defaults[reason]; - if(!get_bool_pref("Autosave_" + reason, reason_default_on)) return; + return get_bool_pref("Autosave_" + reason, reason_default_on); +} + +void try_auto_save(std::string reason) { + if(!get_bool_pref("Autosave", true)) return; + if(!check_autosave_trigger(reason)) return; if(univ.file.empty()){ ASB("Autosave: Make a manual save first."); print_buf(); diff --git a/src/game/boe.fileio.hpp b/src/game/boe.fileio.hpp index a3f38e35..f30dce92 100644 --- a/src/game/boe.fileio.hpp +++ b/src/game/boe.fileio.hpp @@ -32,6 +32,7 @@ void alter_rect(rectangle *r); // The player can configure autosaves on/off globally, or individually // for a variety of different trigger reasons +bool check_autosave_trigger(std::string reason); void try_auto_save(std::string reason); #endif