src/settings_type.h
author truebrain
Thu, 12 Jun 2008 19:47:02 +0000
branchnoai
changeset 10942 cd3f2d07199f
parent 10867 5de2923d6e59
child 11098 37d15a8951b8
permissions -rw-r--r--
(svn r13496) [NoAI] -Fix: if a library depends on an other library, the import became globally known, which defeats the idea of imports. They are now restricted to their scope, and 'import' returns the class of import (if any)
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 */