OpenTTD

network_type.h
Go to the documentation of this file.
1 /* $Id: network_type.h 23780 2012-01-09 21:22:48Z truebrain $ */
2
3 /*
4 * This file is part of OpenTTD.
5 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
6 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
8 */
9
12 #ifndef NETWORK_TYPE_H
13 #define NETWORK_TYPE_H
14
15 #include "core/game.h"
16
17 #ifdef ENABLE_NETWORK
18
20 static const uint MAX_CLIENTS = 255;
21
27 static const uint MAX_CLIENT_SLOTS = 256;
28
32 enum NetworkVehicleType {
33 NETWORK_VEH_TRAIN = 0,
34 NETWORK_VEH_LORRY,
35 NETWORK_VEH_BUS,
36 NETWORK_VEH_PLANE,
37 NETWORK_VEH_SHIP,
38
39 NETWORK_VEH_END
40 };
41
43 enum ClientID {
44 INVALID_CLIENT_ID = 0,
45 CLIENT_ID_SERVER = 1,
46 CLIENT_ID_FIRST = 2,
47 };
48
50 typedef uint8 ClientIndex;
51
53 typedef uint8 AdminIndex;
54
56 static const AdminIndex MAX_ADMINS = 16;
58 static const AdminIndex INVALID_ADMIN_ID = UINT8_MAX;
59
61 struct NetworkCompanyStats {
62 uint16 num_vehicle[NETWORK_VEH_END];
63 uint16 num_station[NETWORK_VEH_END];
64 bool ai;
65 };
66
68 struct NetworkCompanyState {
69 char password[NETWORK_PASSWORD_LENGTH];
70 uint16 months_empty;
71 };
72
73 struct NetworkClientInfo;
74
76 enum NetworkPasswordType {
77 NETWORK_GAME_PASSWORD,
78 NETWORK_COMPANY_PASSWORD,
79 };
80
82 enum DestType {
83 DESTTYPE_BROADCAST,
84 DESTTYPE_TEAM,
85 DESTTYPE_CLIENT,
86 };
87
89 enum NetworkAction {
90 NETWORK_ACTION_JOIN,
91 NETWORK_ACTION_LEAVE,
92 NETWORK_ACTION_SERVER_MESSAGE,
93 NETWORK_ACTION_CHAT,
94 NETWORK_ACTION_CHAT_COMPANY,
95 NETWORK_ACTION_CHAT_CLIENT,
96 NETWORK_ACTION_GIVE_MONEY,
97 NETWORK_ACTION_NAME_CHANGE,
98 NETWORK_ACTION_COMPANY_SPECTATOR,
99 NETWORK_ACTION_COMPANY_JOIN,
100 NETWORK_ACTION_COMPANY_NEW,
101 };
102
104 enum NetworkErrorCode {
105 NETWORK_ERROR_GENERAL, // Try to use this one like never
106
107 /* Signals from clients */
108 NETWORK_ERROR_DESYNC,
109 NETWORK_ERROR_SAVEGAME_FAILED,
110 NETWORK_ERROR_CONNECTION_LOST,
111 NETWORK_ERROR_ILLEGAL_PACKET,
112 NETWORK_ERROR_NEWGRF_MISMATCH,
113
114 /* Signals from servers */
115 NETWORK_ERROR_NOT_AUTHORIZED,
116 NETWORK_ERROR_NOT_EXPECTED,
117 NETWORK_ERROR_WRONG_REVISION,
118 NETWORK_ERROR_NAME_IN_USE,
119 NETWORK_ERROR_WRONG_PASSWORD,
120 NETWORK_ERROR_COMPANY_MISMATCH, // Happens in CLIENT_COMMAND
121 NETWORK_ERROR_KICKED,
122 NETWORK_ERROR_CHEATER,
123 NETWORK_ERROR_FULL,
124 NETWORK_ERROR_TOO_MANY_COMMANDS,
125 NETWORK_ERROR_TIMEOUT_PASSWORD,
126 NETWORK_ERROR_TIMEOUT_COMPUTER,
127 NETWORK_ERROR_TIMEOUT_MAP,
128 NETWORK_ERROR_TIMEOUT_JOIN,
129
130 NETWORK_ERROR_END,
131 };
132
133 #endif /* ENABLE_NETWORK */
134 #endif /* NETWORK_TYPE_H */
DESTTYPE_BROADCAST
Send message/notice to all clients (All)
Definition: network_type.h:83
NetworkClientInfo
Container for all information known about a client.
Definition: network_base.h:27
NetworkCompanyStats::ai
bool ai
Is this company an AI.
Definition: network_type.h:64
NetworkErrorCode
NetworkErrorCode
The error codes we send around in the protocols.
Definition: network_type.h:104
MAX_CLIENTS
static const uint MAX_CLIENTS
How many clients can we have.
Definition: network_type.h:20
INVALID_ADMIN_ID
static const AdminIndex INVALID_ADMIN_ID
An invalid admin marker.
Definition: network_type.h:58
DESTTYPE_CLIENT
Send message/notice to only a certain client (Private)
Definition: network_type.h:85
game.h
Information about a game that is sent between a game server, game client and masterserver.
CLIENT_ID_SERVER
Servers always have this ID.
Definition: network_type.h:45
NETWORK_COMPANY_PASSWORD
The password of the company.
Definition: network_type.h:78
NetworkCompanyState::months_empty
uint16 months_empty
How many months the company is empty.
Definition: network_type.h:70
NetworkCompanyStats::num_vehicle
uint16 num_vehicle[NETWORK_VEH_END]
How many vehicles are there of this type?
Definition: network_type.h:62
CLIENT_ID_FIRST
The first client ID.
Definition: network_type.h:46
MAX_ADMINS
static const AdminIndex MAX_ADMINS
Maximum number of allowed admins.
Definition: network_type.h:56
AdminIndex
uint8 AdminIndex
Indices into the admin tables.
Definition: network_type.h:53
NETWORK_GAME_PASSWORD
The password of the game.
Definition: network_type.h:77
NetworkVehicleType
NetworkVehicleType
Vehicletypes in the order they are send in info packets.
Definition: network_type.h:32
INVALID_CLIENT_ID
Client is not part of anything.
Definition: network_type.h:44
ClientID
ClientID
&#39;Unique&#39; identifier to be given to clients
Definition: network_type.h:43
NetworkCompanyStats::num_station
uint16 num_station[NETWORK_VEH_END]
How many stations are there of this type?
Definition: network_type.h:63
ClientIndex
uint8 ClientIndex
Indices into the client tables.
Definition: network_type.h:50
MAX_CLIENT_SLOTS
static const uint MAX_CLIENT_SLOTS
The number of slots; must be at least 1 more than MAX_CLIENTS.
Definition: network_type.h:27
NetworkCompanyStats
Simple calculated statistics of a company.
Definition: network_type.h:61
NETWORK_PASSWORD_LENGTH
static const uint NETWORK_PASSWORD_LENGTH
The maximum length of the password, in bytes including &#39;\0&#39; (must be >= NETWORK_SERVER_ID_LENGTH) ...
Definition: config.h:47
NetworkCompanyState
Some state information of a company, especially for servers.
Definition: network_type.h:68
NetworkPasswordType
NetworkPasswordType
The type of password we&#39;re asking for.
Definition: network_type.h:76
DESTTYPE_TEAM
Send message/notice to everyone playing the same company (Team)
Definition: network_type.h:84
DestType
DestType
Destination of our chat messages.
Definition: network_type.h:82
NetworkAction
NetworkAction
Actions that can be used for NetworkTextMessage.
Definition: network_type.h:89