author | rubidium |
Thu, 15 Nov 2007 18:07:30 +0000 | |
changeset 7887 | b72ef3f45a38 |
parent 7807 | b10fc6c5d081 |
child 7998 | 9cf9f9153262 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
211 | 3 |
#ifndef NETWORK_H |
4 |
#define NETWORK_H |
|
5 |
||
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
6 |
#ifdef ENABLE_NETWORK |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
7 |
|
5469
7edfc643abbc
(svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
5339
diff
changeset
|
8 |
#include "../player.h" |
7edfc643abbc
(svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
5339
diff
changeset
|
9 |
#include "core/config.h" |
7edfc643abbc
(svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
5339
diff
changeset
|
10 |
#include "core/game.h" |
2153
ecfc674410b4
(svn r2663) Include variables.h only in these files which need it, not globally via openttd.h
tron
parents:
2079
diff
changeset
|
11 |
|
543
946badd71033
(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 |
946badd71033
(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 |
946badd71033
(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 |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
15 |
// game. |
946badd71033
(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 |
946badd71033
(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 |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
18 |
// nothing will happen. |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
19 |
//#define ENABLE_NETWORK_SYNC_EVERY_FRAME |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
20 |
|
7187
7c9bf9e10d8b
(svn r10462) -Add: a command dumper/loader that could be enabled compile-time and server side only to aid debugging some desyncs, i.e. dump the stream of commands so it could be replayed in exactly the same way later. This should primarily be used to make desyncs more easily reproducable, so it can be properly debugged.
rubidium
parents:
6990
diff
changeset
|
21 |
/* |
7c9bf9e10d8b
(svn r10462) -Add: a command dumper/loader that could be enabled compile-time and server side only to aid debugging some desyncs, i.e. dump the stream of commands so it could be replayed in exactly the same way later. This should primarily be used to make desyncs more easily reproducable, so it can be properly debugged.
rubidium
parents:
6990
diff
changeset
|
22 |
* Dumps all commands that are sent/received to stderr and saves every month. |
7c9bf9e10d8b
(svn r10462) -Add: a command dumper/loader that could be enabled compile-time and server side only to aid debugging some desyncs, i.e. dump the stream of commands so it could be replayed in exactly the same way later. This should primarily be used to make desyncs more easily reproducable, so it can be properly debugged.
rubidium
parents:
6990
diff
changeset
|
23 |
* This log can become quite large over time; say in the order of two to three |
7c9bf9e10d8b
(svn r10462) -Add: a command dumper/loader that could be enabled compile-time and server side only to aid debugging some desyncs, i.e. dump the stream of commands so it could be replayed in exactly the same way later. This should primarily be used to make desyncs more easily reproducable, so it can be properly debugged.
rubidium
parents:
6990
diff
changeset
|
24 |
* times the bandwidth used for network games. |
7c9bf9e10d8b
(svn r10462) -Add: a command dumper/loader that could be enabled compile-time and server side only to aid debugging some desyncs, i.e. dump the stream of commands so it could be replayed in exactly the same way later. This should primarily be used to make desyncs more easily reproducable, so it can be properly debugged.
rubidium
parents:
6990
diff
changeset
|
25 |
*/ |
7c9bf9e10d8b
(svn r10462) -Add: a command dumper/loader that could be enabled compile-time and server side only to aid debugging some desyncs, i.e. dump the stream of commands so it could be replayed in exactly the same way later. This should primarily be used to make desyncs more easily reproducable, so it can be properly debugged.
rubidium
parents:
6990
diff
changeset
|
26 |
//#define DEBUG_DUMP_COMMANDS |
7c9bf9e10d8b
(svn r10462) -Add: a command dumper/loader that could be enabled compile-time and server side only to aid debugging some desyncs, i.e. dump the stream of commands so it could be replayed in exactly the same way later. This should primarily be used to make desyncs more easily reproducable, so it can be properly debugged.
rubidium
parents:
6990
diff
changeset
|
27 |
|
7c9bf9e10d8b
(svn r10462) -Add: a command dumper/loader that could be enabled compile-time and server side only to aid debugging some desyncs, i.e. dump the stream of commands so it could be replayed in exactly the same way later. This should primarily be used to make desyncs more easily reproducable, so it can be properly debugged.
rubidium
parents:
6990
diff
changeset
|
28 |
#ifdef DEBUG_DUMP_COMMANDS |
7c9bf9e10d8b
(svn r10462) -Add: a command dumper/loader that could be enabled compile-time and server side only to aid debugging some desyncs, i.e. dump the stream of commands so it could be replayed in exactly the same way later. This should primarily be used to make desyncs more easily reproducable, so it can be properly debugged.
rubidium
parents:
6990
diff
changeset
|
29 |
void CDECL debug_dump_commands(const char *s, ...); |
7c9bf9e10d8b
(svn r10462) -Add: a command dumper/loader that could be enabled compile-time and server side only to aid debugging some desyncs, i.e. dump the stream of commands so it could be replayed in exactly the same way later. This should primarily be used to make desyncs more easily reproducable, so it can be properly debugged.
rubidium
parents:
6990
diff
changeset
|
30 |
#endif /* DEBUG_DUMP_COMMANDS */ |
7c9bf9e10d8b
(svn r10462) -Add: a command dumper/loader that could be enabled compile-time and server side only to aid debugging some desyncs, i.e. dump the stream of commands so it could be replayed in exactly the same way later. This should primarily be used to make desyncs more easily reproducable, so it can be properly debugged.
rubidium
parents:
6990
diff
changeset
|
31 |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
32 |
// In theory sending 1 of the 2 seeds is enough to check for desyncs |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
33 |
// so in theory, this next define can be left off. |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
34 |
//#define NETWORK_SEND_DOUBLE_SEED |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
35 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
36 |
// How many clients can we have? Like.. MAX_PLAYERS - 1 is the amount of |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
37 |
// players that can really play.. so.. a max of 4 spectators.. gives us.. |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
38 |
// MAX_PLAYERS + 3 |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
39 |
#define MAX_CLIENTS (MAX_PLAYERS + 3) |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
40 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
41 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
42 |
// Do not change this next line. It should _ALWAYS_ be MAX_CLIENTS + 1 |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
43 |
#define MAX_CLIENT_INFO (MAX_CLIENTS + 1) |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
44 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
45 |
#define MAX_INTERFACES 9 |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
46 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
47 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
48 |
// How many vehicle/station types we put over the network |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
49 |
#define NETWORK_VEHICLE_TYPES 5 |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
50 |
#define NETWORK_STATION_TYPES 5 |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
51 |
|
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
52 |
struct NetworkPlayerInfo { |
4344
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
53 |
char company_name[NETWORK_NAME_LENGTH]; // Company name |
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
54 |
char password[NETWORK_PASSWORD_LENGTH]; // The password for the player |
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
55 |
Year inaugurated_year; // What year the company started in |
6990
136a08baf0ed
(svn r10246) -Fix (r10297): some forgotten money conversions and truncation issues. Thanks to benc for providing the patch.
rubidium
parents:
6796
diff
changeset
|
56 |
Money company_value; // The company value |
136a08baf0ed
(svn r10246) -Fix (r10297): some forgotten money conversions and truncation issues. Thanks to benc for providing the patch.
rubidium
parents:
6796
diff
changeset
|
57 |
Money money; // The amount of money the company has |
136a08baf0ed
(svn r10246) -Fix (r10297): some forgotten money conversions and truncation issues. Thanks to benc for providing the patch.
rubidium
parents:
6796
diff
changeset
|
58 |
Money income; // How much did the company earned last year |
4344
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
59 |
uint16 performance; // What was his performance last month? |
5918
f06b73812d5f
(svn r8546) -Codechange: add a seperate (wrapper) functions to send/receive booleans.
rubidium
parents:
5917
diff
changeset
|
60 |
bool use_password; // Is there a password |
4344
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
61 |
uint16 num_vehicle[NETWORK_VEHICLE_TYPES]; // How many vehicles are there of this type? |
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
62 |
uint16 num_station[NETWORK_STATION_TYPES]; // How many stations are there of this type? |
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
63 |
char players[NETWORK_PLAYERS_LENGTH]; // The players that control this company (Name1, name2, ..) |
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
64 |
uint16 months_empty; // How many months the company is empty |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
65 |
}; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
66 |
|
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
67 |
struct NetworkClientInfo { |
4344
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
68 |
uint16 client_index; // Index of the client (same as ClientState->index) |
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
69 |
char client_name[NETWORK_CLIENT_NAME_LENGTH]; // Name of the client |
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
70 |
byte client_lang; // The language of the client |
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5521
diff
changeset
|
71 |
PlayerID client_playas; // As which player is this client playing (PlayerID) |
4344
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
72 |
uint32 client_ip; // IP-address of the client (so he can be banned) |
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4326
diff
changeset
|
73 |
Date join_date; // Gamedate the player has joined |
7807
b10fc6c5d081
(svn r11357) -Fix: NetworkUniqueID could be 80 chars, while the max size we generate is 32. So reduce the size a bit. Pointed out by dihedral, so give him a big hug ;)
truelight
parents:
7564
diff
changeset
|
74 |
char unique_id[NETWORK_UNIQUE_ID_LENGTH]; // Every play sends an unique id so we can indentify him |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
75 |
}; |
211 | 76 |
|
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
77 |
enum NetworkJoinStatus { |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
78 |
NETWORK_JOIN_STATUS_CONNECTING, |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
79 |
NETWORK_JOIN_STATUS_AUTHORIZING, |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
80 |
NETWORK_JOIN_STATUS_WAITING, |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
81 |
NETWORK_JOIN_STATUS_DOWNLOADING, |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
82 |
NETWORK_JOIN_STATUS_PROCESSING, |
670
d164965bb35a
(svn r1108) -Fix: [Network] Fixed problem around slow clients:
truelight
parents:
668
diff
changeset
|
83 |
NETWORK_JOIN_STATUS_REGISTERING, |
239 | 84 |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
85 |
NETWORK_JOIN_STATUS_GETTING_COMPANY_INFO, |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
86 |
}; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
87 |
|
6793
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
88 |
/* Language ids for server_lang and client_lang. Do NOT modify the order. */ |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
89 |
enum NetworkLanguage { |
6793
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
90 |
NETLANG_ANY = 0, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
91 |
NETLANG_ENGLISH, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
92 |
NETLANG_GERMAN, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
93 |
NETLANG_FRENCH, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
94 |
NETLANG_BRAZILIAN, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
95 |
NETLANG_BULGARIAN, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
96 |
NETLANG_CHINESE, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
97 |
NETLANG_CZECH, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
98 |
NETLANG_DANISH, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
99 |
NETLANG_DUTCH, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
100 |
NETLANG_ESPERANTO, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
101 |
NETLANG_FINNISH, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
102 |
NETLANG_HUNGARIAN, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
103 |
NETLANG_ICELANDIC, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
104 |
NETLANG_ITALIAN, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
105 |
NETLANG_JAPANESE, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
106 |
NETLANG_KOREAN, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
107 |
NETLANG_LITHUANIAN, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
108 |
NETLANG_NORWEGIAN, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
109 |
NETLANG_POLISH, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
110 |
NETLANG_PORTUGUESE, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
111 |
NETLANG_ROMANIAN, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
112 |
NETLANG_RUSSIAN, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
113 |
NETLANG_SLOVAK, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
114 |
NETLANG_SLOVENIAN, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
115 |
NETLANG_SPANISH, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
116 |
NETLANG_SWEDISH, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
117 |
NETLANG_TURKISH, |
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6248
diff
changeset
|
118 |
NETLANG_UKRAINIAN, |
6796
ff1875ba196d
(svn r10035) -Change: simplified network language string sorting
glx
parents:
6793
diff
changeset
|
119 |
NETLANG_COUNT |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
120 |
}; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
121 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
122 |
VARDEF NetworkGameInfo _network_game_info; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
123 |
VARDEF NetworkPlayerInfo _network_player_info[MAX_PLAYERS]; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
124 |
VARDEF NetworkClientInfo _network_client_info[MAX_CLIENT_INFO]; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
125 |
|
3623
9b612a4bbd39
(svn r4521) - Fix: be consistent about the size of the player-name in MP. This hopefully fixes a crash on lesser OS's (eg Win98). Use ttd_strlcpy() to just copy over strings and properly terminate them because different implementations of snprintf() behave differently. Courtesy of TrueLight
Darkvater
parents:
3173
diff
changeset
|
126 |
VARDEF char _network_player_name[NETWORK_CLIENT_NAME_LENGTH]; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
127 |
VARDEF char _network_default_ip[NETWORK_HOSTNAME_LENGTH]; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
128 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
129 |
VARDEF uint16 _network_own_client_index; |
7807
b10fc6c5d081
(svn r11357) -Fix: NetworkUniqueID could be 80 chars, while the max size we generate is 32. So reduce the size a bit. Pointed out by dihedral, so give him a big hug ;)
truelight
parents:
7564
diff
changeset
|
130 |
VARDEF char _network_unique_id[NETWORK_UNIQUE_ID_LENGTH]; // Our own unique ID |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
131 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
132 |
VARDEF uint32 _frame_counter_server; // The frame_counter of the server, if in network-mode |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
133 |
VARDEF uint32 _frame_counter_max; // To where we may go with our clients |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
134 |
|
2079
c9c32cf56cb9
(svn r2589) Fix: [network] Fixed static variable that wasn't initialized. Would stop the sync checking from working in some cases.
ludde
parents:
2071
diff
changeset
|
135 |
VARDEF uint32 _last_sync_frame; // Used in the server to store the last time a sync packet was sent to clients. |
c9c32cf56cb9
(svn r2589) Fix: [network] Fixed static variable that wasn't initialized. Would stop the sync checking from working in some cases.
ludde
parents:
2071
diff
changeset
|
136 |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
137 |
// networking settings |
4034
581c6cb62e72
(svn r5293) -Fix: Not all network interfaces are capable of broadcasting. Don't record those which aren't
tron
parents:
3994
diff
changeset
|
138 |
VARDEF uint32 _broadcast_list[MAX_INTERFACES + 1]; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
139 |
|
3152
00aa2d4cf39e
(svn r3775) Fix loading of server_port from config file, introduced in Darkvater's unified configuration changes (r3719+)
peter1138
parents:
3041
diff
changeset
|
140 |
VARDEF uint16 _network_server_port; |
629
4bb1f0fb0109
(svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
truelight
parents:
627
diff
changeset
|
141 |
/* We use bind_ip and bind_ip_host, where bind_ip_host is the readable form of |
4bb1f0fb0109
(svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
truelight
parents:
627
diff
changeset
|
142 |
bind_ip_host, and bind_ip the numeric value, because we want a nice number |
4bb1f0fb0109
(svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
truelight
parents:
627
diff
changeset
|
143 |
in the openttd.cfg, but we wants to use the uint32 internally.. */ |
4bb1f0fb0109
(svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
truelight
parents:
627
diff
changeset
|
144 |
VARDEF uint32 _network_server_bind_ip; |
4bb1f0fb0109
(svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
truelight
parents:
627
diff
changeset
|
145 |
VARDEF char _network_server_bind_ip_host[NETWORK_HOSTNAME_LENGTH]; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
146 |
VARDEF bool _is_network_server; // Does this client wants to be a network-server? |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
147 |
VARDEF char _network_server_name[NETWORK_NAME_LENGTH]; |
1026
02cc18821508
(svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents:
1011
diff
changeset
|
148 |
VARDEF char _network_server_password[NETWORK_PASSWORD_LENGTH]; |
02cc18821508
(svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents:
1011
diff
changeset
|
149 |
VARDEF char _network_rcon_password[NETWORK_PASSWORD_LENGTH]; |
02cc18821508
(svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents:
1011
diff
changeset
|
150 |
|
3173
f56ca618721b
(svn r3805) - [FS#62] Fix doxygen comments to refer to the correct parameter. (sulai)
peter1138
parents:
3152
diff
changeset
|
151 |
VARDEF uint16 _network_max_join_time; ///< Time a client can max take to join |
f56ca618721b
(svn r3805) - [FS#62] Fix doxygen comments to refer to the correct parameter. (sulai)
peter1138
parents:
3152
diff
changeset
|
152 |
VARDEF bool _network_pause_on_join; ///< Pause the game when a client tries to join (more chance of succeeding join) |
1602
79f98b4b83fc
(svn r2106) -Fix: improved the network-join algoritm, it is now a bit more stable
truelight
parents:
1441
diff
changeset
|
153 |
|
1026
02cc18821508
(svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight
parents:
1011
diff
changeset
|
154 |
VARDEF uint16 _redirect_console_to_client; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
155 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
156 |
VARDEF uint16 _network_sync_freq; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
157 |
VARDEF uint8 _network_frame_freq; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
158 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
159 |
VARDEF uint32 _sync_seed_1, _sync_seed_2; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
160 |
VARDEF uint32 _sync_frame; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
161 |
VARDEF bool _network_first_time; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
162 |
// Vars needed for the join-GUI |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
163 |
VARDEF NetworkJoinStatus _network_join_status; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
164 |
VARDEF uint8 _network_join_waiting; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
165 |
VARDEF uint16 _network_join_kbytes; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
166 |
VARDEF uint16 _network_join_kbytes_total; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
167 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
168 |
VARDEF char _network_last_host[NETWORK_HOSTNAME_LENGTH]; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
169 |
VARDEF short _network_last_port; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
170 |
VARDEF uint32 _network_last_host_ip; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
171 |
VARDEF uint8 _network_reconnect; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
172 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
173 |
VARDEF bool _network_udp_server; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
174 |
VARDEF uint16 _network_udp_broadcast; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
175 |
|
764
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
738
diff
changeset
|
176 |
VARDEF byte _network_lan_internet; |
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
738
diff
changeset
|
177 |
|
2861
e42d249af3cb
(svn r3409) - Change the server advertisement interval to use the frame counter instead
peter1138
parents:
2380
diff
changeset
|
178 |
VARDEF bool _network_need_advertise; |
e42d249af3cb
(svn r3409) - Change the server advertisement interval to use the frame counter instead
peter1138
parents:
2380
diff
changeset
|
179 |
VARDEF uint32 _network_last_advertise_frame; |
764
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
738
diff
changeset
|
180 |
VARDEF uint8 _network_advertise_retries; |
668
1fe298df8526
(svn r1106) -Add: [Network] Added master-server protocol and advertise to
truelight
parents:
663
diff
changeset
|
181 |
|
690
3afcad69d4f7
(svn r1131) -Add: [Network] Autoclean_companies (set it with 'set autoclean_companies on/off').
truelight
parents:
670
diff
changeset
|
182 |
VARDEF bool _network_autoclean_companies; |
3afcad69d4f7
(svn r1131) -Add: [Network] Autoclean_companies (set it with 'set autoclean_companies on/off').
truelight
parents:
670
diff
changeset
|
183 |
VARDEF uint8 _network_autoclean_unprotected; // Remove a company after X months |
3afcad69d4f7
(svn r1131) -Add: [Network] Autoclean_companies (set it with 'set autoclean_companies on/off').
truelight
parents:
670
diff
changeset
|
184 |
VARDEF uint8 _network_autoclean_protected; // Unprotect a company after X months |
3afcad69d4f7
(svn r1131) -Add: [Network] Autoclean_companies (set it with 'set autoclean_companies on/off').
truelight
parents:
670
diff
changeset
|
185 |
|
4293
4b7006c1b5eb
(svn r5926) -Codechange: make _cur_year contain the full year, instead of the offset since 1920
rubidium
parents:
4289
diff
changeset
|
186 |
VARDEF Year _network_restart_game_year; // If this year is reached, the server automaticly restarts |
4716
8a05bf6d951d
(svn r6628) - Feature: Add the ability to pause a server if not enough players are connected. The setting for this is 'min_players' and can be set in the config and via the console. If the number of players drops below this number, the server will pause the game.
peter1138
parents:
4344
diff
changeset
|
187 |
VARDEF uint8 _network_min_players; // Minimum number of players for game to unpause |
785
bba7b3b35dec
(svn r1252) -Add: [Network] With 'set restart_game_date' you can set the date for in
truelight
parents:
774
diff
changeset
|
188 |
|
5916
8931f4450f51
(svn r8543) -Codechange: make a real difference between querying the server via UDP and TCP.
rubidium
parents:
5897
diff
changeset
|
189 |
void NetworkTCPQueryServer(const char* host, unsigned short port); |
774
bb9ec520a1b1
(svn r1240) -Fix: OpenTTD once again compiles if ENABLE_NETWORK is disabled.
darkvater
parents:
773
diff
changeset
|
190 |
|
6247 | 191 |
byte NetworkSpectatorCount(); |
2944
2360b2da2bb0
(svn r3500) - Workaround the inaccurate count of spectators/companies that can happen in certain border-cases. For now just dynamically get this value when requested so it is always right. To do properly all player/client creation/destruction needs a hook for networking.
Darkvater
parents:
2881
diff
changeset
|
192 |
|
3041
96c5e9e8c3f3
(svn r3621) - Codechange: Only define the server and bans list if network is enabled. Preparatory work for saving patches/settings to savegame.
Darkvater
parents:
2944
diff
changeset
|
193 |
VARDEF char *_network_host_list[10]; |
96c5e9e8c3f3
(svn r3621) - Codechange: Only define the server and bans list if network is enabled. Preparatory work for saving patches/settings to savegame.
Darkvater
parents:
2944
diff
changeset
|
194 |
VARDEF char *_network_ban_list[25]; |
96c5e9e8c3f3
(svn r3621) - Codechange: Only define the server and bans list if network is enabled. Preparatory work for saving patches/settings to savegame.
Darkvater
parents:
2944
diff
changeset
|
195 |
|
4038
20e6144653b9
(svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents:
4034
diff
changeset
|
196 |
void ParseConnectionString(const char **player, const char **port, char *connection_string); |
20e6144653b9
(svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents:
4034
diff
changeset
|
197 |
void NetworkUpdateClientInfo(uint16 client_index); |
20e6144653b9
(svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents:
4034
diff
changeset
|
198 |
void NetworkAddServer(const char *b); |
6247 | 199 |
void NetworkRebuildHostList(); |
4038
20e6144653b9
(svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents:
4034
diff
changeset
|
200 |
bool NetworkChangeCompanyPassword(byte argc, char *argv[]); |
6247 | 201 |
void NetworkPopulateCompanyInfo(); |
5034
611ac18ac2b5
(svn r7076) -Codechange: Prefer includes instead of using extern. Move UpdateNetworkGameWindow
Darkvater
parents:
4880
diff
changeset
|
202 |
void UpdateNetworkGameWindow(bool unselect); |
6247 | 203 |
void CheckMinPlayers(); |
5959
98a64c6e7f1f
(svn r8631) -Add: added parameter -l ip[:port] to ./openttd, which redirects DEBUG() to a remote connection over TCP
truelight
parents:
5918
diff
changeset
|
204 |
void NetworkStartDebugLog(const char *hostname, uint16 port); |
4038
20e6144653b9
(svn r5298) Hide function declarations and remove function stubs which aren't needed in the !ENABLE_NETWORK case
tron
parents:
4034
diff
changeset
|
205 |
|
6247 | 206 |
void NetworkStartUp(); |
5619
9f5a7152403a
(svn r8078) -Codechange: rewrite UDP part of the network code to make use classes. This is only one of the many steps to really cleanup the network code.
rubidium
parents:
5587
diff
changeset
|
207 |
void NetworkUDPCloseAll(); |
6247 | 208 |
void NetworkShutDown(); |
209 |
void NetworkGameLoop(); |
|
210 |
void NetworkUDPGameLoop(); |
|
211 |
bool NetworkServerStart(); |
|
4880
aac84a9dcd03
(svn r6816) -Codechange: Some coding style, variable localization, const correctness.
Darkvater
parents:
4830
diff
changeset
|
212 |
bool NetworkClientConnectGame(const char *host, uint16 port); |
6247 | 213 |
void NetworkReboot(); |
214 |
void NetworkDisconnect(); |
|
4830
668bcb0a30b2
(svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents:
4829
diff
changeset
|
215 |
|
6178
c29a7d37c3ce
(svn r8949) -Codechange: only test the first NETWORK_REVISION_LENGTH - 1 characters when determining network compatability. This makes it possible to have 'long' branch names while still being able to play network games.
rubidium
parents:
5959
diff
changeset
|
216 |
bool IsNetworkCompatibleVersion(const char *version); |
c29a7d37c3ce
(svn r8949) -Codechange: only test the first NETWORK_REVISION_LENGTH - 1 characters when determining network compatability. This makes it possible to have 'long' branch names while still being able to play network games.
rubidium
parents:
5959
diff
changeset
|
217 |
|
4830
668bcb0a30b2
(svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents:
4829
diff
changeset
|
218 |
VARDEF bool _network_server; ///< network-server is active |
668bcb0a30b2
(svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents:
4829
diff
changeset
|
219 |
VARDEF bool _network_available; ///< is network mode available? |
5711
8598c2d7b501
(svn r8198) -Codechange: two global variables are not needed when network is disabled.
rubidium
parents:
5619
diff
changeset
|
220 |
VARDEF bool _network_dedicated; ///< are we a dedicated server? |
8598c2d7b501
(svn r8198) -Codechange: two global variables are not needed when network is disabled.
rubidium
parents:
5619
diff
changeset
|
221 |
VARDEF bool _network_advertise; ///< is the server advertising to the master server? |
4830
668bcb0a30b2
(svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents:
4829
diff
changeset
|
222 |
|
668bcb0a30b2
(svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents:
4829
diff
changeset
|
223 |
#else /* ENABLE_NETWORK */ |
668bcb0a30b2
(svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents:
4829
diff
changeset
|
224 |
/* Network function stubs when networking is disabled */ |
668bcb0a30b2
(svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents:
4829
diff
changeset
|
225 |
|
6247 | 226 |
static inline void NetworkStartUp() {} |
227 |
static inline void NetworkShutDown() {} |
|
4830
668bcb0a30b2
(svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents:
4829
diff
changeset
|
228 |
|
668bcb0a30b2
(svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents:
4829
diff
changeset
|
229 |
#define _networking 0 |
668bcb0a30b2
(svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents:
4829
diff
changeset
|
230 |
#define _network_server 0 |
668bcb0a30b2
(svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents:
4829
diff
changeset
|
231 |
#define _network_available 0 |
5711
8598c2d7b501
(svn r8198) -Codechange: two global variables are not needed when network is disabled.
rubidium
parents:
5619
diff
changeset
|
232 |
#define _network_dedicated 0 |
8598c2d7b501
(svn r8198) -Codechange: two global variables are not needed when network is disabled.
rubidium
parents:
5619
diff
changeset
|
233 |
#define _network_advertise 0 |
4830
668bcb0a30b2
(svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents:
4829
diff
changeset
|
234 |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
235 |
#endif /* ENABLE_NETWORK */ |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
239
diff
changeset
|
236 |
|
5711
8598c2d7b501
(svn r8198) -Codechange: two global variables are not needed when network is disabled.
rubidium
parents:
5619
diff
changeset
|
237 |
/* Thss variable must always be registered! */ |
4880
aac84a9dcd03
(svn r6816) -Codechange: Some coding style, variable localization, const correctness.
Darkvater
parents:
4830
diff
changeset
|
238 |
VARDEF PlayerID _network_playas; ///< an id to play as.. (see players.h:Players) |
211 | 239 |
|
240 |
#endif /* NETWORK_H */ |