Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00012 #ifndef SETTINGS_TYPE_H
00013 #define SETTINGS_TYPE_H
00014
00015 #include "date_type.h"
00016 #include "town_type.h"
00017 #include "transport_type.h"
00018 #include "network/core/config.h"
00019 #include "company_type.h"
00020 #include "openttd.h"
00021 #include "cargotype.h"
00022 #include "linkgraph/linkgraph_type.h"
00023
00025 enum IndustryDensity {
00026 ID_FUND_ONLY,
00027 ID_MINIMAL,
00028 ID_VERY_LOW,
00029 ID_LOW,
00030 ID_NORMAL,
00031 ID_HIGH,
00032
00033 ID_END,
00034 };
00035
00037 struct DifficultySettings {
00038 byte max_no_competitors;
00039 byte number_towns;
00040 byte industry_density;
00041 uint32 max_loan;
00042 byte initial_interest;
00043 byte vehicle_costs;
00044 byte competitor_speed;
00045 byte vehicle_breakdowns;
00046 byte subsidy_multiplier;
00047 byte construction_cost;
00048 byte terrain_type;
00049 byte quantity_sea_lakes;
00050 byte economy;
00051 byte line_reverse_mode;
00052 byte disasters;
00053 byte town_council_tolerance;
00054 byte diff_level;
00055 };
00056
00058 struct GUISettings {
00059 bool vehicle_speed;
00060 bool sg_full_load_any;
00061 bool lost_vehicle_warn;
00062 uint8 order_review_system;
00063 bool vehicle_income_warn;
00064 bool show_finances;
00065 bool sg_new_nonstop;
00066 bool new_nonstop;
00067 uint8 stop_location;
00068 bool autoscroll;
00069 byte errmsg_duration;
00070 byte hover_delay;
00071 bool link_terraform_toolbar;
00072 uint8 smallmap_land_colour;
00073 bool smallmap_flood_warning;
00074 uint8 linkgraph_companies;
00075 bool reverse_scroll;
00076 bool smooth_scroll;
00077 bool measure_tooltip;
00078 byte liveries;
00079 bool prefer_teamchat;
00080 uint8 advanced_vehicle_list;
00081 uint8 loading_indicators;
00082 uint8 default_rail_type;
00083 uint8 toolbar_pos;
00084 uint8 statusbar_pos;
00085 uint8 window_snap_radius;
00086 uint8 window_soft_limit;
00087 bool disable_unsuitable_building;
00088 byte autosave;
00089 bool threaded_saves;
00090 bool keep_all_autosave;
00091 bool autosave_on_exit;
00092 uint8 date_format_in_default_names;
00093 byte max_num_autosaves;
00094 bool population_in_label;
00095 bool population_in_label_coloured;
00096 uint8 right_mouse_btn_emulation;
00097 uint8 scrollwheel_scrolling;
00098 uint8 scrollwheel_multiplier;
00099 bool timetable_arrival_departure;
00100 uint8 max_departures;
00101 uint16 max_departure_time;
00102 uint16 departure_calc_frequency;
00103 bool departure_show_vehicle;
00104 bool departure_show_group;
00105 bool departure_show_company;
00106 bool departure_show_vehicle_type;
00107 bool departure_show_vehicle_color;
00108 bool departure_larger_font;
00109 bool departure_destination_type;
00110 bool departure_show_both;
00111 bool departure_only_passengers;
00112 bool departure_smart_terminus;
00113 uint8 departure_conditionals;
00114 bool departure_show_all_stops;
00115 bool departure_merge_identical;
00116 bool left_mouse_btn_scrolling;
00117 bool pause_on_newgame;
00118 bool enable_signal_gui;
00119 Year coloured_news_year;
00120 bool timetable_in_ticks;
00121 bool time_in_minutes;
00122 bool timetable_start_text_entry;
00123 uint8 ticks_per_minute;
00124 uint8 date_with_time;
00125 bool quick_goto;
00126 bool bridge_pillars;
00127 bool auto_euro;
00128 byte drag_signals_density;
00129 Year semaphore_build_before;
00130 byte news_message_timeout;
00131 bool show_track_reservation;
00132 uint8 default_signal_type;
00133 uint8 cycle_signal_types;
00134 byte station_numtracks;
00135 byte station_platlength;
00136 bool station_dragdrop;
00137 bool station_show_coverage;
00138 bool persistent_buildingtools;
00139 bool expenses_layout;
00140
00141 uint16 console_backlog_timeout;
00142 uint16 console_backlog_length;
00143
00144 uint8 station_gui_group_order;
00145 uint8 station_gui_sort_by;
00146 uint8 station_gui_sort_order;
00147 #ifdef ENABLE_NETWORK
00148 uint16 network_chat_box_width;
00149 uint8 network_chat_box_height;
00150 uint16 network_chat_timeout;
00151 #endif
00152
00153 uint8 developer;
00154 bool show_date_in_logs;
00155 bool newgrf_developer_tools;
00156 bool ai_developer_tools;
00157 bool scenario_developer;
00158 bool newgrf_show_old_versions;
00159 uint8 newgrf_default_palette;
00160 uint8 cp_paste_speed;
00161
00166 bool UserIsAllowedToChangeNewGRFs() const
00167 {
00168 return this->scenario_developer || this->newgrf_developer_tools;
00169 }
00170 };
00171
00173 struct LocaleSettings {
00174 byte currency;
00175 byte units;
00176 char *digit_group_separator;
00177 char *digit_group_separator_currency;
00178 char *digit_decimal_separator;
00179 };
00180
00182 struct NetworkSettings {
00183 #ifdef ENABLE_NETWORK
00184 uint16 sync_freq;
00185 uint8 frame_freq;
00186 uint16 commands_per_frame;
00187 uint16 max_commands_in_queue;
00188 uint16 bytes_per_frame;
00189 uint16 bytes_per_frame_burst;
00190 uint16 max_join_time;
00191 bool pause_on_join;
00192 uint16 server_port;
00193 uint16 server_admin_port;
00194 bool server_admin_chat;
00195 char server_name[NETWORK_NAME_LENGTH];
00196 char server_password[NETWORK_PASSWORD_LENGTH];
00197 char rcon_password[NETWORK_PASSWORD_LENGTH];
00198 char admin_password[NETWORK_PASSWORD_LENGTH];
00199 bool server_advertise;
00200 uint8 lan_internet;
00201 char client_name[NETWORK_CLIENT_NAME_LENGTH];
00202 char default_company_pass[NETWORK_PASSWORD_LENGTH];
00203 char connect_to_ip[NETWORK_HOSTNAME_LENGTH];
00204 char network_id[NETWORK_SERVER_ID_LENGTH];
00205 bool autoclean_companies;
00206 uint8 autoclean_unprotected;
00207 uint8 autoclean_protected;
00208 uint8 autoclean_novehicles;
00209 uint8 max_companies;
00210 uint8 max_clients;
00211 uint8 max_spectators;
00212 Year restart_game_year;
00213 uint8 min_active_clients;
00214 uint8 server_lang;
00215 bool reload_cfg;
00216 char last_host[NETWORK_HOSTNAME_LENGTH];
00217 uint16 last_port;
00218 bool no_http_content_downloads;
00219 #else
00220 #endif
00221 };
00222
00224 struct GameCreationSettings {
00225 uint32 generation_seed;
00226 Year starting_year;
00227 uint8 map_x;
00228 uint8 map_y;
00229 byte land_generator;
00230 byte oil_refinery_limit;
00231 byte snow_line_height;
00232 byte desert_amount;
00233 byte tree_line_height;
00234 byte tgen_smoothness;
00235 byte tree_placer;
00236 byte heightmap_rotation;
00237 byte se_flat_world_height;
00238 byte town_name;
00239 byte landscape;
00240 uint16 snow_line;
00241 uint16 tree_line;
00242 byte water_borders;
00243 uint16 custom_town_number;
00244 byte variety;
00245 byte custom_sea_level;
00246 };
00247
00249 struct ConstructionSettings {
00250 bool allow_more_heightlevels;
00251 bool build_on_slopes;
00252 bool autoslope;
00253 uint16 max_bridge_length;
00254 uint16 max_tunnel_length;
00255 byte max_tunnel_exit_length;
00256 bool signal_side;
00257 bool extra_dynamite;
00258 bool road_stop_on_town_road;
00259 bool road_stop_on_competitor_road;
00260 uint8 raw_industry_construction;
00261 uint8 industry_platform;
00262 bool freeform_edges;
00263 uint8 extra_tree_placement;
00264 uint8 tree_placement_drag_limit;
00265 uint8 command_pause_level;
00266 uint32 terraform_per_64k_frames;
00267 uint16 terraform_frame_burst;
00268 uint32 clear_per_64k_frames;
00269 uint16 clear_frame_burst;
00270 byte ingame_tree_line_height;
00271 uint8 tree_growth_rate;
00272 uint16 maximum_signal_evaluations;
00273 bool traffic_lights;
00274 bool towns_build_traffic_lights;
00275 bool allow_building_tls_in_towns;
00276 uint8 traffic_lights_green_phase;
00277 uint8 max_tlc_size;
00278 uint8 max_tlc_distance;
00279 uint8 extra_industry_placement_logic;
00280 };
00281
00283 struct AISettings {
00284 bool ai_in_multiplayer;
00285 bool ai_disable_veh_train;
00286 bool ai_disable_veh_roadveh;
00287 bool ai_disable_veh_aircraft;
00288 bool ai_disable_veh_ship;
00289 uint32 ai_max_opcode_till_suspend;
00290 };
00291
00293 struct OPFSettings {
00294 uint16 pf_maxlength;
00295 byte pf_maxdepth;
00296 };
00297
00299 struct NPFSettings {
00305 uint32 npf_max_search_nodes;
00306 uint32 maximum_go_to_depot_penalty;
00307
00308 uint32 npf_rail_firstred_penalty;
00309 uint32 npf_rail_firstred_exit_penalty;
00310 uint32 npf_rail_lastred_penalty;
00311 uint32 npf_rail_station_penalty;
00312 uint32 npf_rail_slope_penalty;
00313 uint32 npf_rail_curve_penalty;
00314 uint32 npf_rail_depot_reverse_penalty;
00315 uint32 npf_rail_pbs_cross_penalty;
00316 uint32 npf_rail_pbs_signal_back_penalty;
00317 uint32 npf_buoy_penalty;
00318 uint32 npf_water_curve_penalty;
00319 uint32 npf_road_curve_penalty;
00320 uint32 npf_crossing_penalty;
00321 uint32 npf_road_drive_through_penalty;
00322 uint32 npf_road_trafficlight_penalty;
00323 uint32 npf_road_dt_occupied_penalty;
00324 uint32 npf_road_bay_occupied_penalty;
00325 };
00326
00328 struct YAPFSettings {
00329 bool disable_node_optimization;
00330 uint32 max_search_nodes;
00331 uint32 maximum_go_to_depot_penalty;
00332 bool ship_use_yapf;
00333 bool road_use_yapf;
00334 bool rail_use_yapf;
00335 uint32 road_slope_penalty;
00336 uint32 road_curve_penalty;
00337 uint32 road_crossing_penalty;
00338 uint32 road_stop_penalty;
00339 uint32 road_trafficlight_penalty;
00340 uint32 road_stop_occupied_penalty;
00341 uint32 road_stop_bay_occupied_penalty;
00342 bool rail_firstred_twoway_eol;
00343 uint32 rail_firstred_penalty;
00344 uint32 rail_firstred_exit_penalty;
00345 uint32 rail_lastred_penalty;
00346 uint32 rail_lastred_exit_penalty;
00347 uint32 rail_station_penalty;
00348 uint32 rail_slope_penalty;
00349 uint32 rail_curve45_penalty;
00350 uint32 rail_curve90_penalty;
00351 uint32 rail_depot_reverse_penalty;
00352 uint32 rail_crossing_penalty;
00353 uint32 rail_look_ahead_max_signals;
00354 int32 rail_look_ahead_signal_p0;
00355 int32 rail_look_ahead_signal_p1;
00356 int32 rail_look_ahead_signal_p2;
00357 uint32 rail_pbs_cross_penalty;
00358 uint32 rail_pbs_station_penalty;
00359 uint32 rail_pbs_signal_back_penalty;
00360 uint32 rail_doubleslip_penalty;
00361
00362 uint32 rail_longer_platform_penalty;
00363 uint32 rail_longer_platform_per_tile_penalty;
00364 uint32 rail_shorter_platform_penalty;
00365 uint32 rail_shorter_platform_per_tile_penalty;
00366 };
00367
00369 struct PathfinderSettings {
00370 uint8 pathfinder_for_trains;
00371 uint8 pathfinder_for_roadvehs;
00372 uint8 pathfinder_for_ships;
00373 bool new_pathfinding_all;
00374
00375 bool roadveh_queue;
00376 bool forbid_90_deg;
00377
00378 bool reverse_at_signals;
00379 byte wait_oneway_signal;
00380 byte wait_twoway_signal;
00381
00382 bool reserve_paths;
00383 byte wait_for_pbs_path;
00384 byte path_backoff_interval;
00385
00386 OPFSettings opf;
00387 NPFSettings npf;
00388 YAPFSettings yapf;
00389
00390 bool back_of_one_way_pbs_waiting_point;
00391 };
00392
00394 struct OrderSettings {
00395 bool improved_load;
00396 bool gradual_loading;
00397 bool selectgoods;
00398 bool gotodepot;
00399 bool no_servicing_if_no_breakdowns;
00400 bool timetabling;
00401 bool timetable_automated;
00402 bool timetable_separation;
00403 bool serviceathelipad;
00404 };
00405
00407 struct VehicleSettings {
00408 uint8 max_train_length;
00409 uint8 smoke_amount;
00410 uint8 train_acceleration_model;
00411 uint8 roadveh_acceleration_model;
00412 uint8 train_slope_steepness;
00413 uint8 roadveh_slope_steepness;
00414 bool wagon_speed_limits;
00415 bool disable_elrails;
00416 UnitID max_trains;
00417 UnitID max_roadveh;
00418 UnitID max_aircraft;
00419 UnitID max_ships;
00420 uint8 plane_speed;
00421 uint8 freight_trains;
00422 bool dynamic_engines;
00423 bool never_expire_vehicles;
00424 byte extend_vehicle_life;
00425 byte road_side;
00426 uint8 plane_crashes;
00427 bool improved_breakdowns;
00428 };
00429
00431 struct EconomySettings {
00432 bool inflation;
00433 bool bribe;
00434 bool smooth_economy;
00435 bool allow_shares;
00436 uint8 feeder_payment_share;
00437 byte dist_local_authority;
00438 bool exclusive_rights;
00439 bool fund_roads;
00440 bool give_money;
00441 bool mod_road_rebuild;
00442 bool multiple_industry_per_town;
00443 uint8 town_growth_rate;
00444 uint8 larger_towns;
00445 uint8 initial_city_size;
00446 uint8 town_growth_cargo;
00447 uint32 town_pop_need_goods;
00448 uint8 larger_town_growth_cargo;
00449 uint32 larger_town_pop_need_goods;
00450 TownLayoutByte town_layout;
00451 bool allow_town_roads;
00452 TownFoundingByte found_town;
00453 bool station_noise_level;
00454 uint16 town_noise_population[3];
00455 bool allow_town_level_crossings;
00456 bool infrastructure_maintenance;
00457 int8 town_cargo_factor;
00458 bool infrastructure_sharing[4];
00459 uint sharing_fee[4];
00460 bool sharing_payment_in_debt;
00461 };
00462
00463 struct LinkGraphSettings {
00464 uint16 recalc_interval;
00465 DistributionTypeByte distribution_pax;
00466 DistributionTypeByte distribution_mail;
00467 DistributionTypeByte distribution_express;
00468 DistributionTypeByte distribution_armoured;
00469 DistributionTypeByte distribution_default;
00470 uint8 accuracy;
00471 uint8 demand_size;
00472 uint8 demand_distance;
00473 uint8 short_path_saturation;
00474 bool no_overload_links;
00475
00476 FORCEINLINE DistributionType GetDistributionType(CargoID cargo) const {
00477 if (IsCargoInClass(cargo, CC_PASSENGERS)) {
00478 return this->distribution_pax;
00479 } else if (IsCargoInClass(cargo, CC_MAIL)) {
00480 return this->distribution_mail;
00481 } else if (IsCargoInClass(cargo, CC_EXPRESS)) {
00482 return this->distribution_express;
00483 } else if (IsCargoInClass(cargo, CC_ARMOURED)) {
00484 return this->distribution_armoured;
00485 } else {
00486 return this->distribution_default;
00487 }
00488 }
00489 };
00490
00492 struct StationSettings {
00493 bool modified_catchment;
00494 bool adjacent_stations;
00495 bool distant_join_stations;
00496 bool never_expire_airports;
00497 byte station_spread;
00498 };
00499
00501 struct VehicleDefaultSettings {
00502 bool servint_ispercent;
00503 uint16 servint_trains;
00504 uint16 servint_roadveh;
00505 uint16 servint_aircraft;
00506 uint16 servint_ships;
00507 };
00508
00510 struct CompanySettings {
00511 bool engine_renew;
00512 int16 engine_renew_months;
00513 uint32 engine_renew_money;
00514 bool renew_keep_length;
00515 VehicleDefaultSettings vehicle;
00516 };
00517
00519 struct GameSettings {
00520 DifficultySettings difficulty;
00521 GameCreationSettings game_creation;
00522 ConstructionSettings construction;
00523 AISettings ai;
00524 class AIConfig *ai_config[MAX_COMPANIES];
00525 PathfinderSettings pf;
00526 OrderSettings order;
00527 VehicleSettings vehicle;
00528 EconomySettings economy;
00529 LinkGraphSettings linkgraph;
00530 StationSettings station;
00531 LocaleSettings locale;
00532 };
00533
00535 struct ClientSettings {
00536 GUISettings gui;
00537 NetworkSettings network;
00538 CompanySettings company;
00539 };
00540
00542 extern ClientSettings _settings_client;
00543
00545 extern GameSettings _settings_game;
00546
00548 extern GameSettings _settings_newgame;
00549
00554 static inline GameSettings &GetGameSettings()
00555 {
00556 return (_game_mode == GM_MENU) ? _settings_newgame : _settings_game;
00557 }
00558
00559 #endif