author | tron |
Sat, 17 Jun 2006 10:24:20 +0000 | |
changeset 4034 | 091963647651 |
parent 3994 | 6d4a3d6db5e3 |
child 4038 | b23bbe44d1ba |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
211 | 3 |
#ifndef NETWORK_H |
4 |
#define NETWORK_H |
|
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 { |
5b2681cad645
(svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents:
1011
diff
changeset
|
49 |
NETWORK_NAME_LENGTH = 80, |
5b2681cad645
(svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents:
1011
diff
changeset
|
50 |
NETWORK_HOSTNAME_LENGTH = 80, |
3994
6d4a3d6db5e3
(svn r5197) - Use svn info to automatically find the last modified revision number and get branch information and place it in the revision string. Increase NETWORK_REVISION_LENGTH to accommodate the branch tag.
peter1138
parents:
3818
diff
changeset
|
51 |
NETWORK_REVISION_LENGTH = 15, |
1026
5b2681cad645
(svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents:
1011
diff
changeset
|
52 |
NETWORK_PASSWORD_LENGTH = 20, |
5b2681cad645
(svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents:
1011
diff
changeset
|
53 |
NETWORK_PLAYERS_LENGTH = 200, |
5b2681cad645
(svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents:
1011
diff
changeset
|
54 |
NETWORK_CLIENT_NAME_LENGTH = 25, |
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 |
|
37c57d697d9b
(svn r2581) Fix: Behave a bit safer if central server sends bogus information about clients.
ludde
parents:
1812
diff
changeset
|
57 |
NETWORK_NUM_LANGUAGES = 4, |
1026
5b2681cad645
(svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents:
1011
diff
changeset
|
58 |
}; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
59 |
|
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
60 |
// 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
|
61 |
// 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
|
62 |
// and only filled with data a player enters. |
211 | 63 |
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
|
64 |
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
|
65 |
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
|
66 |
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
|
67 |
// 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
|
68 |
// it is easy to compare if a server is of the correct version |
2881
1ffbbdbf1685
(svn r3429) - Feature (Followup): Change the gamelist window to accomodate for the new information.
Darkvater
parents:
2879
diff
changeset
|
69 |
bool compatible; // Can we connect to this server or not? (based on server_revision) |
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
|
70 |
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
|
71 |
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
|
72 |
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
|
73 |
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
|
74 |
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
|
75 |
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
|
76 |
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
|
77 |
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
|
78 |
byte spectators_on; // How many spectators do we have? (XXX - disabled for server atm, use NetworkSpectatorCount()) |
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
|
79 |
uint16 game_date; // Current date |
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
|
80 |
uint16 start_date; // When the game started |
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
|
81 |
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
|
82 |
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
|
83 |
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
|
84 |
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
|
85 |
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
|
86 |
char rcon_password[NETWORK_PASSWORD_LENGTH]; // RCon password for the server. "" if rcon is disabled |
211 | 87 |
} NetworkGameInfo; |
88 |
||
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
89 |
typedef struct NetworkPlayerInfo { |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
90 |
char company_name[NETWORK_NAME_LENGTH]; // Company name |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
91 |
char password[NETWORK_PASSWORD_LENGTH]; // The password for the player |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
92 |
byte inaugurated_year; // What year the company started in |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
93 |
int64 company_value; // The company value |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
94 |
int64 money; // The amount of money the company has |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
95 |
int64 income; // How much did the company earned last year |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
96 |
uint16 performance; // What was his performance last month? |
1011
2587838541bf
(svn r1510) -Add: Improved Network Lobby GUI: (bociusz)
truelight
parents:
841
diff
changeset
|
97 |
byte use_password; // 0: No password 1: There is a password |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
98 |
uint16 num_vehicle[NETWORK_VEHICLE_TYPES]; // How many vehicles are there of this type? |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
99 |
uint16 num_station[NETWORK_STATION_TYPES]; // How many stations are there of this type? |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
100 |
char players[NETWORK_PLAYERS_LENGTH]; // The players that control this company (Name1, name2, ..) |
690
9f449a6b133e
(svn r1131) -Add: [Network] Autoclean_companies (set it with 'set autoclean_companies on/off').
truelight
parents:
670
diff
changeset
|
101 |
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
|
102 |
} NetworkPlayerInfo; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
103 |
|
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
104 |
typedef struct NetworkClientInfo { |
1804
7810fc0aa941
(svn r2308) - Fix: enforce server-only and/or offline commands by giving them flags in the process table. This also fixes bug "[ 1190944 ] Many commands not checked for security"
Darkvater
parents:
1739
diff
changeset
|
105 |
uint16 client_index; /// Index of the client (same as ClientState->index) |
7810fc0aa941
(svn r2308) - Fix: enforce server-only and/or offline commands by giving them flags in the process table. This also fixes bug "[ 1190944 ] Many commands not checked for security"
Darkvater
parents:
1739
diff
changeset
|
106 |
char client_name[NETWORK_CLIENT_NAME_LENGTH]; /// Name of the client |
7810fc0aa941
(svn r2308) - Fix: enforce server-only and/or offline commands by giving them flags in the process table. This also fixes bug "[ 1190944 ] Many commands not checked for security"
Darkvater
parents:
1739
diff
changeset
|
107 |
byte client_lang; /// The language of the client |
7810fc0aa941
(svn r2308) - Fix: enforce server-only and/or offline commands by giving them flags in the process table. This also fixes bug "[ 1190944 ] Many commands not checked for security"
Darkvater
parents:
1739
diff
changeset
|
108 |
byte client_playas; /// As which player is this client playing (PlayerID) |
7810fc0aa941
(svn r2308) - Fix: enforce server-only and/or offline commands by giving them flags in the process table. This also fixes bug "[ 1190944 ] Many commands not checked for security"
Darkvater
parents:
1739
diff
changeset
|
109 |
uint32 client_ip; /// IP-address of the client (so he can be banned) |
7810fc0aa941
(svn r2308) - Fix: enforce server-only and/or offline commands by giving them flags in the process table. This also fixes bug "[ 1190944 ] Many commands not checked for security"
Darkvater
parents:
1739
diff
changeset
|
110 |
uint16 join_date; /// Gamedate the player has joined |
7810fc0aa941
(svn r2308) - Fix: enforce server-only and/or offline commands by giving them flags in the process table. This also fixes bug "[ 1190944 ] Many commands not checked for security"
Darkvater
parents:
1739
diff
changeset
|
111 |
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
|
112 |
} NetworkClientInfo; |
211 | 113 |
|
114 |
typedef struct NetworkGameList { |
|
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
115 |
NetworkGameInfo info; |
211 | 116 |
uint32 ip; |
117 |
uint16 port; |
|
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
118 |
bool online; // False if the server did not respond (default status) |
738
0b2fb79e64fc
(svn r1194) Feature: You can now add and remove servers from the server list. Those will be remembered until you delete them by pressing the Delete key.
dominik
parents:
716
diff
changeset
|
119 |
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
|
120 |
struct NetworkGameList *next; |
211 | 121 |
} NetworkGameList; |
122 |
||
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
123 |
typedef enum { |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
124 |
NETWORK_JOIN_STATUS_CONNECTING, |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
125 |
NETWORK_JOIN_STATUS_AUTHORIZING, |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
126 |
NETWORK_JOIN_STATUS_WAITING, |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
127 |
NETWORK_JOIN_STATUS_DOWNLOADING, |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
128 |
NETWORK_JOIN_STATUS_PROCESSING, |
670
7c58dc46609c
(svn r1108) -Fix: [Network] Fixed problem around slow clients:
truelight
parents:
668
diff
changeset
|
129 |
NETWORK_JOIN_STATUS_REGISTERING, |
239 | 130 |
|
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
131 |
NETWORK_JOIN_STATUS_GETTING_COMPANY_INFO, |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
132 |
} NetworkJoinStatus; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
133 |
|
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
134 |
// language ids for server_lang and client_lang |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
135 |
typedef enum { |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
136 |
NETLANG_ANY = 0, |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
137 |
NETLANG_ENGLISH = 1, |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
138 |
NETLANG_GERMAN = 2, |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
139 |
NETLANG_FRENCH = 3, |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
140 |
} NetworkLanguage; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
141 |
|
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
142 |
VARDEF NetworkGameList *_network_game_list; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
143 |
|
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
144 |
VARDEF NetworkGameInfo _network_game_info; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
145 |
VARDEF NetworkPlayerInfo _network_player_info[MAX_PLAYERS]; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
146 |
VARDEF NetworkClientInfo _network_client_info[MAX_CLIENT_INFO]; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
147 |
|
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
|
148 |
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
|
149 |
VARDEF char _network_default_ip[NETWORK_HOSTNAME_LENGTH]; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
150 |
|
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
151 |
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
|
152 |
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
|
153 |
|
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
154 |
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
|
155 |
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
|
156 |
|
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
|
157 |
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
|
158 |
|
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
159 |
// 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
|
160 |
VARDEF uint32 _broadcast_list[MAX_INTERFACES + 1]; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
161 |
|
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
|
162 |
VARDEF uint16 _network_server_port; |
629
ce914eb4023d
(svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
truelight
parents:
627
diff
changeset
|
163 |
/* 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
|
164 |
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
|
165 |
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
|
166 |
VARDEF uint32 _network_server_bind_ip; |
ce914eb4023d
(svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
truelight
parents:
627
diff
changeset
|
167 |
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
|
168 |
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
|
169 |
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
|
170 |
VARDEF char _network_server_password[NETWORK_PASSWORD_LENGTH]; |
5b2681cad645
(svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents:
1011
diff
changeset
|
171 |
VARDEF char _network_rcon_password[NETWORK_PASSWORD_LENGTH]; |
5b2681cad645
(svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents:
1011
diff
changeset
|
172 |
|
3173
1b75b9a6ff71
(svn r3805) - [FS#62] Fix doxygen comments to refer to the correct parameter. (sulai)
peter1138
parents:
3152
diff
changeset
|
173 |
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
|
174 |
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
|
175 |
|
1026
5b2681cad645
(svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents:
1011
diff
changeset
|
176 |
VARDEF uint16 _redirect_console_to_client; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
177 |
|
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
178 |
VARDEF uint16 _network_sync_freq; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
179 |
VARDEF uint8 _network_frame_freq; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
180 |
|
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
181 |
VARDEF uint32 _sync_seed_1, _sync_seed_2; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
182 |
VARDEF uint32 _sync_frame; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
183 |
VARDEF bool _network_first_time; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
184 |
// Vars needed for the join-GUI |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
185 |
VARDEF NetworkJoinStatus _network_join_status; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
186 |
VARDEF uint8 _network_join_waiting; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
187 |
VARDEF uint16 _network_join_kbytes; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
188 |
VARDEF uint16 _network_join_kbytes_total; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
189 |
|
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
190 |
VARDEF char _network_last_host[NETWORK_HOSTNAME_LENGTH]; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
191 |
VARDEF short _network_last_port; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
192 |
VARDEF uint32 _network_last_host_ip; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
193 |
VARDEF uint8 _network_reconnect; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
194 |
|
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
195 |
VARDEF bool _network_udp_server; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
196 |
VARDEF uint16 _network_udp_broadcast; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
197 |
|
764
68b398e2b780
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
738
diff
changeset
|
198 |
VARDEF byte _network_lan_internet; |
68b398e2b780
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
738
diff
changeset
|
199 |
|
668
346853c8b513
(svn r1106) -Add: [Network] Added master-server protocol and advertise to
truelight
parents:
663
diff
changeset
|
200 |
VARDEF bool _network_advertise; |
2861
c7e2c8217fed
(svn r3409) - Change the server advertisement interval to use the frame counter instead
peter1138
parents:
2380
diff
changeset
|
201 |
VARDEF bool _network_need_advertise; |
c7e2c8217fed
(svn r3409) - Change the server advertisement interval to use the frame counter instead
peter1138
parents:
2380
diff
changeset
|
202 |
VARDEF uint32 _network_last_advertise_frame; |
764
68b398e2b780
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
738
diff
changeset
|
203 |
VARDEF uint8 _network_advertise_retries; |
668
346853c8b513
(svn r1106) -Add: [Network] Added master-server protocol and advertise to
truelight
parents:
663
diff
changeset
|
204 |
|
690
9f449a6b133e
(svn r1131) -Add: [Network] Autoclean_companies (set it with 'set autoclean_companies on/off').
truelight
parents:
670
diff
changeset
|
205 |
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
|
206 |
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
|
207 |
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
|
208 |
|
785
e9ca2bcc9c8f
(svn r1252) -Add: [Network] With 'set restart_game_date' you can set the date for in
truelight
parents:
774
diff
changeset
|
209 |
VARDEF uint16 _network_restart_game_date; // If this year is reached, the server automaticly restarts |
e9ca2bcc9c8f
(svn r1252) -Add: [Network] With 'set restart_game_date' you can set the date for in
truelight
parents:
774
diff
changeset
|
210 |
|
1329 | 211 |
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
|
212 |
|
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
|
213 |
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
|
214 |
|
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
|
215 |
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
|
216 |
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
|
217 |
|
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
218 |
#endif /* ENABLE_NETWORK */ |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
219 |
|
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
220 |
// Those variables must always be registered! |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
221 |
VARDEF bool _networking; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
222 |
VARDEF bool _network_available; // is network mode available? |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
223 |
VARDEF bool _network_server; // network-server is active |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
224 |
VARDEF bool _network_dedicated; // are we a dedicated server? |
3692 | 225 |
VARDEF PlayerID _network_playas; // an id to play as.. |
211 | 226 |
|
1329 | 227 |
void ParseConnectionString(const char **player, const char **port, char *connection_string); |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
228 |
void NetworkUpdateClientInfo(uint16 client_index); |
1329 | 229 |
void NetworkAddServer(const char *b); |
1093
e8d26c7dc42f
(svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile
tron
parents:
1026
diff
changeset
|
230 |
void NetworkRebuildHostList(void); |
1739
4f3082735fbc
(svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater
parents:
1602
diff
changeset
|
231 |
bool NetworkChangeCompanyPassword(byte argc, char *argv[]); |
3818
df92fcdaf7ac
(svn r4828) -Feature (FS#150) Add a new console command "players" that lists current players along with basic stats (ledow)
celestar
parents:
3692
diff
changeset
|
232 |
void NetworkPopulateCompanyInfo(void); |
228
f65dec6727d9
(svn r229) -Fix: Some more const stuff fixed .(Tron)
darkvater
parents:
211
diff
changeset
|
233 |
|
211 | 234 |
#endif /* NETWORK_H */ |