MP/Create: added button to reset timer settings, ensure they're saved (resolves #1556)

This commit is contained in:
Charles Dang 2022-05-06 16:10:45 -04:00
parent 62ef86e2bd
commit 8a960fca68
4 changed files with 66 additions and 18 deletions

View file

@ -422,18 +422,47 @@
grow_factor = 0
[column]
grow_factor = 0
horizontal_grow = true
border = "all"
border_size = 5
horizontal_alignment = "left"
[toggle_button]
id = "time_limit"
definition = "default"
[grid]
label = _ "Time Limit"
tooltip = _ "Enable custom time limits"
[/toggle_button]
[row]
[column]
grow_factor = 0
border = "all"
border_size = 5
horizontal_alignment = "left"
[toggle_button]
id = "time_limit"
definition = "default"
label = _ "Time Limit"
tooltip = _ "Enable custom time limits"
[/toggle_button]
[/column]
[column]
grow_factor = 1
border = "all"
border_size = 5
horizontal_alignment = "right"
[button]
id = "reset_timer_defaults"
label = _ "Defaults"
definition = "default"
[/button]
[/column]
[/row]
[/grid]
[/column]

View file

@ -289,10 +289,16 @@ void mp_create_game::pre_show(window& win)
bind_status_label<slider>(&win, reservoir_->id());
bind_status_label<slider>(&win, action_bonus_->id());
//
// Timer reset button
//
connect_signal_mouse_left_click(
find_widget<button>(&win, "reset_timer_defaults", false),
std::bind(&mp_create_game::reset_timer_settings, this));
//
// Disable certain settings if we're playing a local game.
//
if(local_mode_) {
find_widget<text_box>(&win, "game_name", false).set_active(false);
find_widget<text_box>(&win, "game_password", false).set_active(false);
@ -754,6 +760,8 @@ void mp_create_game::update_map_settings()
reservoir_ ->widget_set_enabled(window, time_limit, false);
action_bonus_ ->widget_set_enabled(window, time_limit, false);
find_widget<button>(&window, "reset_timer_defaults", false).set_active(time_limit);
if(use_map_settings) {
fog_ ->set_widget_value(window, config_engine_->fog_game_default());
shroud_ ->set_widget_value(window, config_engine_->shroud_game_default());
@ -805,6 +813,22 @@ void mp_create_game::set_active_mods(const std::vector<std::string>& val)
}
}
void mp_create_game::reset_timer_settings()
{
// This allows the defaults to be returned by the pref getters below
preferences::erase("mp_countdown_init_time");
preferences::erase("mp_countdown_reservoir_time");
preferences::erase("mp_countdown_turn_bonus");
preferences::erase("mp_countdown_action_bonus");
auto& w = *get_window();
init_turn_limit_->set_widget_value(w, preferences::countdown_init_time());
turn_bonus_->set_widget_value(w, preferences::countdown_turn_bonus());
reservoir_->set_widget_value(w, preferences::countdown_reservoir_time());
action_bonus_->set_widget_value(w, preferences::countdown_action_bonus());
}
bool mp_create_game::dialog_exit_hook(window& /*window*/)
{
if(!create_engine_.current_level_has_side_data()) {

View file

@ -114,6 +114,8 @@ private:
void update_details();
void update_map_settings();
void reset_timer_settings();
/**
* Dialog exit hook to bring up the difficulty dialog when starting a campaign.
* This only fires when the retval is OK (ie, creating a game), meaning it does not fire

View file

@ -124,13 +124,6 @@ void load_game_prefs()
set_music_volume(music_volume());
set_sound_volume(sound_volume());
if(!preferences::get("remember_timer_settings", false)) {
preferences::erase("mp_countdown_init_time");
preferences::erase("mp_countdown_reservoir_time");
preferences::erase("mp_countdown_turn_bonus");
preferences::erase("mp_countdown_action_bonus");
}
// We save the password encrypted now. Erase any saved passwords in the prefs file.
preferences::erase("password");
preferences::erase("password_is_wrapped");