OpenTTD
network_client.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_CLIENT_H
11 #define NETWORK_CLIENT_H
12 
13 #include "network_internal.h"
14 
17 private:
19  byte token;
20 
22  enum ServerStatus {
34  };
35 
37 
38 protected:
39  friend void NetworkExecuteLocalCommandQueue();
40  friend void NetworkClose(bool close_admins);
42 
70 
74  void CheckConnection();
75 public:
78 
81 
83 
84  static NetworkRecvStatus SendJoin();
87  static NetworkRecvStatus SendQuit();
88  static NetworkRecvStatus SendAck();
89 
90  static NetworkRecvStatus SendGamePassword(const char *password);
91  static NetworkRecvStatus SendCompanyPassword(const char *password);
92 
93  static NetworkRecvStatus SendChat(NetworkAction action, DestType type, int dest, const char *msg, int64 data);
94  static NetworkRecvStatus SendSetPassword(const char *password);
95  static NetworkRecvStatus SendSetName(const char *name);
96  static NetworkRecvStatus SendRCon(const char *password, const char *command);
97  static NetworkRecvStatus SendMove(CompanyID company, const char *password);
98 
99  static bool IsConnected();
100 
101  static void Send();
102  static bool Receive();
103  static bool GameLoop();
104 };
105 
108 
110 void NetworkClientSetCompanyPassword(const char *password);
111 
113 
114 extern const char *_network_join_server_password;
115 extern const char *_network_join_company_password;
116 
117 #endif /* NETWORK_CLIENT_H */
Owner
Enum for all companies/owners.
Definition: company_type.h:18
We are trying to get company information.
NetworkRecvStatus Receive_SERVER_COMPANY_INFO(Packet *p) override
Sends information about the companies (one packet per company): uint8 Version of the structure of thi...
The client is not connected nor active.
Must ALWAYS be on the end of this list!! (period)
NetworkRecvStatus Receive_SERVER_FULL(Packet *p) override
Notification that the server is full.
struct PacketReader * savegame
Packet reader for reading the savegame.
Internal entity of a packet.
Definition: packet.h:40
static NetworkRecvStatus SendJoin()
Tell the server we would like to join.
static bool Receive()
Check whether we received/can send some data from/to the server and when that&#39;s the case handle it ap...
The client is authorized at the server.
NetworkRecvStatus Receive_SERVER_JOIN(Packet *p) override
A client joined (PACKET_CLIENT_MAP_OK), what usually directly follows is a PACKET_SERVER_CLIENT_INFO:...
NetworkRecvStatus Receive_SERVER_NEWGAME(Packet *p) override
Let the clients know that the server is loading a new map.
ServerStatus
Status of the connection with the server.
static NetworkRecvStatus SendGamePassword(const char *password)
Set the game password as requested.
void ClientError(NetworkRecvStatus res)
Handle an error coming from the client side.
static NetworkRecvStatus SendMapOk()
Tell the server we received the complete map.
NetworkErrorCode
The error codes we send around in the protocols.
Definition: network_type.h:100
NetworkRecvStatus CloseConnection(NetworkRecvStatus status) override
Close the network connection due to the given status.
NetworkRecvStatus Receive_SERVER_COMMAND(Packet *p) override
Sends a DoCommand to the client: uint8 ID of the company (0..MAX_COMPANIES-1).
NetworkRecvStatus Receive_SERVER_CONFIG_UPDATE(Packet *p) override
Update the clients knowledge of the max settings: uint8 Maximum number of companies allowed...
NetworkRecvStatus Receive_SERVER_SHUTDOWN(Packet *p) override
Let the clients know that the server is closing.
static NetworkRecvStatus SendNewGRFsOk()
Tell the server we got all the NewGRFs.
NetworkRecvStatus Receive_SERVER_WELCOME(Packet *p) override
The client is joined and ready to receive his map: uint32 Own client ID.
NetworkRecvStatus Receive_SERVER_COMPANY_UPDATE(Packet *p) override
Update the clients knowledge of which company is password protected: uint16 Bitwise representation of...
const char * _network_join_server_password
Login password from -p argument.
ClientNetworkGameSocketHandler(SOCKET s)
Create a new socket for the client side of the game connection.
static NetworkRecvStatus SendSetPassword(const char *password)
Tell the server that we like to change the password of the company.
NetworkRecvStatus Receive_SERVER_SYNC(Packet *p) override
Sends a sync-check to the client: uint32 Frame counter.
Class for handling the client side of the game connection.
CompanyID _network_join_as
Who would we like to join as.
~ClientNetworkGameSocketHandler()
Clear whatever we assigned.
static bool IsConnected()
Check whether the client is actually connected (and in the game).
NetworkRecvStatus Receive_SERVER_MAP_DATA(Packet *p) override
Sends the data of the map to the client: Contains a part of the map (until max size of packet)...
static NetworkRecvStatus SendAck()
Send an acknowledgement from the server&#39;s ticks.
void NetworkClientSetCompanyPassword(const char *password)
Set/Reset company password on the client side.
static NetworkRecvStatus SendCompanyPassword(const char *password)
Set the company password as requested.
friend void NetworkExecuteLocalCommandQueue()
Execute all commands on the local command queue that ought to be executed this frame.
Read some packets, and when do use that data as initial load filter.
void CheckConnection()
Check the connection&#39;s state, i.e.
static NetworkRecvStatus SendError(NetworkErrorCode errorno)
Send an error-packet over the network.
The client is waiting as someone else is downloading the map.
NetworkRecvStatus Receive_SERVER_FRAME(Packet *p) override
Sends the current frame counter to the client: uint32 Frame counter uint32 Frame counter max (how far...
NetworkRecvStatus Receive_SERVER_CHAT(Packet *p) override
Sends a chat-packet to the client: uint8 ID of the action (see NetworkAction).
friend void NetworkClose(bool close_admins)
Close current connections.
Definition: network.cpp:516
static ClientNetworkGameSocketHandler * my_client
This is us!
NetworkRecvStatus Receive_SERVER_NEED_GAME_PASSWORD(Packet *p) override
Indication to the client that the server needs a game password.
NetworkRecvStatus
Status of a network client; reasons why a client has quit.
Definition: core.h:22
NetworkRecvStatus Receive_SERVER_MAP_DONE(Packet *p) override
Sends that all data of the map are sent to the client:
Base class that provides memory initialization on dynamically created objects.
Definition: alloc_type.hpp:85
ServerStatus status
Status of the connection with the server.
static NetworkRecvStatus SendRCon(const char *password, const char *command)
Send a console command.
static NetworkRecvStatus SendMove(CompanyID company, const char *password)
Ask the server to move us.
NetworkRecvStatus Receive_SERVER_CLIENT_INFO(Packet *p) override
Send information about a client: uint32 ID of the client (always unique on a server.
static NetworkRecvStatus SendCompanyInformationQuery()
Query the server for company information.
NetworkRecvStatus Receive_SERVER_RCON(Packet *p) override
Send the result of an issues RCon command back to the client: uint16 Colour code. ...
Variables and function used internally.
void NetworkClient_Connected()
Is called after a client is connected to the server.
NetworkRecvStatus Receive_SERVER_CHECK_NEWGRFS(Packet *p) override
Sends information about all used GRFs to the client: uint8 Amount of GRFs (the following data is repe...
NetworkRecvStatus Receive_SERVER_NEED_COMPANY_PASSWORD(Packet *p) override
Indication to the client that the server needs a company password: uint32 Generation seed...
NetworkRecvStatus Receive_SERVER_ERROR_QUIT(Packet *p) override
Inform all clients that one client made an error and thus has quit/been disconnected: uint32 ID of th...
The client is active within in the game.
NetworkRecvStatus Receive_SERVER_BANNED(Packet *p) override
Notification that the client trying to join is banned.
static NetworkRecvStatus SendQuit()
Tell the server we would like to quit.
We are trying to join a server.
Everything we need to know about a command to be able to execute it.
static void Send()
Send the packets of this socket handler.
const char * _network_join_company_password
Company password from -P argument.
ClientNetworkGameSocketHandler MyClient
Helper to make the code look somewhat nicer.
static NetworkRecvStatus SendSetName(const char *name)
Tell the server that we like to change the name of the client.
NetworkRecvStatus Receive_SERVER_QUIT(Packet *p) override
Notification that a client left the game: uint32 ID of the client.
The client is downloading the map.
static NetworkRecvStatus SendGetMap()
Request the map from the server.
static NetworkRecvStatus SendCommand(const CommandPacket *cp)
Send a command to the server.
Last action was requesting game (server) password.
Base socket handler for all TCP sockets.
Definition: tcp_game.h:148
Last action was requesting company password.
static NetworkRecvStatus SendChat(NetworkAction action, DestType type, int dest, const char *msg, int64 data)
Send a chat-packet over the network.
NetworkRecvStatus Receive_SERVER_MAP_BEGIN(Packet *p) override
Sends that the server will begin with sending the map to the client: uint32 Current frame...
NetworkRecvStatus Receive_SERVER_MOVE(Packet *p) override
Move a client from one company into another: uint32 ID of the client.
NetworkRecvStatus Receive_SERVER_ERROR(Packet *p) override
The client made an error: uint8 Error code caused (see NetworkErrorCode).
static bool GameLoop()
Actual game loop for the client.
byte token
The token we need to send back to the server to prove we&#39;re the right client.
DestType
Destination of our chat messages.
Definition: network_type.h:78
NetworkAction
Actions that can be used for NetworkTextMessage.
Definition: network_type.h:85
NetworkRecvStatus Receive_SERVER_MAP_SIZE(Packet *p) override
Sends the size of the map to the client.
NetworkRecvStatus Receive_SERVER_WAIT(Packet *p) override
Notification that another client is currently receiving the map: uint8 Number of clients waiting in f...