From 34e9c22c3d06f1ae23d13ce3f0036f1d98576061 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sat, 10 Apr 2021 21:34:27 +0100 Subject: [PATCH] Hide unused climate threshold settings depending on climate threshold mode --- src/settings.cpp | 1 + src/settings_gui.cpp | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/settings.cpp b/src/settings.cpp index 9277d10691..0fc6beef43 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -1495,6 +1495,7 @@ static bool InvalidateAllVehicleImageCaches(int32 p1) static bool ClimateThresholdModeChanged(int32 p1) { InvalidateWindowClassesData(WC_GENERATE_LANDSCAPE); + InvalidateWindowClassesData(WC_GAME_OPTIONS); return true; } diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 107b1f7d94..c28093f5b2 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -1922,10 +1922,13 @@ static SettingsContainer &GetSettingsTree() genworld->Add(new SettingEntry("game_creation.tgen_smoothness")); genworld->Add(new SettingEntry("game_creation.variety")); genworld->Add(new SettingEntry("game_creation.climate_threshold_mode")); - genworld->Add(new SettingEntry("game_creation.snow_coverage")); - genworld->Add(new SettingEntry("game_creation.snow_line_height")); - genworld->Add(new SettingEntry("game_creation.desert_coverage")); - genworld->Add(new SettingEntry("game_creation.rainforest_line_height")); + auto coverage_hide = []() -> bool { return GetGameSettings().game_creation.climate_threshold_mode != 0; }; + auto snow_line_height_hide = []() -> bool { return GetGameSettings().game_creation.climate_threshold_mode != 1 && _game_mode == GM_MENU; }; + auto rainforest_line_height_hide = []() -> bool { return GetGameSettings().game_creation.climate_threshold_mode != 1; }; + genworld->Add(new ConditionallyHiddenSettingEntry("game_creation.snow_coverage", coverage_hide)); + genworld->Add(new ConditionallyHiddenSettingEntry("game_creation.snow_line_height", snow_line_height_hide)); + genworld->Add(new ConditionallyHiddenSettingEntry("game_creation.desert_coverage", coverage_hide)); + genworld->Add(new ConditionallyHiddenSettingEntry("game_creation.rainforest_line_height", rainforest_line_height_hide)); genworld->Add(new SettingEntry("game_creation.amount_of_rivers")); SettingsPage *rivers = genworld->Add(new SettingsPage(STR_CONFIG_SETTING_GENWORLD_RIVERS_LAKES)); {