src/network/network.h
author KUDr
Fri, 12 Jan 2007 15:43:00 +0000
changeset 5620 eab6f02899a0
parent 5619 9f5a7152403a
child 5711 8598c2d7b501
permissions -rw-r--r--
(svn r8079) -Fix [YAPF]: float division by zero when calculating stats (YAPF cache hit ratio). Caused BSOD on Win9x. (thanks 3iff for report, Darkvater for help)
2186
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 2153
diff changeset
     1
/* $Id$ */
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 2153
diff changeset
     2
211
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
     3
#ifndef NETWORK_H
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
     4
#define NETWORK_H
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
     5
663
80c66fd07863 (svn r1098) -Fix: server without revision build doesn't care about the client's version. Also moved all revision things where it belongs (network.c)
darkvater
parents: 662
diff changeset
     6
#define NOREV_STRING "norev000"
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
     7
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
     8
#ifdef ENABLE_NETWORK
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
     9
5469
7edfc643abbc (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents: 5339
diff changeset
    10
#include "../player.h"
7edfc643abbc (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents: 5339
diff changeset
    11
#include "core/config.h"
7edfc643abbc (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents: 5339
diff changeset
    12
#include "core/game.h"
2153
ecfc674410b4 (svn r2663) Include variables.h only in these files which need it, not globally via openttd.h
tron
parents: 2079
diff changeset
    13
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    14
// If this line is enable, every frame will have a sync test
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    15
//  this is not needed in normal games. Normal is like 1 sync in 100
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    16
//  frames. You can enable this if you have a lot of desyncs on a certain
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    17
//  game.
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    18
// Remember: both client and server have to be compiled with this
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    19
//  option enabled to make it to work. If one of the two has it disabled
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    20
//  nothing will happen.
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    21
//#define ENABLE_NETWORK_SYNC_EVERY_FRAME
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    22
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    23
// In theory sending 1 of the 2 seeds is enough to check for desyncs
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    24
//   so in theory, this next define can be left off.
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    25
//#define NETWORK_SEND_DOUBLE_SEED
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    26
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    27
// How many clients can we have? Like.. MAX_PLAYERS - 1 is the amount of
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    28
//  players that can really play.. so.. a max of 4 spectators.. gives us..
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    29
//  MAX_PLAYERS + 3
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    30
#define MAX_CLIENTS (MAX_PLAYERS + 3)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    31
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    32
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    33
// Do not change this next line. It should _ALWAYS_ be MAX_CLIENTS + 1
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    34
#define MAX_CLIENT_INFO (MAX_CLIENTS + 1)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    35
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    36
#define MAX_INTERFACES 9
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    37
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    38
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    39
// How many vehicle/station types we put over the network
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    40
#define NETWORK_VEHICLE_TYPES 5
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    41
#define NETWORK_STATION_TYPES 5
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    42
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    43
typedef struct NetworkPlayerInfo {
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    44
	char company_name[NETWORK_NAME_LENGTH];         // Company name
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    45
	char password[NETWORK_PASSWORD_LENGTH];         // The password for the player
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    46
	Year inaugurated_year;                          // What year the company started in
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    47
	int64 company_value;                            // The company value
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    48
	int64 money;                                    // The amount of money the company has
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    49
	int64 income;                                   // How much did the company earned last year
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    50
	uint16 performance;                             // What was his performance last month?
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    51
	byte use_password;                              // 0: No password 1: There is a password
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    52
	uint16 num_vehicle[NETWORK_VEHICLE_TYPES];      // How many vehicles are there of this type?
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    53
	uint16 num_station[NETWORK_STATION_TYPES];      // How many stations are there of this type?
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    54
	char players[NETWORK_PLAYERS_LENGTH];           // The players that control this company (Name1, name2, ..)
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    55
	uint16 months_empty;                            // How many months the company is empty
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    56
} NetworkPlayerInfo;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    57
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    58
typedef struct NetworkClientInfo {
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    59
	uint16 client_index;                            // Index of the client (same as ClientState->index)
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    60
	char client_name[NETWORK_CLIENT_NAME_LENGTH];   // Name of the client
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    61
	byte client_lang;                               // The language of the client
5587
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5521
diff changeset
    62
	PlayerID client_playas;                         // As which player is this client playing (PlayerID)
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    63
	uint32 client_ip;                               // IP-address of the client (so he can be banned)
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    64
	Date join_date;                                 // Gamedate the player has joined
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    65
	char unique_id[NETWORK_NAME_LENGTH];            // Every play sends an unique id so we can indentify him
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    66
} NetworkClientInfo;
211
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
    67
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
    68
typedef struct NetworkGameList {
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    69
	NetworkGameInfo info;
211
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
    70
	uint32 ip;
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
    71
	uint16 port;
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    72
	bool online;                                    // False if the server did not respond (default status)
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    73
	bool manually;                                  // True if the server was added manually
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    74
	struct NetworkGameList *next;
211
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
    75
} NetworkGameList;
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
    76
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    77
typedef enum {
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    78
	NETWORK_JOIN_STATUS_CONNECTING,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    79
	NETWORK_JOIN_STATUS_AUTHORIZING,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    80
	NETWORK_JOIN_STATUS_WAITING,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    81
	NETWORK_JOIN_STATUS_DOWNLOADING,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    82
	NETWORK_JOIN_STATUS_PROCESSING,
670
d164965bb35a (svn r1108) -Fix: [Network] Fixed problem around slow clients:
truelight
parents: 668
diff changeset
    83
	NETWORK_JOIN_STATUS_REGISTERING,
239
23958632a582 (svn r240) -Fix: desync on subsidy generation
signde
parents: 228
diff changeset
    84
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    85
	NETWORK_JOIN_STATUS_GETTING_COMPANY_INFO,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    86
} NetworkJoinStatus;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    87
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    88
// language ids for server_lang and client_lang
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    89
typedef enum {
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    90
	NETLANG_ANY     = 0,
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    91
	NETLANG_ENGLISH = 1,
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    92
	NETLANG_GERMAN  = 2,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    93
	NETLANG_FRENCH  = 3,
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    94
} NetworkLanguage;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    95
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    96
VARDEF NetworkGameList *_network_game_list;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    97
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    98
VARDEF NetworkGameInfo _network_game_info;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    99
VARDEF NetworkPlayerInfo _network_player_info[MAX_PLAYERS];
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   100
VARDEF NetworkClientInfo _network_client_info[MAX_CLIENT_INFO];
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   101
3623
9b612a4bbd39 (svn r4521) - Fix: be consistent about the size of the player-name in MP. This hopefully fixes a crash on lesser OS's (eg Win98). Use ttd_strlcpy() to just copy over strings and properly terminate them because different implementations of snprintf() behave differently. Courtesy of TrueLight
Darkvater
parents: 3173
diff changeset
   102
VARDEF char _network_player_name[NETWORK_CLIENT_NAME_LENGTH];
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   103
VARDEF char _network_default_ip[NETWORK_HOSTNAME_LENGTH];
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   104
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   105
VARDEF uint16 _network_own_client_index;
602
f0afb4018788 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents: 600
diff changeset
   106
VARDEF char _network_unique_id[NETWORK_NAME_LENGTH]; // Our own unique ID
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   107
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   108
VARDEF uint32 _frame_counter_server; // The frame_counter of the server, if in network-mode
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   109
VARDEF uint32 _frame_counter_max; // To where we may go with our clients
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   110
2079
c9c32cf56cb9 (svn r2589) Fix: [network] Fixed static variable that wasn't initialized. Would stop the sync checking from working in some cases.
ludde
parents: 2071
diff changeset
   111
VARDEF uint32 _last_sync_frame; // Used in the server to store the last time a sync packet was sent to clients.
c9c32cf56cb9 (svn r2589) Fix: [network] Fixed static variable that wasn't initialized. Would stop the sync checking from working in some cases.
ludde
parents: 2071
diff changeset
   112
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   113
// networking settings
4034
581c6cb62e72 (svn r5293) -Fix: Not all network interfaces are capable of broadcasting. Don't record those which aren't
tron
parents: 3994
diff changeset
   114
VARDEF uint32 _broadcast_list[MAX_INTERFACES + 1];
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   115
3152
00aa2d4cf39e (svn r3775) Fix loading of server_port from config file, introduced in Darkvater's unified configuration changes (r3719+)
peter1138
parents: 3041
diff changeset
   116
VARDEF uint16 _network_server_port;
629
4bb1f0fb0109 (svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
truelight
parents: 627
diff changeset
   117
/* We use bind_ip and bind_ip_host, where bind_ip_host is the readable form of
4bb1f0fb0109 (svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
truelight
parents: 627
diff changeset
   118
    bind_ip_host, and bind_ip the numeric value, because we want a nice number
4bb1f0fb0109 (svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
truelight
parents: 627
diff changeset
   119
    in the openttd.cfg, but we wants to use the uint32 internally.. */
4bb1f0fb0109 (svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
truelight
parents: 627
diff changeset
   120
VARDEF uint32 _network_server_bind_ip;
4bb1f0fb0109 (svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
truelight
parents: 627
diff changeset
   121
VARDEF char _network_server_bind_ip_host[NETWORK_HOSTNAME_LENGTH];
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   122
VARDEF bool _is_network_server; // Does this client wants to be a network-server?
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   123
VARDEF char _network_server_name[NETWORK_NAME_LENGTH];
1026
02cc18821508 (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents: 1011
diff changeset
   124
VARDEF char _network_server_password[NETWORK_PASSWORD_LENGTH];
02cc18821508 (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents: 1011
diff changeset
   125
VARDEF char _network_rcon_password[NETWORK_PASSWORD_LENGTH];
02cc18821508 (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents: 1011
diff changeset
   126
3173
f56ca618721b (svn r3805) - [FS#62] Fix doxygen comments to refer to the correct parameter. (sulai)
peter1138
parents: 3152
diff changeset
   127
VARDEF uint16 _network_max_join_time;             ///< Time a client can max take to join
f56ca618721b (svn r3805) - [FS#62] Fix doxygen comments to refer to the correct parameter. (sulai)
peter1138
parents: 3152
diff changeset
   128
VARDEF bool _network_pause_on_join;               ///< Pause the game when a client tries to join (more chance of succeeding join)
1602
79f98b4b83fc (svn r2106) -Fix: improved the network-join algoritm, it is now a bit more stable
truelight
parents: 1441
diff changeset
   129
1026
02cc18821508 (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents: 1011
diff changeset
   130
VARDEF uint16 _redirect_console_to_client;
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   131
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   132
VARDEF uint16 _network_sync_freq;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   133
VARDEF uint8 _network_frame_freq;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   134
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   135
VARDEF uint32 _sync_seed_1, _sync_seed_2;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   136
VARDEF uint32 _sync_frame;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   137
VARDEF bool _network_first_time;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   138
// Vars needed for the join-GUI
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   139
VARDEF NetworkJoinStatus _network_join_status;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   140
VARDEF uint8 _network_join_waiting;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   141
VARDEF uint16 _network_join_kbytes;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   142
VARDEF uint16 _network_join_kbytes_total;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   143
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   144
VARDEF char _network_last_host[NETWORK_HOSTNAME_LENGTH];
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   145
VARDEF short _network_last_port;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   146
VARDEF uint32 _network_last_host_ip;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   147
VARDEF uint8 _network_reconnect;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   148
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   149
VARDEF bool _network_udp_server;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   150
VARDEF uint16 _network_udp_broadcast;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   151
764
7e1e17b7c7d4 (svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents: 738
diff changeset
   152
VARDEF byte _network_lan_internet;
7e1e17b7c7d4 (svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents: 738
diff changeset
   153
2861
e42d249af3cb (svn r3409) - Change the server advertisement interval to use the frame counter instead
peter1138
parents: 2380
diff changeset
   154
VARDEF bool _network_need_advertise;
e42d249af3cb (svn r3409) - Change the server advertisement interval to use the frame counter instead
peter1138
parents: 2380
diff changeset
   155
VARDEF uint32 _network_last_advertise_frame;
764
7e1e17b7c7d4 (svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents: 738
diff changeset
   156
VARDEF uint8 _network_advertise_retries;
668
1fe298df8526 (svn r1106) -Add: [Network] Added master-server protocol and advertise to
truelight
parents: 663
diff changeset
   157
690
3afcad69d4f7 (svn r1131) -Add: [Network] Autoclean_companies (set it with 'set autoclean_companies on/off').
truelight
parents: 670
diff changeset
   158
VARDEF bool _network_autoclean_companies;
3afcad69d4f7 (svn r1131) -Add: [Network] Autoclean_companies (set it with 'set autoclean_companies on/off').
truelight
parents: 670
diff changeset
   159
VARDEF uint8 _network_autoclean_unprotected; // Remove a company after X months
3afcad69d4f7 (svn r1131) -Add: [Network] Autoclean_companies (set it with 'set autoclean_companies on/off').
truelight
parents: 670
diff changeset
   160
VARDEF uint8 _network_autoclean_protected;   // Unprotect a company after X months
3afcad69d4f7 (svn r1131) -Add: [Network] Autoclean_companies (set it with 'set autoclean_companies on/off').
truelight
parents: 670
diff changeset
   161
4293
4b7006c1b5eb (svn r5926) -Codechange: make _cur_year contain the full year, instead of the offset since 1920
rubidium
parents: 4289
diff changeset
   162
VARDEF Year _network_restart_game_year;      // If this year is reached, the server automaticly restarts
4716
8a05bf6d951d (svn r6628) - Feature: Add the ability to pause a server if not enough players are connected. The setting for this is 'min_players' and can be set in the config and via the console. If the number of players drops below this number, the server will pause the game.
peter1138
parents: 4344
diff changeset
   163
VARDEF uint8 _network_min_players;           // Minimum number of players for game to unpause
785
bba7b3b35dec (svn r1252) -Add: [Network] With 'set restart_game_date' you can set the date for in
truelight
parents: 774
diff changeset
   164
1329
6988419aa6f0 (svn r1833) byte -> char transition: the rest
tron
parents: 1093
diff changeset
   165
NetworkGameList *NetworkQueryServer(const char* host, unsigned short port, bool game_info);
774
bb9ec520a1b1 (svn r1240) -Fix: OpenTTD once again compiles if ENABLE_NETWORK is disabled.
darkvater
parents: 773
diff changeset
   166
2944
2360b2da2bb0 (svn r3500) - Workaround the inaccurate count of spectators/companies that can happen in certain border-cases. For now just dynamically get this value when requested so it is always right. To do properly all player/client creation/destruction needs a hook for networking.
Darkvater
parents: 2881
diff changeset
   167
byte NetworkSpectatorCount(void);
2360b2da2bb0 (svn r3500) - Workaround the inaccurate count of spectators/companies that can happen in certain border-cases. For now just dynamically get this value when requested so it is always right. To do properly all player/client creation/destruction needs a hook for networking.
Darkvater
parents: 2881
diff changeset
   168
3041
96c5e9e8c3f3 (svn r3621) - Codechange: Only define the server and bans list if network is enabled. Preparatory work for saving patches/settings to savegame.
Darkvater
parents: 2944
diff changeset
   169
VARDEF char *_network_host_list[10];
96c5e9e8c3f3 (svn r3621) - Codechange: Only define the server and bans list if network is enabled. Preparatory work for saving patches/settings to savegame.
Darkvater
parents: 2944
diff changeset
   170
VARDEF char *_network_ban_list[25];
96c5e9e8c3f3 (svn r3621) - Codechange: Only define the server and bans list if network is enabled. Preparatory work for saving patches/settings to savegame.
Darkvater
parents: 2944
diff changeset
   171
4038
20e6144653b9 (svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents: 4034
diff changeset
   172
void ParseConnectionString(const char **player, const char **port, char *connection_string);
20e6144653b9 (svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents: 4034
diff changeset
   173
void NetworkUpdateClientInfo(uint16 client_index);
20e6144653b9 (svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents: 4034
diff changeset
   174
void NetworkAddServer(const char *b);
20e6144653b9 (svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents: 4034
diff changeset
   175
void NetworkRebuildHostList(void);
20e6144653b9 (svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents: 4034
diff changeset
   176
bool NetworkChangeCompanyPassword(byte argc, char *argv[]);
20e6144653b9 (svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents: 4034
diff changeset
   177
void NetworkPopulateCompanyInfo(void);
5034
611ac18ac2b5 (svn r7076) -Codechange: Prefer includes instead of using extern. Move UpdateNetworkGameWindow
Darkvater
parents: 4880
diff changeset
   178
void UpdateNetworkGameWindow(bool unselect);
4716
8a05bf6d951d (svn r6628) - Feature: Add the ability to pause a server if not enough players are connected. The setting for this is 'min_players' and can be set in the config and via the console. If the number of players drops below this number, the server will pause the game.
peter1138
parents: 4344
diff changeset
   179
void CheckMinPlayers(void);
4038
20e6144653b9 (svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents: 4034
diff changeset
   180
4829
9a0a034d0f55 (svn r6753) -Codechange: Move some function declerations from functions.h into network.h
Darkvater
parents: 4716
diff changeset
   181
void NetworkStartUp(void);
5619
9f5a7152403a (svn r8078) -Codechange: rewrite UDP part of the network code to make use classes. This is only one of the many steps to really cleanup the network code.
rubidium
parents: 5587
diff changeset
   182
void NetworkUDPCloseAll();
4829
9a0a034d0f55 (svn r6753) -Codechange: Move some function declerations from functions.h into network.h
Darkvater
parents: 4716
diff changeset
   183
void NetworkShutDown(void);
9a0a034d0f55 (svn r6753) -Codechange: Move some function declerations from functions.h into network.h
Darkvater
parents: 4716
diff changeset
   184
void NetworkGameLoop(void);
9a0a034d0f55 (svn r6753) -Codechange: Move some function declerations from functions.h into network.h
Darkvater
parents: 4716
diff changeset
   185
void NetworkUDPGameLoop(void);
9a0a034d0f55 (svn r6753) -Codechange: Move some function declerations from functions.h into network.h
Darkvater
parents: 4716
diff changeset
   186
bool NetworkServerStart(void);
4880
aac84a9dcd03 (svn r6816) -Codechange: Some coding style, variable localization, const correctness.
Darkvater
parents: 4830
diff changeset
   187
bool NetworkClientConnectGame(const char *host, uint16 port);
4829
9a0a034d0f55 (svn r6753) -Codechange: Move some function declerations from functions.h into network.h
Darkvater
parents: 4716
diff changeset
   188
void NetworkReboot(void);
9a0a034d0f55 (svn r6753) -Codechange: Move some function declerations from functions.h into network.h
Darkvater
parents: 4716
diff changeset
   189
void NetworkDisconnect(void);
4830
668bcb0a30b2 (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   190
668bcb0a30b2 (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   191
VARDEF bool _network_server;     ///< network-server is active
668bcb0a30b2 (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   192
VARDEF bool _network_available;  ///< is network mode available?
668bcb0a30b2 (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   193
668bcb0a30b2 (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   194
#else /* ENABLE_NETWORK */
668bcb0a30b2 (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   195
/* Network function stubs when networking is disabled */
668bcb0a30b2 (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   196
668bcb0a30b2 (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   197
static inline void NetworkStartUp(void) {}
668bcb0a30b2 (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   198
static inline void NetworkShutDown(void) {}
668bcb0a30b2 (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   199
668bcb0a30b2 (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   200
#define _networking 0
668bcb0a30b2 (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   201
#define _network_server 0
668bcb0a30b2 (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   202
#define _network_available 0
668bcb0a30b2 (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   203
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   204
#endif /* ENABLE_NETWORK */
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   205
4830
668bcb0a30b2 (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   206
/* These variables must always be registered! */
668bcb0a30b2 (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   207
VARDEF bool _network_dedicated;  ///< are we a dedicated server?
668bcb0a30b2 (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   208
VARDEF bool _network_advertise;  ///< is the server advertising to the master server?
4880
aac84a9dcd03 (svn r6816) -Codechange: Some coding style, variable localization, const correctness.
Darkvater
parents: 4830
diff changeset
   209
VARDEF PlayerID _network_playas; ///< an id to play as.. (see players.h:Players)
211
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
   210
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
   211
#endif /* NETWORK_H */