; This file is part of OpenTTD. ; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. ; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . ; ; Game settings as stored in the main configuration file ("openttd.cfg") ; and in the savegame PATS chunk. ; Game settings are everything related to vehicles, stations, orders, etc. [pre-amble] static constexpr std::initializer_list _roadsides{"left", "right"}; static void StationSpreadChanged(int32 new_value); static void UpdateConsists(int32 new_value); static void TrainAccelerationModelChanged(int32 new_value); static void RoadVehAccelerationModelChanged(int32 new_value); static void TrainSlopeSteepnessChanged(int32 new_value); static void RoadVehSlopeSteepnessChanged(int32 new_value); static bool CheckRoadSide(int32 &new_value); static bool CheckDynamicEngines(int32 &new_value); static void StationCatchmentChanged(int32 new_value); static void MaxVehiclesChanged(int32 new_value); static const SettingVariant _game_settings_table[] = { [post-amble] }; [templates] SDTG_BOOL = SDTG_BOOL($name, $flags, $var, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), SDTG_VAR = SDTG_VAR($name, $type, $flags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), SDTC_BOOL = SDTC_BOOL( $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), SDT_BOOL = SDT_BOOL(GameSettings, $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), SDT_OMANY = SDT_OMANY(GameSettings, $var, $type, $flags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $load, $cat, $extra, $startup), SDT_VAR = SDT_VAR(GameSettings, $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), [validation] SDTG_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); SDT_OMANY = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size"); SDT_VAR = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size"); [defaults] flags = SF_NONE interval = 0 str = STR_NULL strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT strval = STR_NULL pre_cb = nullptr post_cb = nullptr load = nullptr from = SL_MIN_VERSION to = SL_MAX_VERSION cat = SC_ADVANCED extra = 0 startup = false [SDT_BOOL] var = order.no_servicing_if_no_breakdowns def = true str = STR_CONFIG_SETTING_NOSERVICE strhelp = STR_CONFIG_SETTING_NOSERVICE_HELPTEXT [SDT_BOOL] var = order.improved_load flags = SF_NO_NETWORK def = true cat = SC_EXPERT [SDT_BOOL] var = order.selectgoods def = true cat = SC_EXPERT [SDT_BOOL] var = order.serviceathelipad def = true str = STR_CONFIG_SETTING_SERVICEATHELIPAD strhelp = STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT cat = SC_EXPERT [SDT_BOOL] var = order.gradual_loading from = SLV_40 flags = SF_NO_NETWORK def = true cat = SC_EXPERT [SDT_BOOL] var = station.never_expire_airports flags = SF_NO_NETWORK def = false str = STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS strhelp = STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT [SDT_VAR] var = station.station_spread type = SLE_UINT8 def = 12 min = 4 max = 64 str = STR_CONFIG_SETTING_STATION_SPREAD strhelp = STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT strval = STR_CONFIG_SETTING_TILE_LENGTH post_cb = StationSpreadChanged cat = SC_BASIC [SDT_BOOL] var = station.modified_catchment def = true str = STR_CONFIG_SETTING_CATCHMENT strhelp = STR_CONFIG_SETTING_CATCHMENT_HELPTEXT post_cb = StationCatchmentChanged cat = SC_EXPERT [SDT_BOOL] var = station.serve_neutral_industries def = true from = SLV_SERVE_NEUTRAL_INDUSTRIES str = STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES strhelp = STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT post_cb = StationCatchmentChanged [SDT_BOOL] var = station.adjacent_stations from = SLV_62 def = true cat = SC_EXPERT [SDT_BOOL] var = station.distant_join_stations from = SLV_106 def = true str = STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS strhelp = STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT post_cb = [](auto) { CloseWindowById(WC_SELECT_STATION, 0); } [SDT_OMANY] var = vehicle.road_side type = SLE_UINT8 from = SLV_97 flags = SF_GUI_DROPDOWN | SF_NO_NETWORK def = 1 max = 1 full = _roadsides str = STR_CONFIG_SETTING_ROAD_SIDE strhelp = STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT strval = STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT pre_cb = CheckRoadSide cat = SC_BASIC [SDT_VAR] var = vehicle.train_acceleration_model type = SLE_UINT8 flags = SF_GUI_DROPDOWN def = 1 min = 0 max = 1 interval = 1 str = STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL strhelp = STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT strval = STR_CONFIG_SETTING_ORIGINAL post_cb = TrainAccelerationModelChanged [SDT_VAR] var = vehicle.roadveh_acceleration_model type = SLE_UINT8 from = SLV_139 flags = SF_GUI_DROPDOWN def = 1 min = 0 max = 1 interval = 1 str = STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL strhelp = STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT strval = STR_CONFIG_SETTING_ORIGINAL post_cb = RoadVehAccelerationModelChanged [SDT_VAR] var = vehicle.train_slope_steepness type = SLE_UINT8 from = SLV_133 def = 3 min = 0 max = 10 interval = 1 str = STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS strhelp = STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT strval = STR_CONFIG_SETTING_PERCENTAGE post_cb = TrainSlopeSteepnessChanged cat = SC_EXPERT [SDT_VAR] var = vehicle.roadveh_slope_steepness type = SLE_UINT8 from = SLV_139 def = 7 min = 0 max = 10 interval = 1 str = STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS strhelp = STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT strval = STR_CONFIG_SETTING_PERCENTAGE post_cb = RoadVehSlopeSteepnessChanged cat = SC_EXPERT [SDT_VAR] var = vehicle.max_train_length type = SLE_UINT8 from = SLV_159 def = 7 min = 1 max = 64 interval = 1 str = STR_CONFIG_SETTING_TRAIN_LENGTH strhelp = STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT strval = STR_CONFIG_SETTING_TILE_LENGTH cat = SC_BASIC [SDT_VAR] var = vehicle.smoke_amount type = SLE_UINT8 from = SLV_145 flags = SF_GUI_DROPDOWN def = 1 min = 0 max = 2 str = STR_CONFIG_SETTING_SMOKE_AMOUNT strhelp = STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT strval = STR_CONFIG_SETTING_NONE [SDT_BOOL] var = vehicle.never_expire_vehicles flags = SF_NO_NETWORK def = false str = STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES strhelp = STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT [SDT_VAR] var = vehicle.max_trains type = SLE_UINT16 def = 500 min = 0 max = 5000 str = STR_CONFIG_SETTING_MAX_TRAINS strhelp = STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT strval = STR_JUST_COMMA post_cb = MaxVehiclesChanged cat = SC_BASIC [SDT_VAR] var = vehicle.max_roadveh type = SLE_UINT16 def = 500 min = 0 max = 5000 str = STR_CONFIG_SETTING_MAX_ROAD_VEHICLES strhelp = STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT strval = STR_JUST_COMMA post_cb = MaxVehiclesChanged cat = SC_BASIC [SDT_VAR] var = vehicle.max_aircraft type = SLE_UINT16 def = 200 min = 0 max = 5000 str = STR_CONFIG_SETTING_MAX_AIRCRAFT strhelp = STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT strval = STR_JUST_COMMA post_cb = MaxVehiclesChanged cat = SC_BASIC [SDT_VAR] var = vehicle.max_ships type = SLE_UINT16 def = 300 min = 0 max = 5000 str = STR_CONFIG_SETTING_MAX_SHIPS strhelp = STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT strval = STR_JUST_COMMA post_cb = MaxVehiclesChanged cat = SC_BASIC [SDT_BOOL] var = vehicle.wagon_speed_limits flags = SF_NO_NETWORK def = true str = STR_CONFIG_SETTING_WAGONSPEEDLIMITS strhelp = STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT post_cb = UpdateConsists [SDT_BOOL] var = vehicle.disable_elrails from = SLV_38 flags = SF_NO_NETWORK def = false str = STR_CONFIG_SETTING_DISABLE_ELRAILS strhelp = STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT post_cb = SettingsDisableElrail cat = SC_EXPERT [SDT_VAR] var = vehicle.freight_trains type = SLE_UINT8 from = SLV_39 flags = SF_NO_NETWORK def = 1 min = 1 max = 255 interval = 1 str = STR_CONFIG_SETTING_FREIGHT_TRAINS strhelp = STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT strval = STR_JUST_COMMA post_cb = UpdateConsists [SDT_VAR] var = vehicle.plane_speed type = SLE_UINT8 from = SLV_90 flags = SF_NO_NETWORK def = 4 min = 1 max = 4 str = STR_CONFIG_SETTING_PLANE_SPEED strhelp = STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT strval = STR_CONFIG_SETTING_PLANE_SPEED_VALUE [SDT_BOOL] var = vehicle.dynamic_engines from = SLV_95 flags = SF_NO_NETWORK def = true pre_cb = CheckDynamicEngines cat = SC_EXPERT [SDT_VAR] var = vehicle.plane_crashes type = SLE_UINT8 from = SLV_138 flags = SF_GUI_DROPDOWN def = 2 min = 0 max = 2 interval = 1 str = STR_CONFIG_SETTING_PLANE_CRASHES strhelp = STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT strval = STR_CONFIG_SETTING_PLANE_CRASHES_NONE cat = SC_BASIC [SDT_VAR] var = vehicle.extend_vehicle_life type = SLE_UINT8 def = 0 min = 0 max = 100 cat = SC_EXPERT ## Old vehicle settings. [SDTG_BOOL] name = ""vehicle.servint_ispercent"" flags = SF_NO_NETWORK var = _old_vds.servint_ispercent def = false to = SLV_120 [SDTG_VAR] name = ""vehicle.servint_trains"" type = SLE_UINT16 flags = SF_GUI_0_IS_SPECIAL var = _old_vds.servint_trains def = 150 min = 5 max = 800 to = SLV_120 [SDTG_VAR] name = ""vehicle.servint_roadveh"" type = SLE_UINT16 flags = SF_GUI_0_IS_SPECIAL var = _old_vds.servint_roadveh def = 150 min = 5 max = 800 to = SLV_120 [SDTG_VAR] name = ""vehicle.servint_ships"" type = SLE_UINT16 flags = SF_GUI_0_IS_SPECIAL var = _old_vds.servint_ships def = 360 min = 5 max = 800 to = SLV_120 [SDTG_VAR] name = ""vehicle.servint_aircraft"" type = SLE_UINT16 flags = SF_GUI_0_IS_SPECIAL var = _old_vds.servint_aircraft def = 150 min = 5 max = 800 to = SLV_120 [SDT_VAR] base = GameSettings var = construction.simulated_wormhole_signals type = SLE_UINT8 flags = SF_NONE def = 2 min = 1 max = 16 str = STR_CONFIG_SETTING_SIMULATE_SIGNALS strval = STR_CONFIG_SETTING_SIMULATE_SIGNALS_VALUE proc = RedrawScreen from = SL_MIN_VERSION cat = SC_BASIC ## These were once in the "gui" section, but they really are related to orders. [SDTC_BOOL] var = gui.sg_full_load_any from = SLV_22 to = SLV_93 def = true [SDTC_BOOL] var = gui.sg_new_nonstop from = SLV_22 to = SLV_93 def = false