network.h
author celestar
Sat, 30 Dec 2006 13:15:15 +0000
branchcustombridgeheads
changeset 5603 f3aa14b91b0a
parent 5339 7573f179efe8
child 5429 a1f3d6573141
permissions -rw-r--r--
(svn r7648) [cbh] - Feature: Allow removal of tracks from bridge heads. However, trains on the bridge must still be able to access the bridge head
2186
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2153
diff changeset
     1
/* $Id$ */
461a2aff3486 (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
3236ec743f75 (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
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
     7
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
     8
#ifdef ENABLE_NETWORK
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
     9
2153
91e89aa8c299 (svn r2663) Include variables.h only in these files which need it, not globally via openttd.h
tron
parents: 2079
diff changeset
    10
#include "player.h"
91e89aa8c299 (svn r2663) Include variables.h only in these files which need it, not globally via openttd.h
tron
parents: 2079
diff changeset
    11
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    12
// If this line is enable, every frame will have a sync test
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    13
//  this is not needed in normal games. Normal is like 1 sync in 100
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    14
//  frames. You can enable this if you have a lot of desyncs on a certain
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    15
//  game.
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    16
// Remember: both client and server have to be compiled with this
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    17
//  option enabled to make it to work. If one of the two has it disabled
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    18
//  nothing will happen.
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    19
//#define ENABLE_NETWORK_SYNC_EVERY_FRAME
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    20
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    21
// In theory sending 1 of the 2 seeds is enough to check for desyncs
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    22
//   so in theory, this next define can be left off.
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    23
//#define NETWORK_SEND_DOUBLE_SEED
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    24
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    25
// How many clients can we have? Like.. MAX_PLAYERS - 1 is the amount of
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    26
//  players that can really play.. so.. a max of 4 spectators.. gives us..
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    27
//  MAX_PLAYERS + 3
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    28
#define MAX_CLIENTS (MAX_PLAYERS + 3)
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    29
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    30
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    31
// Do not change this next line. It should _ALWAYS_ be MAX_CLIENTS + 1
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    32
#define MAX_CLIENT_INFO (MAX_CLIENTS + 1)
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    33
668
346853c8b513 (svn r1106) -Add: [Network] Added master-server protocol and advertise to
truelight
parents: 663
diff changeset
    34
/* Stuff for the master-server */
346853c8b513 (svn r1106) -Add: [Network] Added master-server protocol and advertise to
truelight
parents: 663
diff changeset
    35
#define NETWORK_MASTER_SERVER_PORT 3978
346853c8b513 (svn r1106) -Add: [Network] Added master-server protocol and advertise to
truelight
parents: 663
diff changeset
    36
#define NETWORK_MASTER_SERVER_HOST "master.openttd.org"
346853c8b513 (svn r1106) -Add: [Network] Added master-server protocol and advertise to
truelight
parents: 663
diff changeset
    37
#define NETWORK_MASTER_SERVER_WELCOME_MESSAGE "OpenTTDRegister"
346853c8b513 (svn r1106) -Add: [Network] Added master-server protocol and advertise to
truelight
parents: 663
diff changeset
    38
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    39
#define NETWORK_DEFAULT_PORT 3979
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    40
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    41
#define MAX_INTERFACES 9
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    42
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    43
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    44
// How many vehicle/station types we put over the network
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    45
#define NETWORK_VEHICLE_TYPES 5
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    46
#define NETWORK_STATION_TYPES 5
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    47
1026
5b2681cad645 (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents: 1011
diff changeset
    48
enum {
4344
5d0e40cd67b9 (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
	NETWORK_NAME_LENGTH        =  80,
5d0e40cd67b9 (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
	NETWORK_HOSTNAME_LENGTH    =  80,
5d0e40cd67b9 (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
	NETWORK_REVISION_LENGTH    =  15,
5d0e40cd67b9 (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
	NETWORK_PASSWORD_LENGTH    =  20,
1026
5b2681cad645 (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents: 1011
diff changeset
    53
	NETWORK_PLAYERS_LENGTH     = 200,
4344
5d0e40cd67b9 (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
	NETWORK_CLIENT_NAME_LENGTH =  25,
1026
5b2681cad645 (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents: 1011
diff changeset
    55
	NETWORK_RCONCOMMAND_LENGTH = 500,
2071
37c57d697d9b (svn r2581) Fix: Behave a bit safer if central server sends bogus information about clients.
ludde
parents: 1812
diff changeset
    56
5339
7573f179efe8 (svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents: 5034
diff changeset
    57
	NETWORK_GRF_NAME_LENGTH    =  80, ///< Maximum length of the name of a GRF
7573f179efe8 (svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents: 5034
diff changeset
    58
	/* Maximum number of GRFs that can be sent.
7573f179efe8 (svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents: 5034
diff changeset
    59
	 * This value is related to number of handles (files) OpenTTD can open.
7573f179efe8 (svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents: 5034
diff changeset
    60
	 * This is currently 64 and about 10 are currently used when OpenTTD loads
7573f179efe8 (svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents: 5034
diff changeset
    61
	 * without any NewGRFs. Therefore one can only load about 55 NewGRFs, so
7573f179efe8 (svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents: 5034
diff changeset
    62
	 * this is not a limit, but rather a way to easily check whether the limit
7573f179efe8 (svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents: 5034
diff changeset
    63
	 * imposed by the handle count is reached. Secondly it isn't possible to
7573f179efe8 (svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents: 5034
diff changeset
    64
	 * send much more GRF IDs + MD5sums in the PACKET_UDP_SERVER_RESPONSE, due
7573f179efe8 (svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents: 5034
diff changeset
    65
	 * to the limited size of UDP packets. */
7573f179efe8 (svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents: 5034
diff changeset
    66
	NETWORK_MAX_GRF_COUNT      =  55,
7573f179efe8 (svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents: 5034
diff changeset
    67
4344
5d0e40cd67b9 (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
    68
	NETWORK_NUM_LANGUAGES      =   4,
1026
5b2681cad645 (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents: 1011
diff changeset
    69
};
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    70
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    71
// This is the struct used by both client and server
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    72
//  some fields will be empty on the client (like game_password) by default
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
    73
//  and only filled with data a player enters.
211
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
    74
typedef struct NetworkGameInfo {
2879
d270cb37c0ec (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2861
diff changeset
    75
	char server_name[NETWORK_NAME_LENGTH];          // Server name
d270cb37c0ec (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2861
diff changeset
    76
	char hostname[NETWORK_HOSTNAME_LENGTH];         // Hostname of the server (if any)
d270cb37c0ec (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2861
diff changeset
    77
	char server_revision[NETWORK_REVISION_LENGTH];  // The SVN version number the server is using (e.g.: 'r304')
d270cb37c0ec (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2861
diff changeset
    78
	                                                //  It even shows a SVN version in release-version, so
d270cb37c0ec (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2861
diff changeset
    79
	                                                //  it is easy to compare if a server is of the correct version
5339
7573f179efe8 (svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents: 5034
diff changeset
    80
	bool version_compatible;                        // Can we connect to this server or not? (based on server_revision)
7573f179efe8 (svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents: 5034
diff changeset
    81
	bool compatible;                                // Can we connect to this server or not? (based on server_revision _and_ grf_match
2879
d270cb37c0ec (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2861
diff changeset
    82
	byte server_lang;                               // Language of the server (we should make a nice table for this)
d270cb37c0ec (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2861
diff changeset
    83
	byte use_password;                              // Is set to != 0 if it uses a password
d270cb37c0ec (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2861
diff changeset
    84
	char server_password[NETWORK_PASSWORD_LENGTH];  // On the server: the game password, on the client: != "" if server has password
d270cb37c0ec (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2861
diff changeset
    85
	byte clients_max;                               // Max clients allowed on server
d270cb37c0ec (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2861
diff changeset
    86
	byte clients_on;                                // Current count of clients on server
d270cb37c0ec (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2861
diff changeset
    87
	byte companies_max;                             // Max companies allowed on server
2944
7c392e7b51c6 (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
    88
	byte companies_on;                              // How many started companies do we have (XXX - disabled for server atm, use ActivePlayerCount())
2879
d270cb37c0ec (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2861
diff changeset
    89
	byte spectators_max;                            // Max spectators allowed on server
2944
7c392e7b51c6 (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
    90
	byte spectators_on;                             // How many spectators do we have? (XXX - disabled for server atm, use NetworkSpectatorCount())
4289
ff1b2b915cab (svn r5919) -Cleanup: use the type Date when the variable really is a date
rubidium
parents: 4285
diff changeset
    91
	Date game_date;                                 // Current date
ff1b2b915cab (svn r5919) -Cleanup: use the type Date when the variable really is a date
rubidium
parents: 4285
diff changeset
    92
	Date start_date;                                // When the game started
2879
d270cb37c0ec (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2861
diff changeset
    93
	char map_name[NETWORK_NAME_LENGTH];             // Map which is played ["random" for a randomized map]
d270cb37c0ec (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2861
diff changeset
    94
	uint16 map_width;                               // Map width
d270cb37c0ec (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2861
diff changeset
    95
	uint16 map_height;                              // Map height
d270cb37c0ec (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2861
diff changeset
    96
	byte map_set;                                   // Graphical set
d270cb37c0ec (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2861
diff changeset
    97
	bool dedicated;                                 // Is this a dedicated server?
d270cb37c0ec (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2861
diff changeset
    98
	char rcon_password[NETWORK_PASSWORD_LENGTH];    // RCon password for the server. "" if rcon is disabled
5339
7573f179efe8 (svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents: 5034
diff changeset
    99
	struct GRFConfig *grfconfig;                    // List of NewGRF files required
211
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
   100
} NetworkGameInfo;
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
   101
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   102
typedef struct NetworkPlayerInfo {
4344
5d0e40cd67b9 (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
   103
	char company_name[NETWORK_NAME_LENGTH];         // Company name
5d0e40cd67b9 (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
   104
	char password[NETWORK_PASSWORD_LENGTH];         // The password for the player
5d0e40cd67b9 (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
   105
	Year inaugurated_year;                          // What year the company started in
5d0e40cd67b9 (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
   106
	int64 company_value;                            // The company value
5d0e40cd67b9 (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
   107
	int64 money;                                    // The amount of money the company has
5d0e40cd67b9 (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
   108
	int64 income;                                   // How much did the company earned last year
5d0e40cd67b9 (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
   109
	uint16 performance;                             // What was his performance last month?
5d0e40cd67b9 (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
   110
	byte use_password;                              // 0: No password 1: There is a password
5d0e40cd67b9 (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
   111
	uint16 num_vehicle[NETWORK_VEHICLE_TYPES];      // How many vehicles are there of this type?
5d0e40cd67b9 (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
   112
	uint16 num_station[NETWORK_STATION_TYPES];      // How many stations are there of this type?
5d0e40cd67b9 (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
   113
	char players[NETWORK_PLAYERS_LENGTH];           // The players that control this company (Name1, name2, ..)
5d0e40cd67b9 (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
   114
	uint16 months_empty;                            // How many months the company is empty
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   115
} NetworkPlayerInfo;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   116
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   117
typedef struct NetworkClientInfo {
4344
5d0e40cd67b9 (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
   118
	uint16 client_index;                            // Index of the client (same as ClientState->index)
5d0e40cd67b9 (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
   119
	char client_name[NETWORK_CLIENT_NAME_LENGTH];   // Name of the client
5d0e40cd67b9 (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
   120
	byte client_lang;                               // The language of the client
5d0e40cd67b9 (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
   121
	byte client_playas;                             // As which player is this client playing (PlayerID)
5d0e40cd67b9 (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
   122
	uint32 client_ip;                               // IP-address of the client (so he can be banned)
5d0e40cd67b9 (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
   123
	Date join_date;                                 // Gamedate the player has joined
5d0e40cd67b9 (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
   124
	char unique_id[NETWORK_NAME_LENGTH];            // Every play sends an unique id so we can indentify him
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   125
} NetworkClientInfo;
211
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
   126
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
   127
typedef struct NetworkGameList {
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   128
	NetworkGameInfo info;
211
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
   129
	uint32 ip;
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
   130
	uint16 port;
4344
5d0e40cd67b9 (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
   131
	bool online;                                    // False if the server did not respond (default status)
5d0e40cd67b9 (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
   132
	bool manually;                                  // True if the server was added manually
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   133
	struct NetworkGameList *next;
211
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
   134
} NetworkGameList;
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
   135
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   136
typedef enum {
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   137
	NETWORK_JOIN_STATUS_CONNECTING,
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   138
	NETWORK_JOIN_STATUS_AUTHORIZING,
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   139
	NETWORK_JOIN_STATUS_WAITING,
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   140
	NETWORK_JOIN_STATUS_DOWNLOADING,
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   141
	NETWORK_JOIN_STATUS_PROCESSING,
670
7c58dc46609c (svn r1108) -Fix: [Network] Fixed problem around slow clients:
truelight
parents: 668
diff changeset
   142
	NETWORK_JOIN_STATUS_REGISTERING,
239
23958632a582 (svn r240) -Fix: desync on subsidy generation
signde
parents: 228
diff changeset
   143
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   144
	NETWORK_JOIN_STATUS_GETTING_COMPANY_INFO,
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   145
} NetworkJoinStatus;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   146
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   147
// language ids for server_lang and client_lang
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   148
typedef enum {
4344
5d0e40cd67b9 (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
   149
	NETLANG_ANY     = 0,
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   150
	NETLANG_ENGLISH = 1,
4344
5d0e40cd67b9 (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
   151
	NETLANG_GERMAN  = 2,
5d0e40cd67b9 (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
   152
	NETLANG_FRENCH  = 3,
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   153
} NetworkLanguage;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   154
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   155
VARDEF NetworkGameList *_network_game_list;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   156
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   157
VARDEF NetworkGameInfo _network_game_info;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   158
VARDEF NetworkPlayerInfo _network_player_info[MAX_PLAYERS];
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   159
VARDEF NetworkClientInfo _network_client_info[MAX_CLIENT_INFO];
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   160
3623
2dd90d28fe20 (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
   161
VARDEF char _network_player_name[NETWORK_CLIENT_NAME_LENGTH];
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   162
VARDEF char _network_default_ip[NETWORK_HOSTNAME_LENGTH];
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   163
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   164
VARDEF uint16 _network_own_client_index;
602
9bbe42a9e3ed (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
truelight
parents: 600
diff changeset
   165
VARDEF char _network_unique_id[NETWORK_NAME_LENGTH]; // Our own unique ID
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   166
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   167
VARDEF uint32 _frame_counter_server; // The frame_counter of the server, if in network-mode
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   168
VARDEF uint32 _frame_counter_max; // To where we may go with our clients
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   169
2079
5afd2e7fc3bd (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
   170
VARDEF uint32 _last_sync_frame; // Used in the server to store the last time a sync packet was sent to clients.
5afd2e7fc3bd (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
   171
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   172
// networking settings
4034
091963647651 (svn r5293) -Fix: Not all network interfaces are capable of broadcasting. Don't record those which aren't
tron
parents: 3994
diff changeset
   173
VARDEF uint32 _broadcast_list[MAX_INTERFACES + 1];
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   174
3152
447059d1ecdd (svn r3775) Fix loading of server_port from config file, introduced in Darkvater's unified configuration changes (r3719+)
peter1138
parents: 3041
diff changeset
   175
VARDEF uint16 _network_server_port;
629
ce914eb4023d (svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
truelight
parents: 627
diff changeset
   176
/* We use bind_ip and bind_ip_host, where bind_ip_host is the readable form of
ce914eb4023d (svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
truelight
parents: 627
diff changeset
   177
    bind_ip_host, and bind_ip the numeric value, because we want a nice number
ce914eb4023d (svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
truelight
parents: 627
diff changeset
   178
    in the openttd.cfg, but we wants to use the uint32 internally.. */
ce914eb4023d (svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
truelight
parents: 627
diff changeset
   179
VARDEF uint32 _network_server_bind_ip;
ce914eb4023d (svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
truelight
parents: 627
diff changeset
   180
VARDEF char _network_server_bind_ip_host[NETWORK_HOSTNAME_LENGTH];
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   181
VARDEF bool _is_network_server; // Does this client wants to be a network-server?
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   182
VARDEF char _network_server_name[NETWORK_NAME_LENGTH];
1026
5b2681cad645 (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents: 1011
diff changeset
   183
VARDEF char _network_server_password[NETWORK_PASSWORD_LENGTH];
5b2681cad645 (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents: 1011
diff changeset
   184
VARDEF char _network_rcon_password[NETWORK_PASSWORD_LENGTH];
5b2681cad645 (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents: 1011
diff changeset
   185
3173
1b75b9a6ff71 (svn r3805) - [FS#62] Fix doxygen comments to refer to the correct parameter. (sulai)
peter1138
parents: 3152
diff changeset
   186
VARDEF uint16 _network_max_join_time;             ///< Time a client can max take to join
1b75b9a6ff71 (svn r3805) - [FS#62] Fix doxygen comments to refer to the correct parameter. (sulai)
peter1138
parents: 3152
diff changeset
   187
VARDEF bool _network_pause_on_join;               ///< Pause the game when a client tries to join (more chance of succeeding join)
1602
08783e4287dc (svn r2106) -Fix: improved the network-join algoritm, it is now a bit more stable
truelight
parents: 1441
diff changeset
   188
1026
5b2681cad645 (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents: 1011
diff changeset
   189
VARDEF uint16 _redirect_console_to_client;
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   190
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   191
VARDEF uint16 _network_sync_freq;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   192
VARDEF uint8 _network_frame_freq;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   193
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   194
VARDEF uint32 _sync_seed_1, _sync_seed_2;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   195
VARDEF uint32 _sync_frame;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   196
VARDEF bool _network_first_time;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   197
// Vars needed for the join-GUI
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   198
VARDEF NetworkJoinStatus _network_join_status;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   199
VARDEF uint8 _network_join_waiting;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   200
VARDEF uint16 _network_join_kbytes;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   201
VARDEF uint16 _network_join_kbytes_total;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   202
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   203
VARDEF char _network_last_host[NETWORK_HOSTNAME_LENGTH];
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   204
VARDEF short _network_last_port;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   205
VARDEF uint32 _network_last_host_ip;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   206
VARDEF uint8 _network_reconnect;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   207
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   208
VARDEF bool _network_udp_server;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   209
VARDEF uint16 _network_udp_broadcast;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   210
764
68b398e2b780 (svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents: 738
diff changeset
   211
VARDEF byte _network_lan_internet;
68b398e2b780 (svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents: 738
diff changeset
   212
2861
c7e2c8217fed (svn r3409) - Change the server advertisement interval to use the frame counter instead
peter1138
parents: 2380
diff changeset
   213
VARDEF bool _network_need_advertise;
c7e2c8217fed (svn r3409) - Change the server advertisement interval to use the frame counter instead
peter1138
parents: 2380
diff changeset
   214
VARDEF uint32 _network_last_advertise_frame;
764
68b398e2b780 (svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents: 738
diff changeset
   215
VARDEF uint8 _network_advertise_retries;
668
346853c8b513 (svn r1106) -Add: [Network] Added master-server protocol and advertise to
truelight
parents: 663
diff changeset
   216
690
9f449a6b133e (svn r1131) -Add: [Network] Autoclean_companies (set it with 'set autoclean_companies on/off').
truelight
parents: 670
diff changeset
   217
VARDEF bool _network_autoclean_companies;
9f449a6b133e (svn r1131) -Add: [Network] Autoclean_companies (set it with 'set autoclean_companies on/off').
truelight
parents: 670
diff changeset
   218
VARDEF uint8 _network_autoclean_unprotected; // Remove a company after X months
9f449a6b133e (svn r1131) -Add: [Network] Autoclean_companies (set it with 'set autoclean_companies on/off').
truelight
parents: 670
diff changeset
   219
VARDEF uint8 _network_autoclean_protected;   // Unprotect a company after X months
9f449a6b133e (svn r1131) -Add: [Network] Autoclean_companies (set it with 'set autoclean_companies on/off').
truelight
parents: 670
diff changeset
   220
4293
2c24234a7aec (svn r5926) -Codechange: make _cur_year contain the full year, instead of the offset since 1920
rubidium
parents: 4289
diff changeset
   221
VARDEF Year _network_restart_game_year;      // If this year is reached, the server automaticly restarts
4716
d9ca1be9d04b (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
   222
VARDEF uint8 _network_min_players;           // Minimum number of players for game to unpause
785
e9ca2bcc9c8f (svn r1252) -Add: [Network] With 'set restart_game_date' you can set the date for in
truelight
parents: 774
diff changeset
   223
1329
a8a0d60b0a8e (svn r1833) byte -> char transition: the rest
tron
parents: 1093
diff changeset
   224
NetworkGameList *NetworkQueryServer(const char* host, unsigned short port, bool game_info);
774
258c11431acb (svn r1240) -Fix: OpenTTD once again compiles if ENABLE_NETWORK is disabled.
darkvater
parents: 773
diff changeset
   225
2944
7c392e7b51c6 (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
   226
byte NetworkSpectatorCount(void);
7c392e7b51c6 (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
   227
3041
105098f42dfa (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
   228
VARDEF char *_network_host_list[10];
105098f42dfa (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
   229
VARDEF char *_network_ban_list[25];
105098f42dfa (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
   230
4038
b23bbe44d1ba (svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents: 4034
diff changeset
   231
void ParseConnectionString(const char **player, const char **port, char *connection_string);
b23bbe44d1ba (svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents: 4034
diff changeset
   232
void NetworkUpdateClientInfo(uint16 client_index);
b23bbe44d1ba (svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents: 4034
diff changeset
   233
void NetworkAddServer(const char *b);
b23bbe44d1ba (svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents: 4034
diff changeset
   234
void NetworkRebuildHostList(void);
b23bbe44d1ba (svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents: 4034
diff changeset
   235
bool NetworkChangeCompanyPassword(byte argc, char *argv[]);
b23bbe44d1ba (svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents: 4034
diff changeset
   236
void NetworkPopulateCompanyInfo(void);
5034
f00ac4873c34 (svn r7076) -Codechange: Prefer includes instead of using extern. Move UpdateNetworkGameWindow
Darkvater
parents: 4880
diff changeset
   237
void UpdateNetworkGameWindow(bool unselect);
4716
d9ca1be9d04b (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
   238
void CheckMinPlayers(void);
4038
b23bbe44d1ba (svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents: 4034
diff changeset
   239
4829
cb6ad7332c52 (svn r6753) -Codechange: Move some function declerations from functions.h into network.h
Darkvater
parents: 4716
diff changeset
   240
void NetworkStartUp(void);
cb6ad7332c52 (svn r6753) -Codechange: Move some function declerations from functions.h into network.h
Darkvater
parents: 4716
diff changeset
   241
void NetworkUDPClose(void);
cb6ad7332c52 (svn r6753) -Codechange: Move some function declerations from functions.h into network.h
Darkvater
parents: 4716
diff changeset
   242
void NetworkShutDown(void);
cb6ad7332c52 (svn r6753) -Codechange: Move some function declerations from functions.h into network.h
Darkvater
parents: 4716
diff changeset
   243
void NetworkGameLoop(void);
cb6ad7332c52 (svn r6753) -Codechange: Move some function declerations from functions.h into network.h
Darkvater
parents: 4716
diff changeset
   244
void NetworkUDPGameLoop(void);
cb6ad7332c52 (svn r6753) -Codechange: Move some function declerations from functions.h into network.h
Darkvater
parents: 4716
diff changeset
   245
bool NetworkServerStart(void);
4880
0708f34e3586 (svn r6816) -Codechange: Some coding style, variable localization, const correctness.
Darkvater
parents: 4830
diff changeset
   246
bool NetworkClientConnectGame(const char *host, uint16 port);
4829
cb6ad7332c52 (svn r6753) -Codechange: Move some function declerations from functions.h into network.h
Darkvater
parents: 4716
diff changeset
   247
void NetworkReboot(void);
cb6ad7332c52 (svn r6753) -Codechange: Move some function declerations from functions.h into network.h
Darkvater
parents: 4716
diff changeset
   248
void NetworkDisconnect(void);
4830
0ff2a14e90be (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   249
0ff2a14e90be (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   250
VARDEF bool _networking;         ///< are we in networking mode?
0ff2a14e90be (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   251
VARDEF bool _network_server;     ///< network-server is active
0ff2a14e90be (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   252
VARDEF bool _network_available;  ///< is network mode available?
0ff2a14e90be (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   253
0ff2a14e90be (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   254
#else /* ENABLE_NETWORK */
0ff2a14e90be (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   255
/* Network function stubs when networking is disabled */
0ff2a14e90be (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   256
0ff2a14e90be (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   257
static inline void NetworkStartUp(void) {}
0ff2a14e90be (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   258
static inline void NetworkShutDown(void) {}
0ff2a14e90be (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   259
0ff2a14e90be (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   260
#define _networking 0
0ff2a14e90be (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   261
#define _network_server 0
0ff2a14e90be (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   262
#define _network_available 0
0ff2a14e90be (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   263
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   264
#endif /* ENABLE_NETWORK */
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 239
diff changeset
   265
4830
0ff2a14e90be (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   266
/* These variables must always be registered! */
0ff2a14e90be (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   267
VARDEF bool _network_dedicated;  ///< are we a dedicated server?
0ff2a14e90be (svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents: 4829
diff changeset
   268
VARDEF bool _network_advertise;  ///< is the server advertising to the master server?
4880
0708f34e3586 (svn r6816) -Codechange: Some coding style, variable localization, const correctness.
Darkvater
parents: 4830
diff changeset
   269
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
   270
2954c4b30525 (svn r212) -Fix: Network-gui fixes (sign_de)
darkvater
parents:
diff changeset
   271
#endif /* NETWORK_H */