src/settings_type.h
author truebrain
Fri, 13 Jun 2008 19:12:55 +0000
branchnoai
changeset 10956 82aa600a9922
parent 10867 5de2923d6e59
child 11098 37d15a8951b8
permissions -rw-r--r--
(svn r13510) [NoAI] -Fix: be a tiny bit more strict for AIAbstract.Valuate() (check the type of the first 2 params)
9723
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
     1
/* $Id$ */
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
     2
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
     3
/** @file settings_type.h Types related to global configuration settings. */
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
     4
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
     5
#ifndef SETTINGS_TYPE_H
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
     6
#define SETTINGS_TYPE_H
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
     7
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
     8
#include "date_type.h"
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
     9
#include "town_type.h"
10455
22c441f5adf9 (svn r12997) [NoAI] -Sync: with trunk r12895:12996.
rubidium
parents: 10142
diff changeset
    10
#include "transport_type.h"
10829
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
    11
#include "network/core/config.h"
9723
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    12
10715
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    13
/** Settings related to the difficulty of the game */
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    14
struct DifficultySettings {
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    15
	byte   max_no_competitors;               ///< the number of competitors (AIs)
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    16
	byte   competitor_start_time;            ///< how long to wait for the first competitors (AIs)
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    17
	byte   number_towns;                     ///< the amount of towns
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    18
	byte   number_industries;                ///< the amount of industries
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    19
	uint32 max_loan;                         ///< the maximum initial loan
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    20
	byte   initial_interest;                 ///< amount of interest (to pay over the loan)
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    21
	byte   vehicle_costs;                    ///< amount of money spent on vehicle running cost
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    22
	byte   competitor_speed;                 ///< the speed at which the AI builds
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    23
	byte   competitor_intelligence;          ///< the competior's (AI) intelligence
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    24
	byte   vehicle_breakdowns;               ///< likelihood of vehicles breaking down
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    25
	byte   subsidy_multiplier;               ///< amount of subsidy
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    26
	byte   construction_cost;                ///< how expensive is building
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    27
	byte   terrain_type;                     ///< the mountainousness of the landscape
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    28
	byte   quantity_sea_lakes;               ///< the amount of seas/lakes
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    29
	byte   economy;                          ///< how volatile is the economy
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    30
	byte   line_reverse_mode;                ///< reversing at stations or not
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    31
	byte   disasters;                        ///< are disasters enabled
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    32
	byte   town_council_tolerance;           ///< minimum required town ratings to be allowed to demolish stuff
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    33
	byte   diff_level;                       ///< the difficulty level
9723
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    34
};
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    35
10715
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    36
/** Settings related to the GUI and other stuff that is not saved in the savegame. */
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    37
struct GUISettings {
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    38
	bool   vehicle_speed;                    ///< show vehicle speed
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    39
	bool   sg_full_load_any;                 ///< new full load calculation, any cargo must be full read from pre v93 savegames
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    40
	bool   lost_train_warn;                  ///< if a train can't find its destination, show a warning
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    41
	uint8  order_review_system;              ///< perform order reviews on vehicles
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    42
	bool   train_income_warn;                ///< if train is generating little income, show a warning
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    43
	bool   status_long_date;                 ///< always show long date in status bar
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    44
	bool   show_finances;                    ///< show finances at end of year
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    45
	bool   sg_new_nonstop;                   ///< ttdpatch compatible nonstop handling read from pre v93 savegames
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    46
	bool   new_nonstop;                      ///< ttdpatch compatible nonstop handling
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    47
	bool   autoscroll;                       ///< scroll when moving mouse to the edge
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    48
	byte   errmsg_duration;                  ///< duration of error message
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    49
	bool   link_terraform_toolbar;           ///< display terraform toolbar when displaying rail, road, water and airport toolbars
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    50
	bool   reverse_scroll;                   ///< right-Click-Scrolling scrolls in the opposite direction
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    51
	bool   smooth_scroll;                    ///< smooth scroll viewports
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    52
	bool   measure_tooltip;                  ///< show a permanent tooltip when dragging tools
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    53
	byte   liveries;                         ///< options for displaying company liveries, 0=none, 1=self, 2=all
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    54
	bool   prefer_teamchat;                  ///< choose the chat message target with <ENTER>, true=all players, false=your team
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    55
	uint8  advanced_vehicle_list;            ///< use the "advanced" vehicle list
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    56
	uint8  loading_indicators;               ///< show loading indicators
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    57
	uint8  default_rail_type;                ///< the default rail type for the rail GUI
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    58
	uint8  toolbar_pos;                      ///< position of toolbars, 0=left, 1=center, 2=right
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    59
	uint8  window_snap_radius;               ///< windows snap at each other if closer than this
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    60
	bool   always_build_infrastructure;      ///< always allow building of infrastructure, even when you do not have the vehicles for it
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    61
	byte   autosave;                         ///< how often should we do autosaves?
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    62
	bool   keep_all_autosave;                ///< name the autosave in a different way
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    63
	bool   autosave_on_exit;                 ///< save an autosave when you quit the game, but do not ask "Do you really want to quit?"
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    64
	byte   max_num_autosaves;                ///< controls how many autosavegames are made before the game starts to overwrite (names them 0 to max_num_autosaves - 1)
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    65
	bool   population_in_label;              ///< show the population of a town in his label?
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    66
	uint8  right_mouse_btn_emulation;        ///< should we emulate right mouse clicking?
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    67
	uint8  scrollwheel_scrolling;            ///< scrolling using the scroll wheel?
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    68
	uint8  scrollwheel_multiplier;           ///< how much 'wheel' per incoming event from the OS?
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    69
	bool   pause_on_newgame;                 ///< whether to start new games paused or not
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    70
	bool   enable_signal_gui;                ///< show the signal GUI when the signal button is pressed
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    71
	Year   ending_year;                      ///< end of the game (just show highscore)
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    72
	Year   colored_news_year;                ///< when does newspaper become colored?
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    73
	bool   timetable_in_ticks;               ///< whether to show the timetable in ticks rather than days
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    74
	bool   bridge_pillars;                   ///< show bridge pillars for high bridges
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    75
	bool   auto_euro;                        ///< automatically switch to euro in 2002
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    76
	byte   drag_signals_density;             ///< many signals density
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    77
	Year   semaphore_build_before;           ///< build semaphore signals automatically before this year
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    78
	bool   autorenew;                        ///< should autorenew be enabled for new companies?
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    79
	int16  autorenew_months;                 ///< how many months from EOL of vehicles should autorenew trigger for new companies?
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    80
	int32  autorenew_money;                  ///< how much money before autorenewing for new companies?
10867
5de2923d6e59 (svn r13418) [NoAI] -Sync: with trunk r13380:13417.
rubidium
parents: 10829
diff changeset
    81
	byte   news_message_timeout;             ///< how much longer than the news message "age" should we keep the message in the history
5de2923d6e59 (svn r13418) [NoAI] -Sync: with trunk r13380:13417.
rubidium
parents: 10829
diff changeset
    82
};
5de2923d6e59 (svn r13418) [NoAI] -Sync: with trunk r13380:13417.
rubidium
parents: 10829
diff changeset
    83
5de2923d6e59 (svn r13418) [NoAI] -Sync: with trunk r13380:13417.
rubidium
parents: 10829
diff changeset
    84
/** Settings related to currency/unit systems. */
5de2923d6e59 (svn r13418) [NoAI] -Sync: with trunk r13380:13417.
rubidium
parents: 10829
diff changeset
    85
struct LocaleSettings {
10715
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    86
	byte   currency;                         ///< currency we currently use
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    87
	byte   units;                            ///< unit system we show everything
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
    88
};
9723
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    89
10829
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
    90
/** All settings related to the network. */
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
    91
struct NetworkSettings {
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
    92
#ifdef ENABLE_NETWORK
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
    93
	uint16 sync_freq;                                     ///< how often do we check whether we are still in-sync
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
    94
	uint8  frame_freq;                                    ///< how often do we send commands to the clients
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
    95
	uint16 max_join_time;                                 ///< maximum amount of time, in game ticks, a client may take to join
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
    96
	bool   pause_on_join;                                 ///< pause the game when people join
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
    97
	char   server_bind_ip[NETWORK_HOSTNAME_LENGTH];       ///< IP address the server binds to
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
    98
	uint16 server_port;                                   ///< port the server listens on
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
    99
	char   server_name[NETWORK_NAME_LENGTH];              ///< name of the server
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   100
	char   server_password[NETWORK_PASSWORD_LENGTH];      ///< passowrd for joining this server
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   101
	char   rcon_password[NETWORK_PASSWORD_LENGTH];        ///< passowrd for rconsole (server side)
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   102
	bool   server_advertise;                              ///< advertise the server to the masterserver
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   103
	uint8  lan_internet;                                  ///< search on the LAN or internet for servers
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   104
	char   player_name[NETWORK_NAME_LENGTH];              ///< name of the player
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   105
	char   default_company_pass[NETWORK_PASSWORD_LENGTH]; ///< default password for new companies in encrypted form
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   106
	char   connect_to_ip[NETWORK_HOSTNAME_LENGTH];        ///< default for the "Add server" query
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   107
	char   network_id[NETWORK_UNIQUE_ID_LENGTH];          ///< semi-unique ID of the client
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   108
	bool   autoclean_companies;                           ///< automatically remove companies that are not in use
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   109
	uint8  autoclean_unprotected;                         ///< remove passwordless companies after this many months
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   110
	uint8  autoclean_protected;                           ///< remove the password from passworded companies after this many months
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   111
	uint8  max_companies;                                 ///< maximum amount of companies
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   112
	uint8  max_clients;                                   ///< maximum amount of clients
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   113
	uint8  max_spectators;                                ///< maximum amount of spectators
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   114
	Year   restart_game_year;                             ///< year the server restarts
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   115
	uint8  min_players;                                   ///< minimum amount of players to unpause the game
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   116
	uint8  server_lang;                                   ///< language of the server
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   117
	bool   reload_cfg;                                    ///< reload the config file before restarting
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   118
	char   last_host[NETWORK_HOSTNAME_LENGTH];            ///< IP address of the last joined server
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   119
	uint16 last_port;                                     ///< port of the last joined server
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   120
#else /* ENABLE_NETWORK */
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   121
#endif
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   122
};
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   123
10715
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   124
/** Settings related to the creation of games. */
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   125
struct GameCreationSettings {
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   126
	uint32 generation_seed;                  ///< noise seed for world generation
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   127
	Year   starting_year;                    ///< starting date
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   128
	uint8  map_x;                            ///< X size of map
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   129
	uint8  map_y;                            ///< Y size of map
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   130
	byte   land_generator;                   ///< the landscape generator
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   131
	byte   oil_refinery_limit;               ///< distance oil refineries allowed from map edge
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   132
	byte   snow_line_height;                 ///< a number 0-15 that configured snow line height
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   133
	byte   tgen_smoothness;                  ///< how rough is the terrain from 0-3
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   134
	byte   tree_placer;                      ///< the tree placer algorithm
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   135
	byte   heightmap_rotation;               ///< rotation director for the heightmap
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   136
	byte   se_flat_world_height;             ///< land height a flat world gets in SE
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   137
	byte   town_name;                        ///< the town name generator used for town names
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   138
	byte   landscape;                        ///< the landscape we're currently in
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   139
	byte   snow_line;                        ///< the snowline level in this game
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   140
};
9723
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
   141
10715
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   142
/** Settings related to construction in-game */
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   143
struct ConstructionSettings {
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   144
	bool   build_on_slopes;                  ///< allow building on slopes
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   145
	bool   autoslope;                        ///< allow terraforming under things
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   146
	bool   longbridges;                      ///< allow 100 tile long bridges
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   147
	bool   signal_side;                      ///< show signals on right side
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   148
	bool   extra_dynamite;                   ///< extra dynamite
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   149
	bool   road_stop_on_town_road;           ///< allow building of drive-through road stops on town owned roads
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   150
	uint8  raw_industry_construction;        ///< type of (raw) industry construction (none, "normal", prospecting)
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   151
};
9724
b39bc69bb2f2 (svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents: 9723
diff changeset
   152
10715
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   153
/** Settings related to the AI. */
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   154
struct AISettings {
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   155
	bool   ai_in_multiplayer;                ///< so we allow AIs in multiplayer
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   156
	bool   ai_disable_veh_train;             ///< disable types for AI
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   157
	bool   ai_disable_veh_roadveh;           ///< disable types for AI
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   158
	bool   ai_disable_veh_aircraft;          ///< disable types for AI
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   159
	bool   ai_disable_veh_ship;              ///< disable types for AI
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   160
};
9724
b39bc69bb2f2 (svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents: 9723
diff changeset
   161
10715
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   162
/** Settings related to the old pathfinder. */
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   163
struct OPFSettings {
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   164
	uint16 pf_maxlength;                     ///< maximum length when searching for a train route for new pathfinder
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   165
	byte   pf_maxdepth;                      ///< maximum recursion depth when searching for a train route for new pathfinder
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   166
};
9723
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
   167
10715
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   168
/** Settings related to the new pathfinder. */
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   169
struct NPFSettings {
9723
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
   170
	/**
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
   171
	 * The maximum amount of search nodes a single NPF run should take. This
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
   172
	 * limit should make sure performance stays at acceptable levels at the cost
10715
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   173
	 * of not being perfect anymore.
9723
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
   174
	 */
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
   175
	uint32 npf_max_search_nodes;
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
   176
10715
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   177
	uint32 npf_rail_firstred_penalty;        ///< the penalty for when the first signal is red (and it is not an exit or combo signal)
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   178
	uint32 npf_rail_firstred_exit_penalty;   ///< the penalty for when the first signal is red (and it is an exit or combo signal)
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   179
	uint32 npf_rail_lastred_penalty;         ///< the penalty for when the last signal is red
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   180
	uint32 npf_rail_station_penalty;         ///< the penalty for station tiles
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   181
	uint32 npf_rail_slope_penalty;           ///< the penalty for sloping upwards
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   182
	uint32 npf_rail_curve_penalty;           ///< the penalty for curves
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   183
	uint32 npf_rail_depot_reverse_penalty;   ///< the penalty for reversing in depots
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   184
	uint32 npf_buoy_penalty;                 ///< the penalty for going over (through) a buoy
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   185
	uint32 npf_water_curve_penalty;          ///< the penalty for curves
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   186
	uint32 npf_road_curve_penalty;           ///< the penalty for curves
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   187
	uint32 npf_crossing_penalty;             ///< the penalty for level crossings
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   188
	uint32 npf_road_drive_through_penalty;   ///< the penalty for going through a drive-through road stop
9723
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
   189
};
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
   190
10715
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   191
/** Settings related to the yet another pathfinder. */
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   192
struct YAPFSettings {
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   193
	bool   disable_node_optimization;        ///< whether to use exit-dir instead of trackdir in node key
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   194
	uint32 max_search_nodes;                 ///< stop path-finding when this number of nodes visited
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   195
	bool   ship_use_yapf;                    ///< use YAPF for ships
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   196
	bool   road_use_yapf;                    ///< use YAPF for road
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   197
	bool   rail_use_yapf;                    ///< use YAPF for rail
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   198
	uint32 road_slope_penalty;               ///< penalty for up-hill slope
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   199
	uint32 road_curve_penalty;               ///< penalty for curves
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   200
	uint32 road_crossing_penalty;            ///< penalty for level crossing
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   201
	uint32 road_stop_penalty;                ///< penalty for going through a drive-through road stop
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   202
	bool   rail_firstred_twoway_eol;         ///< treat first red two-way signal as dead end
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   203
	uint32 rail_firstred_penalty;            ///< penalty for first red signal
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   204
	uint32 rail_firstred_exit_penalty;       ///< penalty for first red exit signal
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   205
	uint32 rail_lastred_penalty;             ///< penalty for last red signal
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   206
	uint32 rail_lastred_exit_penalty;        ///< penalty for last red exit signal
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   207
	uint32 rail_station_penalty;             ///< penalty for non-target station tile
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   208
	uint32 rail_slope_penalty;               ///< penalty for up-hill slope
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   209
	uint32 rail_curve45_penalty;             ///< penalty for curve
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   210
	uint32 rail_curve90_penalty;             ///< penalty for 90-deg curve
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   211
	uint32 rail_depot_reverse_penalty;       ///< penalty for reversing in the depot
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   212
	uint32 rail_crossing_penalty;            ///< penalty for level crossing
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   213
	uint32 rail_look_ahead_max_signals;      ///< max. number of signals taken into consideration in look-ahead load balancer
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   214
	int32  rail_look_ahead_signal_p0;        ///< constant in polynomial penalty function
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   215
	int32  rail_look_ahead_signal_p1;        ///< constant in polynomial penalty function
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   216
	int32  rail_look_ahead_signal_p2;        ///< constant in polynomial penalty function
9723
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
   217
10715
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   218
	uint32 rail_longer_platform_penalty;           ///< penalty for longer  station platform than train
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   219
	uint32 rail_longer_platform_per_tile_penalty;  ///< penalty for longer  station platform than train (per tile)
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   220
	uint32 rail_shorter_platform_penalty;          ///< penalty for shorter station platform than train
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   221
	uint32 rail_shorter_platform_per_tile_penalty; ///< penalty for shorter station platform than train (per tile)
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   222
};
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   223
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   224
/** Settings related to all pathfinders. */
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   225
struct PathfinderSettings {
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   226
	uint8  pathfinder_for_trains;            ///< the pathfinder to use for trains
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   227
	uint8  pathfinder_for_roadvehs;          ///< the pathfinder to use for roadvehicles
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   228
	uint8  pathfinder_for_ships;             ///< the pathfinder to use for ships
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   229
	bool   new_pathfinding_all;              ///< use the newest pathfinding algorithm for all
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   230
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   231
	bool   roadveh_queue;                    ///< buggy road vehicle queueing
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   232
	bool   forbid_90_deg;                    ///< forbid trains to make 90 deg turns
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   233
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   234
	byte   wait_oneway_signal;               ///< waitingtime in days before a oneway signal
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   235
	byte   wait_twoway_signal;               ///< waitingtime in days before a twoway signal
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   236
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   237
	OPFSettings  opf;                        ///< pathfinder settings for the old pathfinder
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   238
	NPFSettings  npf;                        ///< pathfinder settings for the new pathfinder
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   239
	YAPFSettings yapf;                       ///< pathfinder settings for the yet another pathfinder
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   240
};
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   241
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   242
/** Settings related to orders. */
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   243
struct OrderSettings {
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   244
	bool   improved_load;                    ///< improved loading algorithm
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   245
	bool   gradual_loading;                  ///< load vehicles gradually
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   246
	bool   selectgoods;                      ///< only send the goods to station if a train has been there
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   247
	bool   gotodepot;                        ///< allow goto depot in orders
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   248
	bool   no_servicing_if_no_breakdowns;    ///< dont send vehicles to depot when breakdowns are disabled
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   249
	bool   timetabling;                      ///< whether to allow timetabling
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   250
	bool   serviceathelipad;                 ///< service helicopters at helipads automatically (no need to send to depot)
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   251
};
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   252
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   253
/** Settings related to vehicles. */
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   254
struct VehicleSettings {
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   255
	bool   mammoth_trains;                   ///< allow very long trains
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   256
	bool   realistic_acceleration;           ///< realistic acceleration for trains
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   257
	bool   wagon_speed_limits;               ///< enable wagon speed limits
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   258
	bool   disable_elrails;                  ///< when true, the elrails are disabled
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   259
	UnitID max_trains;                       ///< max trains in game per player
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   260
	UnitID max_roadveh;                      ///< max trucks in game per player
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   261
	UnitID max_aircraft;                     ///< max planes in game per player
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   262
	UnitID max_ships;                        ///< max ships in game per player
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   263
	bool   servint_ispercent;                ///< service intervals are in percents
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   264
	uint16 servint_trains;                   ///< service interval for trains
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   265
	uint16 servint_roadveh;                  ///< service interval for road vehicles
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   266
	uint16 servint_aircraft;                 ///< service interval for aircraft
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   267
	uint16 servint_ships;                    ///< service interval for ships
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   268
	uint8  plane_speed;                      ///< divisor for speed of aircraft
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   269
	uint8  freight_trains;                   ///< value to multiply the weight of cargo by
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   270
	bool   dynamic_engines;                  ///< enable dynamic allocation of engine data
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   271
	bool   never_expire_vehicles;            ///< never expire vehicles
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   272
	byte   extend_vehicle_life;              ///< extend vehicle life by this many years
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   273
	byte   road_side;                        ///< the side of the road vehicles drive on
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   274
};
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   275
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   276
/** Settings related to the economy. */
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   277
struct EconomySettings {
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   278
	bool   inflation;                        ///< disable inflation
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   279
	bool   bribe;                            ///< enable bribing the local authority
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   280
	bool   smooth_economy;                   ///< smooth economy
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   281
	bool   allow_shares;                     ///< allow the buying/selling of shares
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   282
	byte   dist_local_authority;             ///< distance for town local authority, default 20
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   283
	bool   exclusive_rights;                 ///< allow buying exclusive rights
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   284
	bool   give_money;                       ///< allow giving other players money
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   285
	bool   mod_road_rebuild;                 ///< roadworks remove unneccesary RoadBits
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   286
	bool   multiple_industry_per_town;       ///< allow many industries of the same type per town
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   287
	bool   same_industry_close;              ///< allow same type industries to be built close to each other
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   288
	uint8  town_growth_rate;                 ///< town growth rate
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   289
	uint8  larger_towns;                     ///< the number of cities to build. These start off larger and grow twice as fast
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   290
	uint8  initial_city_size;                ///< multiplier for the initial size of the cities compared to towns
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   291
	TownLayoutByte town_layout;              ///< select town layout
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   292
	bool   station_noise_level;              ///< build new airports when the town noise level is still within accepted limits
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   293
	uint16 town_noise_population[3];         ///< population to base decision on noise evaluation (@see town_council_tolerance)
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   294
};
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   295
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   296
/** Settings related to stations. */
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   297
struct StationSettings {
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   298
	bool   modified_catchment;               ///< different-size catchment areas
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   299
	bool   join_stations;                    ///< allow joining of train stations
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   300
	bool   nonuniform_stations;              ///< allow nonuniform train stations
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   301
	bool   adjacent_stations;                ///< allow stations to be built directly adjacent to other stations
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   302
	bool   always_small_airport;             ///< always allow small airports
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   303
	byte   station_spread;                   ///< amount a station may spread
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   304
};
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   305
10776
07203fc29812 (svn r13326) [NoAI] -Sync with trunk r13264:13325
glx
parents: 10715
diff changeset
   306
/** All settings together for the game. */
07203fc29812 (svn r13326) [NoAI] -Sync with trunk r13264:13325
glx
parents: 10715
diff changeset
   307
struct GameSettings {
10715
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   308
	DifficultySettings   difficulty;         ///< settings related to the difficulty
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   309
	GameCreationSettings game_creation;      ///< settings used during the creation of a game (map)
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   310
	ConstructionSettings construction;       ///< construction of things in-game
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   311
	AISettings           ai;                 ///< what may the AI do?
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   312
	PathfinderSettings   pf;                 ///< settings for all pathfinders
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   313
	OrderSettings        order;              ///< settings related to orders
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   314
	VehicleSettings      vehicle;            ///< options for vehicles
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   315
	EconomySettings      economy;            ///< settings to change the economy
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   316
	StationSettings      station;            ///< settings related to station management
10867
5de2923d6e59 (svn r13418) [NoAI] -Sync: with trunk r13380:13417.
rubidium
parents: 10829
diff changeset
   317
	LocaleSettings       locale;             ///< settings related to used currency/unit system in the current game
10715
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   318
};
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   319
10776
07203fc29812 (svn r13326) [NoAI] -Sync with trunk r13264:13325
glx
parents: 10715
diff changeset
   320
/** All settings that are only important for the local client. */
07203fc29812 (svn r13326) [NoAI] -Sync with trunk r13264:13325
glx
parents: 10715
diff changeset
   321
struct ClientSettings {
07203fc29812 (svn r13326) [NoAI] -Sync with trunk r13264:13325
glx
parents: 10715
diff changeset
   322
	GUISettings          gui;                ///< settings related to the GUI
10829
8a0ec0f0f928 (svn r13381) [NoAI] -Sync with trunk r13325:13380
glx
parents: 10776
diff changeset
   323
	NetworkSettings      network;            ///< settings related to the network
10776
07203fc29812 (svn r13326) [NoAI] -Sync with trunk r13264:13325
glx
parents: 10715
diff changeset
   324
};
10715
6bdf79ffb022 (svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents: 10455
diff changeset
   325
10776
07203fc29812 (svn r13326) [NoAI] -Sync with trunk r13264:13325
glx
parents: 10715
diff changeset
   326
/** The current settings for this game. */
07203fc29812 (svn r13326) [NoAI] -Sync with trunk r13264:13325
glx
parents: 10715
diff changeset
   327
extern ClientSettings _settings_client;
07203fc29812 (svn r13326) [NoAI] -Sync with trunk r13264:13325
glx
parents: 10715
diff changeset
   328
07203fc29812 (svn r13326) [NoAI] -Sync with trunk r13264:13325
glx
parents: 10715
diff changeset
   329
/** The current settings for this game. */
07203fc29812 (svn r13326) [NoAI] -Sync with trunk r13264:13325
glx
parents: 10715
diff changeset
   330
extern GameSettings _settings_game;
07203fc29812 (svn r13326) [NoAI] -Sync with trunk r13264:13325
glx
parents: 10715
diff changeset
   331
07203fc29812 (svn r13326) [NoAI] -Sync with trunk r13264:13325
glx
parents: 10715
diff changeset
   332
/** The settings values that are used for new games and/or modified in config file. */
07203fc29812 (svn r13326) [NoAI] -Sync with trunk r13264:13325
glx
parents: 10715
diff changeset
   333
extern GameSettings _settings_newgame;
9723
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
   334
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
   335
#endif /* SETTINGS_TYPE_H */