From 1375a2e6b1a88dcf30a342dbc9728d9b881145d3 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Sun, 24 Nov 2024 14:50:12 -0600 Subject: [PATCH] turn resethelp pref led into a button with a confirmation dialog --- rsrc/dialogs/confirm-reset-help.xml | 10 ++++++++++ rsrc/dialogs/preferences.xml | 8 ++++---- src/game/boe.dlgutil.cpp | 18 +++++++++--------- src/game/boe.dlgutil.hpp | 2 +- 4 files changed, 24 insertions(+), 14 deletions(-) create mode 100644 rsrc/dialogs/confirm-reset-help.xml diff --git a/rsrc/dialogs/confirm-reset-help.xml b/rsrc/dialogs/confirm-reset-help.xml new file mode 100644 index 00000000..2a511d1b --- /dev/null +++ b/rsrc/dialogs/confirm-reset-help.xml @@ -0,0 +1,10 @@ + + + + + + + + Really reset instant help messages? + + diff --git a/rsrc/dialogs/preferences.xml b/rsrc/dialogs/preferences.xml index 9a792f5f..38751679 100644 --- a/rsrc/dialogs/preferences.xml +++ b/rsrc/dialogs/preferences.xml @@ -31,13 +31,13 @@ No Sounds Show room descriptions more than once Never show instant help - - Reset instant help (all help windows will reappear) - Make game easier (monsters much weaker) Fewer wandering monsters Skip splash screen on startup - Scale UI: + + Scale UI: 1 1.5 diff --git a/src/game/boe.dlgutil.cpp b/src/game/boe.dlgutil.cpp index 73cbce51..158d5856 100644 --- a/src/game/boe.dlgutil.cpp +++ b/src/game/boe.dlgutil.cpp @@ -1161,10 +1161,7 @@ void do_sign(short town_num, short which_sign, short sign_type) { sign.show(); } -void save_prefs(bool resetHelp){ - - if(resetHelp) clear_pref("ReceivedHelp"); - +void save_prefs(){ bool success = sync_prefs(); if(!success){ showWarning("There was a problem writing to the preferences file. When the game is next run the preferences will revert to their previously set values.","Should you manage to resolve the problem without closing the program, simply open the preferences screen and click \"OK\" to try again."); @@ -1172,7 +1169,7 @@ void save_prefs(bool resetHelp){ } static bool prefs_event_filter (cDialog& me, std::string id, eKeyMod) { - bool did_cancel = false,reset_help = false; + bool did_cancel = false; if(id == "okay") { me.toast(true); @@ -1220,9 +1217,6 @@ static bool prefs_event_filter (cDialog& me, std::string id, eKeyMod) { set_pref("GameSpeed", 2); else if(speed == "snail") set_pref("GameSpeed", 3); - if(dynamic_cast(me["resethelp"]).getState() == led_red) { - reset_help = true; - } std::string scale = dynamic_cast(me["scaleui"]).getSelected(); if(scale == "1") set_pref("UIScale", 1.0); @@ -1246,10 +1240,15 @@ static bool prefs_event_filter (cDialog& me, std::string id, eKeyMod) { else if(scale_map == "4") set_pref("UIScaleMap", 4.0); } - save_prefs(reset_help); + save_prefs(); return true; } +static bool reset_help(cDialog& me, std::string id, eKeyMod) { + if(cChoiceDlog("confirm-reset-help", {"yes", "no"}, &me).show() == "yes") + clear_pref("ReceivedHelp"); +} + void pick_preferences(bool record) { if(record && recording){ record_action("pick_preferences", ""); @@ -1259,6 +1258,7 @@ void pick_preferences(bool record) { cDialog prefsDlog(*ResMgr::dialogs.get("preferences")); prefsDlog.attachClickHandlers(&prefs_event_filter, {"okay", "cancel"}); + prefsDlog.attachClickHandlers(&reset_help, {"resethelp"}); cLedGroup& displayMode = dynamic_cast(prefsDlog["display"]); switch(get_int_pref("DisplayMode")) { diff --git a/src/game/boe.dlgutil.hpp b/src/game/boe.dlgutil.hpp index e3520852..0a6881df 100644 --- a/src/game/boe.dlgutil.hpp +++ b/src/game/boe.dlgutil.hpp @@ -22,7 +22,7 @@ void do_talk(short personality, unsigned short m_num); void put_party_stats(); void edit_party(); void pick_preferences(bool record = true); -void save_prefs(bool resetHelp = false); +void save_prefs(); void tip_of_day(); struct scen_header_type pick_a_scen();