OpenTTD Source: src/network/network_type.h Source File

OpenTTD Source 12.0-beta1

network_type.h
Go to the documentation of this file.
1 /*
2 * This file is part of OpenTTD.
3 * 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.
4 * 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.
5 * 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/>.
6 */
7
10 #ifndef NETWORK_TYPE_H
11 #define NETWORK_TYPE_H
12
14 static const uint MAX_CLIENTS = 255;
15
21 static const uint MAX_CLIENT_SLOTS = 256;
22
26 enum NetworkVehicleType {
27 NETWORK_VEH_TRAIN = 0,
28 NETWORK_VEH_LORRY,
29 NETWORK_VEH_BUS,
30 NETWORK_VEH_PLANE,
31 NETWORK_VEH_SHIP,
32
33 NETWORK_VEH_END
34 };
35
40 enum ServerGameType : uint8 {
41 SERVER_GAME_TYPE_LOCAL = 0,
42 SERVER_GAME_TYPE_PUBLIC,
43 SERVER_GAME_TYPE_INVITE_ONLY,
44 };
45
47 enum ClientID : uint32 {
48 INVALID_CLIENT_ID = 0,
49 CLIENT_ID_SERVER = 1,
50 CLIENT_ID_FIRST = 2,
51 };
52
54 typedef uint8 ClientIndex;
55
57 typedef uint8 AdminIndex;
58
60 static const AdminIndex MAX_ADMINS = 16;
62 static const AdminIndex INVALID_ADMIN_ID = UINT8_MAX;
63
65 struct NetworkCompanyStats {
66 uint16 num_vehicle[NETWORK_VEH_END];
67 uint16 num_station[NETWORK_VEH_END];
68 bool ai;
69 };
70
72 struct NetworkCompanyState {
73 std::string password;
74 uint16 months_empty;
75 };
76
77 struct NetworkClientInfo;
78
80 enum NetworkPasswordType {
81 NETWORK_GAME_PASSWORD,
82 NETWORK_COMPANY_PASSWORD,
83 };
84
89 enum DestType {
90 DESTTYPE_BROADCAST,
91 DESTTYPE_TEAM,
92 DESTTYPE_CLIENT,
93 };
94
99 enum NetworkAction {
100 NETWORK_ACTION_JOIN,
101 NETWORK_ACTION_LEAVE,
102 NETWORK_ACTION_SERVER_MESSAGE,
103 NETWORK_ACTION_CHAT,
104 NETWORK_ACTION_CHAT_COMPANY,
105 NETWORK_ACTION_CHAT_CLIENT,
106 NETWORK_ACTION_GIVE_MONEY,
107 NETWORK_ACTION_NAME_CHANGE,
108 NETWORK_ACTION_COMPANY_SPECTATOR,
109 NETWORK_ACTION_COMPANY_JOIN,
110 NETWORK_ACTION_COMPANY_NEW,
111 NETWORK_ACTION_KICKED,
112 };
113
118 enum NetworkErrorCode {
119 NETWORK_ERROR_GENERAL, // Try to use this one like never
120
121 /* Signals from clients */
122 NETWORK_ERROR_DESYNC,
123 NETWORK_ERROR_SAVEGAME_FAILED,
124 NETWORK_ERROR_CONNECTION_LOST,
125 NETWORK_ERROR_ILLEGAL_PACKET,
126 NETWORK_ERROR_NEWGRF_MISMATCH,
127
128 /* Signals from servers */
129 NETWORK_ERROR_NOT_AUTHORIZED,
130 NETWORK_ERROR_NOT_EXPECTED,
131 NETWORK_ERROR_WRONG_REVISION,
132 NETWORK_ERROR_NAME_IN_USE,
133 NETWORK_ERROR_WRONG_PASSWORD,
134 NETWORK_ERROR_COMPANY_MISMATCH, // Happens in CLIENT_COMMAND
135 NETWORK_ERROR_KICKED,
136 NETWORK_ERROR_CHEATER,
137 NETWORK_ERROR_FULL,
138 NETWORK_ERROR_TOO_MANY_COMMANDS,
139 NETWORK_ERROR_TIMEOUT_PASSWORD,
140 NETWORK_ERROR_TIMEOUT_COMPUTER,
141 NETWORK_ERROR_TIMEOUT_MAP,
142 NETWORK_ERROR_TIMEOUT_JOIN,
143 NETWORK_ERROR_INVALID_CLIENT_NAME,
144
145 NETWORK_ERROR_END,
146 };
147
148 #endif /* NETWORK_TYPE_H */
ClientIndex
uint8 ClientIndex
Indices into the client tables.
Definition: network_type.h:54
NetworkCompanyStats::num_station
uint16 num_station[NETWORK_VEH_END]
How many stations are there of this type?
Definition: network_type.h:67
NetworkCompanyStats
Simple calculated statistics of a company.
Definition: network_type.h:65
DestType
DestType
Destination of our chat messages.
Definition: network_type.h:89
INVALID_CLIENT_ID
@ INVALID_CLIENT_ID
Client is not part of anything.
Definition: network_type.h:48
NetworkCompanyState
Some state information of a company, especially for servers.
Definition: network_type.h:72
NetworkAction
NetworkAction
Actions that can be used for NetworkTextMessage.
Definition: network_type.h:99
MAX_CLIENTS
static const uint MAX_CLIENTS
How many clients can we have.
Definition: network_type.h:14
DESTTYPE_TEAM
@ DESTTYPE_TEAM
Send message/notice to everyone playing the same company (Team)
Definition: network_type.h:91
NetworkCompanyState::months_empty
uint16 months_empty
How many months the company is empty.
Definition: network_type.h:74
INVALID_ADMIN_ID
static const AdminIndex INVALID_ADMIN_ID
An invalid admin marker.
Definition: network_type.h:62
NetworkCompanyStats::num_vehicle
uint16 num_vehicle[NETWORK_VEH_END]
How many vehicles are there of this type?
Definition: network_type.h:66
MAX_ADMINS
static const AdminIndex MAX_ADMINS
Maximum number of allowed admins.
Definition: network_type.h:60
ClientID
ClientID
'Unique' identifier to be given to clients
Definition: network_type.h:47
NETWORK_COMPANY_PASSWORD
@ NETWORK_COMPANY_PASSWORD
The password of the company.
Definition: network_type.h:82
NetworkCompanyState::password
std::string password
The password for the company.
Definition: network_type.h:73
CLIENT_ID_SERVER
@ CLIENT_ID_SERVER
Servers always have this ID.
Definition: network_type.h:49
NetworkVehicleType
NetworkVehicleType
Vehicletypes in the order they are send in info packets.
Definition: network_type.h:26
ServerGameType
ServerGameType
Game type the server can be using.
Definition: network_type.h:40
NetworkPasswordType
NetworkPasswordType
The type of password we're asking for.
Definition: network_type.h:80
NetworkCompanyStats::ai
bool ai
Is this company an AI.
Definition: network_type.h:68
AdminIndex
uint8 AdminIndex
Indices into the admin tables.
Definition: network_type.h:57
DESTTYPE_BROADCAST
@ DESTTYPE_BROADCAST
Send message/notice to all clients (All)
Definition: network_type.h:90
DESTTYPE_CLIENT
@ DESTTYPE_CLIENT
Send message/notice to only a certain client (Private)
Definition: network_type.h:92
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:21
NetworkErrorCode
NetworkErrorCode
The error codes we send around in the protocols.
Definition: network_type.h:118
NetworkClientInfo
Container for all information known about a client.
Definition: network_base.h:24
NETWORK_GAME_PASSWORD
@ NETWORK_GAME_PASSWORD
The password of the game.
Definition: network_type.h:81
CLIENT_ID_FIRST
@ CLIENT_ID_FIRST
The first client ID.
Definition: network_type.h:50