From d776b302fab1fcbd52f02fdf1dce50bf268d85f8 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Fri, 9 Dec 2022 19:58:07 +0000 Subject: [PATCH] Store the gui.zoom_max setting under a different name in the config file So that it isn't overwritten by vanilla. Otherwise use the vanilla setting value if present and outside the vanilla range. --- src/settings.cpp | 23 +++++++++++++++++++++++ src/table/settings/settings.ini | 2 ++ 2 files changed, 25 insertions(+) diff --git a/src/settings.cpp b/src/settings.cpp index 25dc2600e4..9c50ccde55 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -109,6 +109,8 @@ std::string _secrets_file; ///< Secrets configuration file of OpenTTD. typedef std::list ErrorList; static ErrorList _settings_error_list; ///< Errors while loading minimal settings. +static bool _fallback_gui_zoom_max = false; + /** * List of all the generic setting tables. @@ -1851,6 +1853,24 @@ static bool AllowRoadStopsUnderBridgesSettingGUI(SettingOnGuiCtrlData &data) } } +static bool ZoomMaxCfgName(SettingOnGuiCtrlData &data) +{ + switch (data.type) { + case SOGCT_CFG_NAME: + data.str = "gui.zoom_max_extra"; + _fallback_gui_zoom_max = false; + return true; + + case SOGCT_CFG_FALLBACK_NAME: + data.str = "zoom_max"; + _fallback_gui_zoom_max = true; + return true; + + default: + return false; + } +} + /* End - GUI callbacks */ /** @@ -2299,6 +2319,9 @@ void LoadFromConfig(bool startup) if (FindWindowById(WC_ERRMSG, 0) == nullptr) ShowFirstError(); } else { PostTransparencyOptionLoad(); + if (_fallback_gui_zoom_max && _settings_client.gui.zoom_max <= ZOOM_LVL_OUT_32X) { + _settings_client.gui.zoom_max = ZOOM_LVL_MAX; + } } } diff --git a/src/table/settings/settings.ini b/src/table/settings/settings.ini index 8d2b183c92..7aa175fed2 100644 --- a/src/table/settings/settings.ini +++ b/src/table/settings/settings.ini @@ -86,6 +86,7 @@ static int64 LinkGraphDistModeXrefChillPP(int64 val); static bool LinkGraphDistributionSettingGUI(SettingOnGuiCtrlData &data); static bool OrderTownGrowthRate(SettingOnGuiCtrlData &data); static bool AllowRoadStopsUnderBridgesSettingGUI(SettingOnGuiCtrlData &data); +static bool ZoomMaxCfgName(SettingOnGuiCtrlData &data); /* End - GUI callbacks */ @@ -4536,6 +4537,7 @@ str = STR_CONFIG_SETTING_ZOOM_MAX strhelp = STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT strval = STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X post_cb = ZoomMinMaxChanged +guiproc = ZoomMaxCfgName startup = true [SDTC_VAR]