/* * 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 . */ /** @file settings_compat.h Tables for loading non-table format settings chunks. */ #ifndef SETTINGS_COMPAT_H #define SETTINGS_COMPAT_H #define SLCX_VAR(name) {name, SettingsCompatType::Setting, 0, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(), nullptr} #define SLCX_NULL_X(length, from, to, extver) {{}, SettingsCompatType::Null, length, from, to, extver, nullptr} #define SLCX_NULL(length, from, to) SLCX_NULL_X(length, from, to, SlXvFeatureTest()) #define SLCX_XREF(name, from, to, extver) {name, SettingsCompatType::Xref, 0, from, to, extver, nullptr} #define SLCX_XREFCVT(name, from, to, extver, cvt) {name, SettingsCompatType::Xref, 0, from, to, extver, cvt} static std::initializer_list _gameopt_compat{ SLCX_VAR("diff_custom"), SLCX_VAR("diff_level"), SLCX_VAR("locale.currency"), SLCX_VAR("units"), SLCX_VAR("game_creation.town_name"), SLCX_VAR("game_creation.landscape"), SLCX_VAR("game_creation.snow_line_height"), SLCX_NULL_X(2, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)), // game_creation.desert_amount SLCX_NULL(1, SLV_22, SLV_165), SLCX_NULL(1, SL_MIN_VERSION, SLV_23), SLCX_VAR("vehicle.road_side"), }; static std::initializer_list _settings_compat{ SLCX_VAR("difficulty.max_no_competitors"), SLCX_NULL(1, SLV_97, SLV_110), // difficulty.competitor_start_time SLCX_VAR("difficulty.number_towns"), SLCX_VAR("difficulty.industry_density"), SLCX_VAR("difficulty.max_loan"), SLCX_VAR("difficulty.initial_interest"), SLCX_VAR("difficulty.vehicle_costs"), SLCX_VAR("difficulty.competitor_speed"), SLCX_NULL(1, SLV_97, SLV_110), // difficulty.competitor_intelligence SLCX_VAR("difficulty.vehicle_breakdowns"), SLCX_VAR("difficulty.subsidy_multiplier"), SLCX_VAR("difficulty.subsidy_duration"), SLCX_VAR("difficulty.construction_cost"), SLCX_VAR("difficulty.terrain_type"), SLCX_VAR("difficulty.quantity_sea_lakes"), SLCX_VAR("difficulty.economy"), SLCX_VAR("difficulty.line_reverse_mode"), SLCX_VAR("difficulty.disasters"), SLCX_VAR("difficulty.town_council_tolerance"), SLCX_VAR("diff_level"), SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), SLCX_XREF("order.old_timetable_separation", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), SLCX_VAR("game_creation.town_name"), SLCX_VAR("game_creation.landscape"), SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), // snow line upper byte SLCX_NULL(1, SLV_97, SLV_164), // snow line SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), // game_creation.desert_amount SLCX_NULL_X(2, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), // game_creation.tree_line SLCX_VAR("vehicle.road_side"), SLCX_VAR("construction.map_height_limit"), SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), // construction.allow_more_heightlevels SLCX_VAR("game_creation.heightmap_height"), SLCX_VAR("construction.build_on_slopes"), SLCX_VAR("construction.command_pause_level"), SLCX_VAR("construction.terraform_per_64k_frames"), SLCX_VAR("construction.terraform_frame_burst"), SLCX_VAR("construction.clear_per_64k_frames"), SLCX_VAR("construction.clear_frame_burst"), SLCX_VAR("construction.tree_per_64k_frames"), SLCX_VAR("construction.tree_frame_burst"), SLCX_VAR("construction.autoslope"), SLCX_VAR("construction.extra_dynamite"), SLCX_VAR("construction.max_bridge_length"), SLCX_XREF("construction.old_simulated_wormhole_signals", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 2)), SLCX_XREF("construction.old_simulated_wormhole_signals", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)), SLCX_VAR("construction.max_bridge_height"), SLCX_VAR("construction.max_tunnel_length"), SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_233)), // construction.max_chunnel_exit_length SLCX_XREF("construction.maximum_signal_evaluations", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), SLCX_XREF("construction.chunnel", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)), SLCX_NULL(1, SL_MIN_VERSION, SLV_159), // construction.longbridges SLCX_VAR("construction.train_signal_side"), SLCX_VAR("station.never_expire_airports"), SLCX_VAR("economy.town_layout"), SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), // economy.town_construction_cost SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), // economy.station_rating_type SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 7)), // economy.scale_industry_production SLCX_VAR("economy.allow_town_roads"), SLCX_XREF("economy.old_town_cargo_factor", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), SLCX_XREF("economy.day_length_factor", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLCX_VAR("economy.found_town"), SLCX_VAR("economy.allow_town_level_crossings"), SLCX_XREF("economy.old_town_cargo_factor", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLCX_VAR("economy.town_cargogen_mode"), SLCX_XREF("economy.max_town_heightlevel", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)), SLCX_VAR("linkgraph.recalc_interval"), SLCX_VAR("linkgraph.recalc_time"), SLCX_VAR("linkgraph.distribution_pax"), SLCX_VAR("linkgraph.distribution_mail"), SLCX_VAR("linkgraph.distribution_armoured"), SLCX_VAR("linkgraph.distribution_default"), SLCX_VAR("linkgraph.distribution_per_cargo[0]"), SLCX_VAR("linkgraph.distribution_per_cargo[1]"), SLCX_VAR("linkgraph.distribution_per_cargo[2]"), SLCX_VAR("linkgraph.distribution_per_cargo[3]"), SLCX_VAR("linkgraph.distribution_per_cargo[4]"), SLCX_VAR("linkgraph.distribution_per_cargo[5]"), SLCX_VAR("linkgraph.distribution_per_cargo[6]"), SLCX_VAR("linkgraph.distribution_per_cargo[7]"), SLCX_VAR("linkgraph.distribution_per_cargo[8]"), SLCX_VAR("linkgraph.distribution_per_cargo[9]"), SLCX_VAR("linkgraph.distribution_per_cargo[10]"), SLCX_VAR("linkgraph.distribution_per_cargo[11]"), SLCX_VAR("linkgraph.distribution_per_cargo[12]"), SLCX_VAR("linkgraph.distribution_per_cargo[13]"), SLCX_VAR("linkgraph.distribution_per_cargo[14]"), SLCX_VAR("linkgraph.distribution_per_cargo[15]"), SLCX_VAR("linkgraph.distribution_per_cargo[16]"), SLCX_VAR("linkgraph.distribution_per_cargo[17]"), SLCX_VAR("linkgraph.distribution_per_cargo[18]"), SLCX_VAR("linkgraph.distribution_per_cargo[19]"), SLCX_VAR("linkgraph.distribution_per_cargo[20]"), SLCX_VAR("linkgraph.distribution_per_cargo[21]"), SLCX_VAR("linkgraph.distribution_per_cargo[22]"), SLCX_VAR("linkgraph.distribution_per_cargo[23]"), SLCX_VAR("linkgraph.distribution_per_cargo[24]"), SLCX_VAR("linkgraph.distribution_per_cargo[25]"), SLCX_VAR("linkgraph.distribution_per_cargo[26]"), SLCX_VAR("linkgraph.distribution_per_cargo[27]"), SLCX_VAR("linkgraph.distribution_per_cargo[28]"), SLCX_VAR("linkgraph.distribution_per_cargo[29]"), SLCX_VAR("linkgraph.distribution_per_cargo[30]"), SLCX_VAR("linkgraph.distribution_per_cargo[31]"), SLCX_VAR("linkgraph.distribution_per_cargo[32]"), SLCX_VAR("linkgraph.distribution_per_cargo[33]"), SLCX_VAR("linkgraph.distribution_per_cargo[34]"), SLCX_VAR("linkgraph.distribution_per_cargo[35]"), SLCX_VAR("linkgraph.distribution_per_cargo[36]"), SLCX_VAR("linkgraph.distribution_per_cargo[37]"), SLCX_VAR("linkgraph.distribution_per_cargo[38]"), SLCX_VAR("linkgraph.distribution_per_cargo[39]"), SLCX_VAR("linkgraph.distribution_per_cargo[40]"), SLCX_VAR("linkgraph.distribution_per_cargo[41]"), SLCX_VAR("linkgraph.distribution_per_cargo[42]"), SLCX_VAR("linkgraph.distribution_per_cargo[43]"), SLCX_VAR("linkgraph.distribution_per_cargo[44]"), SLCX_VAR("linkgraph.distribution_per_cargo[45]"), SLCX_VAR("linkgraph.distribution_per_cargo[46]"), SLCX_VAR("linkgraph.distribution_per_cargo[47]"), SLCX_VAR("linkgraph.distribution_per_cargo[48]"), SLCX_VAR("linkgraph.distribution_per_cargo[49]"), SLCX_VAR("linkgraph.distribution_per_cargo[50]"), SLCX_VAR("linkgraph.distribution_per_cargo[51]"), SLCX_VAR("linkgraph.distribution_per_cargo[52]"), SLCX_VAR("linkgraph.distribution_per_cargo[53]"), SLCX_VAR("linkgraph.distribution_per_cargo[54]"), SLCX_VAR("linkgraph.distribution_per_cargo[55]"), SLCX_VAR("linkgraph.distribution_per_cargo[56]"), SLCX_VAR("linkgraph.distribution_per_cargo[57]"), SLCX_VAR("linkgraph.distribution_per_cargo[58]"), SLCX_VAR("linkgraph.distribution_per_cargo[59]"), SLCX_VAR("linkgraph.distribution_per_cargo[60]"), SLCX_VAR("linkgraph.distribution_per_cargo[61]"), SLCX_VAR("linkgraph.distribution_per_cargo[62]"), SLCX_VAR("linkgraph.distribution_per_cargo[63]"), SLCX_VAR("linkgraph.accuracy"), SLCX_VAR("linkgraph.demand_distance"), SLCX_VAR("linkgraph.demand_size"), SLCX_VAR("linkgraph.short_path_saturation"), SLCX_VAR("linkgraph.aircraft_link_scale"), SLCX_XREF("economy.old_town_cargo_factor", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)), SLCX_VAR("vehicle.train_acceleration_model"), SLCX_VAR("vehicle.roadveh_acceleration_model"), SLCX_VAR("vehicle.train_slope_steepness"), SLCX_VAR("vehicle.roadveh_slope_steepness"), SLCX_VAR("pf.forbid_90_deg"), SLCX_XREF("pf.back_of_one_way_pbs_waiting_point", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)), SLCX_XREF("pf.back_of_one_way_pbs_waiting_point", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), SLCX_VAR("vehicle.max_train_length"), SLCX_NULL(1, SL_MIN_VERSION, SLV_159), // vehicle.mammoth_trains SLCX_VAR("vehicle.smoke_amount"), SLCX_NULL_X(1, SL_MIN_VERSION, SLV_159, SlXvFeatureTest(XSLFTO_OR, XSLFI_CHILLPP, SL_CHILLPP_232)), // order.gotodepot SLCX_VAR("pf.roadveh_queue"), SLCX_VAR("pf.new_pathfinding_all"), SLCX_VAR("pf.yapf.ship_use_yapf"), SLCX_VAR("pf.yapf.road_use_yapf"), SLCX_VAR("pf.yapf.rail_use_yapf"), SLCX_VAR("pf.pathfinder_for_trains"), SLCX_VAR("pf.pathfinder_for_roadvehs"), SLCX_VAR("pf.pathfinder_for_ships"), SLCX_VAR("vehicle.never_expire_vehicles"), SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), // vehicle.exact_intro_date SLCX_VAR("vehicle.max_trains"), SLCX_VAR("vehicle.max_roadveh"), SLCX_VAR("vehicle.max_aircraft"), SLCX_VAR("vehicle.max_ships"), SLCX_VAR("vehicle.servint_ispercent"), SLCX_VAR("vehicle.servint_trains"), SLCX_VAR("vehicle.servint_roadveh"), SLCX_VAR("vehicle.servint_ships"), SLCX_VAR("vehicle.servint_aircraft"), SLCX_VAR("order.no_servicing_if_no_breakdowns"), SLCX_VAR("vehicle.wagon_speed_limits"), SLCX_XREF("vehicle.slow_road_vehicles_in_curves", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP, SL_JOKER_1_25)), SLCX_XREF("vehicle.train_speed_adaptation", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)), SLCX_VAR("vehicle.disable_elrails"), SLCX_VAR("vehicle.freight_trains"), SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), // vehicle.freight_mult_to_passengers SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), // ticks_per_minute SLCX_NULL_X(1, SLV_67, SLV_159, SlXvFeatureTest(XSLFTO_OR, XSLFI_CHILLPP, SL_CHILLPP_232)), // order.timetabling SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), // order.timetable_automated SLCX_XREF("order.old_timetable_separation", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLCX_VAR("vehicle.plane_speed"), SLCX_VAR("vehicle.dynamic_engines"), SLCX_VAR("vehicle.plane_crashes"), SLCX_XREF("vehicle.improved_breakdowns", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), SLCX_XREF("vehicle.improved_breakdowns", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), SLCX_NULL(1, SL_MIN_VERSION, SLV_159), // station.join_stations SLCX_VAR("gui.sg_full_load_any"), SLCX_VAR("order.improved_load"), SLCX_VAR("order.selectgoods"), SLCX_NULL_X(2, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), // economy.deliver_goods, vehicle.cargo_wait_time SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)), // order.automatic_timetable_separation SLCX_NULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP, SL_JOKER_1_24)), // order.timetable_auto_{travel_buffer, load_buffer, travel_rounding, load_rounding} SLCX_VAR("gui.sg_new_nonstop"), SLCX_NULL(1, SL_MIN_VERSION, SLV_159), // station.nonuniform_stations SLCX_VAR("station.station_spread"), SLCX_VAR("order.serviceathelipad"), SLCX_VAR("station.modified_catchment"), SLCX_VAR("station.serve_neutral_industries"), SLCX_VAR("order.gradual_loading"), SLCX_VAR("construction.road_stop_on_town_road"), SLCX_VAR("construction.road_stop_on_competitor_road"), SLCX_XREF("construction.road_custom_bridge_heads", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)), SLCX_VAR("station.adjacent_stations"), SLCX_VAR("economy.station_noise_level"), SLCX_VAR("station.distant_join_stations"), SLCX_NULL_X(6, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), // construction.{traffic_lights, towns_build_traffic_lights, allow_building_tls_in_towns, traffic_lights_green_phase, max_tlc_size, max_tlc_distance} SLCX_VAR("economy.inflation"), SLCX_VAR("construction.raw_industry_construction"), SLCX_VAR("construction.industry_platform"), SLCX_VAR("economy.multiple_industry_per_town"), SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 4)), // economy.allow_automatic_industries SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), // construction.extra_industry_placement_logic SLCX_NULL(1, SL_MIN_VERSION, SLV_141), SLCX_NULL_X(6, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), // economy.minimum_distance_{town, industry, ind_town} SLCX_VAR("economy.bribe"), SLCX_VAR("economy.exclusive_rights"), SLCX_VAR("economy.fund_buildings"), SLCX_VAR("economy.fund_roads"), SLCX_VAR("economy.give_money"), SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)), // game_creation.tree_line_height SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), // snow line upper byte SLCX_VAR("game_creation.snow_line_height"), SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), // game_creation.desert_amount SLCX_NULL_X(2, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), // game_creation.tree_line SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)), // game_creation.desert_amount SLCX_VAR("game_creation.snow_coverage"), SLCX_VAR("game_creation.desert_coverage"), SLCX_NULL_X(4, SL_MIN_VERSION, SLV_144, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, 0, 0)), SLCX_VAR("game_creation.starting_year"), SLCX_NULL(4, SL_MIN_VERSION, SLV_105), SLCX_VAR("game_creation.ending_year"), SLCX_VAR("economy.type"), SLCX_VAR("economy.allow_shares"), SLCX_VAR("economy.min_years_for_shares"), SLCX_VAR("economy.feeder_payment_share"), SLCX_XREF("economy.day_length_factor", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), SLCX_NULL_X(71, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), // economy.price_mult[0-70] SLCX_NULL_X(16, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), // economy.price_rails[0-15] SLCX_NULL_X(16, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), // economy.rail_maintenance[0-15] SLCX_XREF("vehicle.pay_for_repair", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), // note that this has changed format in SpringPP 2.1.147 SLCX_XREF("vehicle.repair_cost", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), SLCX_NULL_X(7, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), // economy.town_consumption_rate, economy.town_pop_* SLCX_NULL_X(18, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), // economy.town_consumption_rates[0-2][0-2] SLCX_NULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), // economy.town_effects[0-2], economy.grow_if_one_delivered SLCX_VAR("economy.town_growth_rate"), SLCX_VAR("economy.larger_towns"), SLCX_VAR("economy.initial_city_size"), SLCX_NULL_X(10, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), // economy.{town_growth_cargo, town_pop_need_goods, larger_town_growth_cargo, larger_town_pop_need_goods} SLCX_VAR("economy.mod_road_rebuild"), SLCX_XREF("construction.maximum_signal_evaluations", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLCX_XREF("economy.town_min_distance", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)), SLCX_XREF("economy.infrastructure_sharing[0]", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), SLCX_XREF("economy.infrastructure_sharing[1]", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), SLCX_XREF("economy.infrastructure_sharing[2]", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), SLCX_XREF("economy.infrastructure_sharing[3]", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), SLCX_XREF("economy.sharing_fee[0]", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), SLCX_XREF("economy.sharing_fee[1]", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), SLCX_XREF("economy.sharing_fee[2]", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), SLCX_XREF("economy.sharing_fee[3]", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), SLCX_XREF("economy.sharing_payment_in_debt", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), SLCX_XREF("economy.infrastructure_sharing[0]", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), SLCX_XREF("economy.infrastructure_sharing[1]", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), SLCX_XREF("economy.infrastructure_sharing[2]", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), SLCX_XREF("economy.infrastructure_sharing[3]", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), SLCX_XREF("economy.sharing_fee[0]", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), SLCX_XREF("economy.sharing_fee[1]", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), SLCX_XREF("economy.sharing_fee[2]", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), SLCX_XREF("economy.sharing_fee[3]", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), SLCX_XREF("economy.sharing_payment_in_debt", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), SLCX_XREF("economy.day_length_factor", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)), SLCX_NULL(1, SL_MIN_VERSION, SLV_107), // previously ai-new setting SLCX_NULL(1, SLV_178, SLV_TABLE_CHUNKS), // previously script.settings_profile SLCX_VAR("ai.ai_in_multiplayer"), SLCX_VAR("ai.ai_disable_veh_train"), SLCX_VAR("ai.ai_disable_veh_roadveh"), SLCX_VAR("ai.ai_disable_veh_aircraft"), SLCX_VAR("ai.ai_disable_veh_ship"), SLCX_VAR("script.script_max_opcode_till_suspend"), SLCX_VAR("script.script_max_memory_megabytes"), SLCX_VAR("vehicle.extend_vehicle_life"), SLCX_VAR("economy.dist_local_authority"), SLCX_VAR("pf.reverse_at_signals"), SLCX_VAR("pf.wait_oneway_signal"), SLCX_VAR("pf.wait_twoway_signal"), SLCX_VAR("economy.town_noise_population[0]"), SLCX_VAR("economy.town_noise_population[1]"), SLCX_VAR("economy.town_noise_population[2]"), SLCX_VAR("economy.infrastructure_maintenance"), SLCX_XREF("economy.infrastructure_maintenance", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), SLCX_NULL_X(6, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), // construction.traffic_lights... SLCX_XREF("linkgraph.recalc_interval", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLCX_XREFCVT("linkgraph.distribution_pax", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP), LinkGraphDistModeXrefChillPP), SLCX_XREFCVT("linkgraph.distribution_mail", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP), LinkGraphDistModeXrefChillPP), SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), // linkgraph.distribution_express SLCX_XREFCVT("linkgraph.distribution_armoured", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP), LinkGraphDistModeXrefChillPP), SLCX_XREFCVT("linkgraph.distribution_default", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP), LinkGraphDistModeXrefChillPP), SLCX_XREF("linkgraph.accuracy", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLCX_XREF("linkgraph.demand_size", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLCX_XREF("linkgraph.demand_distance", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLCX_XREF("linkgraph.short_path_saturation", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP)), SLCX_NULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), // linkgraph.no_overload_links SLCX_VAR("pf.wait_for_pbs_path"), SLCX_VAR("pf.reserve_paths"), SLCX_VAR("pf.path_backoff_interval"), SLCX_NULL(3, SL_MIN_VERSION, SLV_REMOVE_OPF), // pf.opf.pf_maxlength & pf.opf.pf_maxdepth SLCX_VAR("pf.npf.npf_max_search_nodes"), SLCX_VAR("pf.npf.npf_rail_firstred_penalty"), SLCX_VAR("pf.npf.npf_rail_firstred_exit_penalty"), SLCX_VAR("pf.npf.npf_rail_lastred_penalty"), SLCX_VAR("pf.npf.npf_rail_station_penalty"), SLCX_VAR("pf.npf.npf_rail_slope_penalty"), SLCX_VAR("pf.npf.npf_rail_curve_penalty"), SLCX_VAR("pf.npf.npf_rail_depot_reverse_penalty"), SLCX_VAR("pf.npf.npf_rail_pbs_cross_penalty"), SLCX_VAR("pf.npf.npf_rail_pbs_signal_back_penalty"), SLCX_VAR("pf.npf.npf_buoy_penalty"), SLCX_VAR("pf.npf.npf_water_curve_penalty"), SLCX_VAR("pf.npf.npf_road_curve_penalty"), SLCX_VAR("pf.npf.npf_crossing_penalty"), SLCX_VAR("pf.npf.npf_road_drive_through_penalty"), SLCX_NULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), // pf.npf.npf_road_trafficlight_penalty SLCX_NULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), // pf.npf.npf_road_trafficlight_penalty SLCX_VAR("pf.npf.npf_road_dt_occupied_penalty"), SLCX_VAR("pf.npf.npf_road_bay_occupied_penalty"), SLCX_VAR("pf.npf.maximum_go_to_depot_penalty"), SLCX_VAR("pf.yapf.disable_node_optimization"), SLCX_VAR("pf.yapf.max_search_nodes"), SLCX_VAR("pf.yapf.rail_firstred_twoway_eol"), SLCX_VAR("pf.yapf.rail_firstred_penalty"), SLCX_VAR("pf.yapf.rail_firstred_exit_penalty"), SLCX_VAR("pf.yapf.rail_lastred_penalty"), SLCX_VAR("pf.yapf.rail_lastred_exit_penalty"), SLCX_VAR("pf.yapf.rail_station_penalty"), SLCX_VAR("pf.yapf.rail_slope_penalty"), SLCX_VAR("pf.yapf.rail_curve45_penalty"), SLCX_VAR("pf.yapf.rail_curve90_penalty"), SLCX_VAR("pf.yapf.rail_depot_reverse_penalty"), SLCX_VAR("pf.yapf.rail_crossing_penalty"), SLCX_VAR("pf.yapf.rail_look_ahead_max_signals"), SLCX_VAR("pf.yapf.rail_look_ahead_signal_p0"), SLCX_VAR("pf.yapf.rail_look_ahead_signal_p1"), SLCX_VAR("pf.yapf.rail_look_ahead_signal_p2"), SLCX_VAR("pf.yapf.rail_pbs_cross_penalty"), SLCX_VAR("pf.yapf.rail_pbs_station_penalty"), SLCX_VAR("pf.yapf.rail_pbs_signal_back_penalty"), SLCX_VAR("pf.yapf.rail_doubleslip_penalty"), SLCX_VAR("pf.yapf.rail_longer_platform_penalty"), SLCX_VAR("pf.yapf.rail_longer_platform_per_tile_penalty"), SLCX_VAR("pf.yapf.rail_shorter_platform_penalty"), SLCX_VAR("pf.yapf.rail_shorter_platform_per_tile_penalty"), SLCX_VAR("pf.yapf.road_slope_penalty"), SLCX_VAR("pf.yapf.road_curve_penalty"), SLCX_VAR("pf.yapf.road_crossing_penalty"), SLCX_NULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), // pf.yapf.road_trafficlight_penalty SLCX_NULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), // pf.yapf.road_trafficlight_penalty SLCX_VAR("pf.yapf.road_stop_penalty"), SLCX_VAR("pf.yapf.road_stop_occupied_penalty"), SLCX_VAR("pf.yapf.road_stop_bay_occupied_penalty"), SLCX_VAR("pf.yapf.maximum_go_to_depot_penalty"), SLCX_VAR("pf.yapf.ship_curve45_penalty"), SLCX_VAR("pf.yapf.ship_curve90_penalty"), SLCX_VAR("game_creation.land_generator"), SLCX_VAR("game_creation.oil_refinery_limit"), SLCX_VAR("game_creation.tgen_smoothness"), SLCX_VAR("game_creation.variety"), SLCX_VAR("game_creation.generation_seed"), SLCX_VAR("game_creation.tree_placer"), SLCX_VAR("construction.freeform_edges"), SLCX_VAR("game_creation.water_borders"), SLCX_VAR("game_creation.custom_town_number"), SLCX_VAR("construction.extra_tree_placement"), SLCX_NULL_X(3, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CHILLPP, SL_CHILLPP_232)), // construction.{tree_placement_drag_limit, ingame_tree_line_height, tree_growth_rate} SLCX_XREF("construction.tree_growth_rate", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)), SLCX_XREF("construction.trees_around_snow_line_range", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)), SLCX_VAR("game_creation.custom_terrain_type"), SLCX_VAR("game_creation.custom_sea_level"), SLCX_VAR("game_creation.min_river_length"), SLCX_VAR("game_creation.river_route_random"), SLCX_VAR("game_creation.amount_of_rivers"), SLCX_XREF("game_creation.build_public_roads", SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_JOKERPP)), SLCX_VAR("locale.currency"), SLCX_VAR("units"), SLCX_VAR("locale.units_velocity"), SLCX_VAR("locale.units_power"), SLCX_VAR("locale.units_weight"), SLCX_VAR("locale.units_volume"), SLCX_VAR("locale.units_force"), SLCX_VAR("locale.units_height"), SLCX_VAR("locale.digit_group_separator"), SLCX_VAR("locale.digit_group_separator_currency"), SLCX_VAR("locale.digit_decimal_separator"), SLCX_NULL_X(2, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 7)), // gui.time_in_minutes, gui.ticks_per_minute }; #undef SLCX_VAR #undef SLCX_NULL_X #undef SLCX_NULL #undef SLCX_NULL_X #undef SLCX_XREF #undef SLCX_XREFCVT #endif /* SETTINGS_COMPAT_H */