diff --git a/src/lang/english.txt b/src/lang/english.txt index 739b47e08e..8fde82c662 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -6058,3 +6058,4 @@ CM_STR_VIEWPORT_TOWN_TINY_EXCELLENT_RATING :{TINY_FONT}{GRE CM_STR_CARGO_WITH_ID :{STRING} {SILVER}#{NUM} CM_STR_INDUSTRY_TYPE_WITH_ID :{STRING} {SILVER}#{NUM} +CM_STR_CONFIG_SETTING_TYPE_DROPDOWN_CITYMANIA :CityMania patchpack settings diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 1e3b0b95b7..a31f667b30 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -1191,7 +1191,9 @@ bool SettingEntry::UpdateFilterState(SettingFilter &filter, bool force_visible) } if (visible) { - if (filter.type != ST_ALL && sd->GetType() != filter.type) { + if (filter.type != ST_ALL && + ((filter.type != CM_ST_CITYMANIA || (sd->flags & CM_SF_CITYMANIA) == 0) && + sd->GetType() != filter.type)) { filter.type_hides = true; visible = false; } @@ -2119,6 +2121,7 @@ struct GameSettingsWindow : Window { case ST_GAME: SetDParam(0, _game_mode == GM_MENU ? STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU : STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME); break; case ST_COMPANY: SetDParam(0, _game_mode == GM_MENU ? STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU : STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME); break; case ST_CLIENT: SetDParam(0, STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT); break; + case CM_ST_CITYMANIA: SetDParam(0, CM_STR_CONFIG_SETTING_TYPE_DROPDOWN_CITYMANIA); break; default: SetDParam(0, STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL); break; } break; @@ -2144,6 +2147,7 @@ struct GameSettingsWindow : Window { list.emplace_back(new DropDownListStringItem(_game_mode == GM_MENU ? STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU : STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME, ST_GAME, false)); list.emplace_back(new DropDownListStringItem(_game_mode == GM_MENU ? STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU : STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME, ST_COMPANY, false)); list.emplace_back(new DropDownListStringItem(STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT, ST_CLIENT, false)); + list.emplace_back(new DropDownListStringItem(CM_STR_CONFIG_SETTING_TYPE_DROPDOWN_CITYMANIA, CM_ST_CITYMANIA, false)); break; } return list; diff --git a/src/settings_internal.h b/src/settings_internal.h index 75b520222c..485f626840 100644 --- a/src/settings_internal.h +++ b/src/settings_internal.h @@ -28,6 +28,7 @@ enum SettingFlag : uint16 { SF_NOT_IN_SAVE = 1 << 10, ///< Do not save with savegame, basically client-based. SF_NOT_IN_CONFIG = 1 << 11, ///< Do not save to config file. SF_NO_NETWORK_SYNC = 1 << 12, ///< Do not synchronize over network (but it is saved if SF_NOT_IN_SAVE is not set). + CM_SF_CITYMANIA = 1 << 13, ///< Added by CityMania patchpack. }; DECLARE_ENUM_AS_BIT_SET(SettingFlag) @@ -64,6 +65,8 @@ enum SettingType { ST_CLIENT, ///< Client setting. ST_ALL, ///< Used in setting filter to match all types. + + CM_ST_CITYMANIA, ///< CityMania settings. }; struct IniItem; diff --git a/src/table/settings/cmclient_settings.ini b/src/table/settings/cmclient_settings.ini index b09344863f..69aacfe2e2 100644 --- a/src/table/settings/cmclient_settings.ini +++ b/src/table/settings/cmclient_settings.ini @@ -19,7 +19,7 @@ SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $def, $ma SDTC_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); [defaults] -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | CM_SF_CITYMANIA interval = 0 str = STR_NULL strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT @@ -60,7 +60,7 @@ str = CM_STR_CONFIG_SETTING_AUTOSET_NOLOAD_ON_UNLOAD [SDTC_OMANY] var = gui.cm_ctrl_order_mod type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN | CM_SF_CITYMANIA def = 1 max = 6 full = _order_mod_actions @@ -71,7 +71,7 @@ cat = SC_BASIC [SDTC_OMANY] var = gui.cm_shift_order_mod type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN | CM_SF_CITYMANIA def = 0 max = 6 full = _order_mod_actions @@ -82,7 +82,7 @@ cat = SC_BASIC [SDTC_OMANY] var = gui.cm_ctrl_shift_order_mod type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN | CM_SF_CITYMANIA def = 2 max = 6 full = _order_mod_actions @@ -93,7 +93,7 @@ cat = SC_BASIC [SDTC_OMANY] var = gui.cm_alt_order_mod type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN | CM_SF_CITYMANIA def = 4 max = 6 full = _order_mod_actions @@ -104,7 +104,7 @@ cat = SC_BASIC [SDTC_OMANY] var = gui.cm_alt_shift_order_mod type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN | CM_SF_CITYMANIA def = 3 max = 6 full = _order_mod_actions @@ -115,7 +115,7 @@ cat = SC_BASIC [SDTC_OMANY] var = gui.cm_alt_ctrl_order_mod type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN | CM_SF_CITYMANIA def = 5 max = 6 full = _order_mod_actions @@ -174,7 +174,7 @@ strhelp = CM_STR_CONFIG_SETTING_LAND_TOOLTIPS_FOR_HOUSES_HELPTEXT [SDTC_OMANY] var = gui.cm_fn_mod type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN | CM_SF_CITYMANIA full = _mod_keys def = 2 min = 0 @@ -187,7 +187,7 @@ cat = SC_ADVANCED [SDTC_OMANY] var = gui.cm_remove_mod type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN | CM_SF_CITYMANIA full = _mod_keys def = 2 min = 0 @@ -200,7 +200,7 @@ cat = SC_ADVANCED [SDTC_OMANY] var = gui.cm_estimate_mod type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN | CM_SF_CITYMANIA full = _mod_keys def = 1 min = 0 @@ -213,7 +213,7 @@ cat = SC_ADVANCED [SDTC_OMANY] var = gui.cm_shaded_trees type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN | CM_SF_CITYMANIA full = _shaded_tree_options def = 2 min = 0 @@ -235,7 +235,7 @@ post_cb = cm_v_RedrawStatusBar [SDTC_OMANY] var = gui.cm_graph_background type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN | CM_SF_CITYMANIA full = _graph_background_options def = 0 min = 0 @@ -271,7 +271,6 @@ cat = SC_BASIC var = gui.cm_show_client_overlay def = false cat = SC_BASIC -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC [SDTC_BOOL] var = gui.cm_enable_polyrail_terraform