OpenTTD Source 20241224-master-gf74b0cf984
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
13#include "../core/enum_type.hpp"
14
16static const uint MAX_CLIENTS = 255;
17
23static const uint MAX_CLIENT_SLOTS = 256;
24
29 NETWORK_VEH_TRAIN = 0,
30 NETWORK_VEH_LORRY,
31 NETWORK_VEH_BUS,
32 NETWORK_VEH_PLANE,
33 NETWORK_VEH_SHIP,
34
35 NETWORK_VEH_END
36};
37
42enum ServerGameType : uint8_t {
43 SERVER_GAME_TYPE_LOCAL = 0,
44 SERVER_GAME_TYPE_PUBLIC,
45 SERVER_GAME_TYPE_INVITE_ONLY,
46};
47
54
56typedef uint8_t ClientIndex;
57
59typedef uint8_t AdminIndex;
60
62static const AdminIndex MAX_ADMINS = 16;
64static const AdminIndex INVALID_ADMIN_ID = UINT8_MAX;
65
68 uint16_t num_vehicle[NETWORK_VEH_END];
69 uint16_t num_station[NETWORK_VEH_END];
70 bool ai;
71};
72
74
85
86
91 NETWORK_ACTION_JOIN,
92 NETWORK_ACTION_LEAVE,
93 NETWORK_ACTION_SERVER_MESSAGE,
94 NETWORK_ACTION_CHAT,
95 NETWORK_ACTION_CHAT_COMPANY,
96 NETWORK_ACTION_CHAT_CLIENT,
97 NETWORK_ACTION_GIVE_MONEY,
98 NETWORK_ACTION_NAME_CHANGE,
99 NETWORK_ACTION_COMPANY_SPECTATOR,
100 NETWORK_ACTION_COMPANY_JOIN,
101 NETWORK_ACTION_COMPANY_NEW,
102 NETWORK_ACTION_KICKED,
103 NETWORK_ACTION_EXTERNAL_CHAT,
104};
105
111 NETWORK_ERROR_GENERAL, // Try to use this one like never
112
113 /* Signals from clients */
114 NETWORK_ERROR_DESYNC,
115 NETWORK_ERROR_SAVEGAME_FAILED,
116 NETWORK_ERROR_CONNECTION_LOST,
117 NETWORK_ERROR_ILLEGAL_PACKET,
118 NETWORK_ERROR_NEWGRF_MISMATCH,
119
120 /* Signals from servers */
121 NETWORK_ERROR_NOT_AUTHORIZED,
122 NETWORK_ERROR_NOT_EXPECTED,
123 NETWORK_ERROR_WRONG_REVISION,
124 NETWORK_ERROR_NAME_IN_USE,
125 NETWORK_ERROR_WRONG_PASSWORD,
126 NETWORK_ERROR_COMPANY_MISMATCH, // Happens in CLIENT_COMMAND
127 NETWORK_ERROR_KICKED,
128 NETWORK_ERROR_CHEATER,
129 NETWORK_ERROR_FULL,
130 NETWORK_ERROR_TOO_MANY_COMMANDS,
131 NETWORK_ERROR_TIMEOUT_PASSWORD,
132 NETWORK_ERROR_TIMEOUT_COMPUTER,
133 NETWORK_ERROR_TIMEOUT_MAP,
134 NETWORK_ERROR_TIMEOUT_JOIN,
135 NETWORK_ERROR_INVALID_CLIENT_NAME,
136 NETWORK_ERROR_NOT_ON_ALLOW_LIST,
137 NETWORK_ERROR_NO_AUTHENTICATION_METHOD_AVAILABLE,
138
139 NETWORK_ERROR_END,
140};
141
148class NetworkAuthorizedKeys : public std::vector<std::string> {
149public:
150 bool Contains(std::string_view key) const;
151 bool Add(std::string_view key);
152 bool Remove(std::string_view key);
153};
154
155#endif /* NETWORK_TYPE_H */
Simple helper to (more easily) manage authorized keys.
bool Contains(std::string_view key) const
Check whether the given key is contains in these authorized keys.
Definition network.cpp:178
bool Add(std::string_view key)
Add the given key to the authorized keys, when it is not already contained.
Definition network.cpp:188
bool Remove(std::string_view key)
Remove the given key from the authorized keys, when it is exists.
Definition network.cpp:204
#define DECLARE_ENUM_AS_ADDABLE(EnumType)
Operator that allows this enumeration to be added to any other enumeration.
Definition enum_type.hpp:45
static const AdminIndex INVALID_ADMIN_ID
An invalid admin marker.
DestType
Destination of our chat messages.
@ DESTTYPE_CLIENT
Send message/notice to only a certain client (Private)
@ DESTTYPE_TEAM
Send message/notice to everyone playing the same company (Team)
@ DESTTYPE_BROADCAST
Send message/notice to all clients (All)
uint8_t ClientIndex
Indices into the client tables.
uint8_t AdminIndex
Indices into the admin tables.
static const uint MAX_CLIENT_SLOTS
The number of slots; must be at least 1 more than MAX_CLIENTS.
static const uint MAX_CLIENTS
How many clients can we have.
NetworkAction
Actions that can be used for NetworkTextMessage.
NetworkVehicleType
Vehicletypes in the order they are send in info packets.
ClientID
'Unique' identifier to be given to clients
@ INVALID_CLIENT_ID
Client is not part of anything.
@ CLIENT_ID_SERVER
Servers always have this ID.
@ CLIENT_ID_FIRST
The first client ID.
ServerGameType
Game type the server can be using.
NetworkErrorCode
The error codes we send around in the protocols.
static const AdminIndex MAX_ADMINS
Maximum number of allowed admins.
Container for all information known about a client.
Simple calculated statistics of a company.
uint16_t num_vehicle[NETWORK_VEH_END]
How many vehicles are there of this type?
uint16_t num_station[NETWORK_VEH_END]
How many stations are there of this type?
bool ai
Is this company an AI.