OpenTTD Source 20250612-master-gb012d9e3dc
network_func.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_FUNC_H
11#define NETWORK_FUNC_H
12
17// #define DEBUG_DUMP_COMMANDS
18// #define DEBUG_FAILED_DUMP_COMMANDS
19
20#include "network_type.h"
21#include "../core/convertible_through_base.hpp"
22#include "../console_type.h"
23#include "../gfx_type.h"
24#include "../openttd.h"
25#include "../company_type.h"
26#include "../string_type.h"
27
30extern uint8_t _network_reconnect;
34
35uint8_t NetworkSpectatorCount();
36bool NetworkIsValidClientName(std::string_view client_name);
38bool NetworkValidateClientName(std::string &client_name);
39bool NetworkValidateServerName(std::string &server_name);
40void NetworkUpdateClientName(const std::string &client_name);
43void NetworkReboot();
44void NetworkDisconnect(bool close_admins = true);
45void NetworkGameLoop();
47std::string_view ParseFullConnectionString(std::string_view connection_string, uint16_t &port, CompanyID *company_id = nullptr);
50
51void NetworkUpdateClientInfo(ClientID client_id);
53bool NetworkClientConnectGame(std::string_view connection_string, CompanyID default_company, const std::string &join_server_password = "");
56void NetworkClientSendRcon(std::string_view password, std::string_view command);
57void NetworkClientSendChat(NetworkAction action, DestType type, int dest, std::string_view msg, int64_t data = 0);
62std::string_view NetworkGetPublicKeyOfClient(ClientID client_id);
63void NetworkHandlePauseChange(PauseModes prev_mode, PauseMode changed_mode);
64
66
67/*** Commands ran by the server ***/
71bool NetworkServerStart();
72void NetworkServerNewCompany(const Company *company, NetworkClientInfo *ci);
73bool NetworkServerChangeClientName(ClientID client_id, const std::string &new_name);
74
75
76bool NetworkCanJoinCompany(CompanyID company_id);
77void NetworkServerDoMove(ClientID client_id, CompanyID company_id);
78void NetworkServerSendRcon(ClientID client_id, TextColour colour_code, std::string_view string);
79void NetworkServerSendChat(NetworkAction action, DestType type, int dest, std::string_view msg, ClientID from_id, int64_t data = 0, bool from_admin = false);
80void NetworkServerSendExternalChat(std::string_view source, TextColour colour, std::string_view user, std::string_view msg);
81
82void NetworkServerKickClient(ClientID client_id, std::string_view reason);
83uint NetworkServerKickOrBanIP(ClientID client_id, bool ban, std::string_view reason);
84uint NetworkServerKickOrBanIP(std::string_view ip, bool ban, std::string_view reason);
85
88void CDECL NetworkAddChatMessage(TextColour colour, uint duration, const std::string &message);
90
92
93#endif /* NETWORK_FUNC_H */
Enum-as-bit-set wrapper.
A sort-of mixin that adds 'at(pos)' and 'operator[](pos)' implementations for 'ConvertibleThroughBase...
TextColour
Colour of the strings, see _string_colourmap in table/string_colours.h or docs/ottd-colourtext-palett...
Definition gfx_type.h:302
void NetworkHandlePauseChange(PauseModes prev_mode, PauseMode changed_mode)
Handle the pause mode change so we send the right messages to the chat.
Definition network.cpp:352
void NetworkUpdateClientName(const std::string &client_name)
Send the server our name as callback from the setting.
StringList _network_host_list
The servers we know.
Definition network.cpp:76
bool NetworkServerChangeClientName(ClientID client_id, const std::string &new_name)
Change the client name of the given client.
void NetworkServerNewCompany(const Company *company, NetworkClientInfo *ci)
Perform all the server specific administration of a new company.
void NetworkServerSendExternalChat(std::string_view source, TextColour colour, std::string_view user, std::string_view msg)
Send a chat message from external source.
void NetworkPrintClients()
Print all the clients to the console.
void NetworkServerUpdateGameInfo()
Update the server's NetworkServerGameInfo due to changes in settings.
void NetworkClientJoinGame()
Actually perform the joining to the server.
Definition network.cpp:819
NetworkCompanyStatsArray NetworkGetCompanyStats()
Get the company stats.
void NetworkUpdateClientInfo(ClientID client_id)
Send updated client info of a particular client.
ClientID _redirect_console_to_client
If not invalid, redirect the console output to a client.
Definition network.cpp:73
void CDECL NetworkAddChatMessage(TextColour colour, uint duration, const std::string &message)
Add a text message to the 'chat window' to be shown.
void NetworkOnGameStart()
Perform tasks when the server is started.
Definition network.cpp:946
bool NetworkValidateOurClientName()
Convenience method for NetworkValidateClientName on _settings_client.network.client_name.
void NetworkClientRequestMove(CompanyID company)
Notify the server of this client wanting to be moved to another company.
uint8_t _network_reconnect
Reconnect timeout.
Definition network.cpp:74
void NetworkServerSendConfigUpdate()
Send Config Update.
StringList _network_ban_list
The banned clients.
Definition network.cpp:77
void NetworkReInitChatBoxSize()
Initialize all font-dependent chat box sizes.
void NetworkServerDoMove(ClientID client_id, CompanyID company_id)
Handle the tid-bits of moving a client from one company to another.
bool NetworkCompanyHasClients(CompanyID company)
Check whether a particular company has clients.
void NetworkServerKickClient(ClientID client_id, std::string_view reason)
Kick a single client.
void NetworkAfterNewGRFScan()
Rebuild the GRFConfig's of the servers in the game list as we did a rescan and might have found new N...
bool NetworkMaxCompaniesReached()
Check if max_companies has been reached on the server (local check only).
std::string_view ParseFullConnectionString(std::string_view connection_string, uint16_t &port, CompanyID *company_id=nullptr)
Converts a string to ip/port/company Format: IP:port::company.
Definition network.cpp:520
std::string_view NetworkGetPublicKeyOfClient(ClientID client_id)
Get the public key of the client with the given id.
void NetworkClientSendChat(NetworkAction action, DestType type, int dest, std::string_view msg, int64_t data=0)
Send a chat message.
void NetworkClientSendRcon(std::string_view password, std::string_view command)
Send a remote console command.
void NetworkBackgroundLoop()
We have to do some (simple) background stuff that runs normally, even when we are not in multiplayer.
Definition network.cpp:1081
StringList _network_bind_list
The addresses to bind on.
Definition network.cpp:75
uint NetworkMaxCompaniesAllowed()
Get the maximum number of companies that are allowed by the server.
void NetworkInitChatMessage()
Initialize all buffers of the chat visualisation.
void NetworkDisconnect(bool close_admins=true)
We want to disconnect from the host/clients.
Definition network.cpp:1000
void NetworkClientsToSpectators(CompanyID cid)
Move the clients of a company to the spectators.
ClientID _network_own_client_id
Uncomment the following define to enable command replaying.
Definition network.cpp:72
bool NetworkClientPreferTeamChat(const NetworkClientInfo *cio)
Tell whether the client has team members who they can chat to.
void NetworkUndrawChatMessage()
Hide the chatbox.
void NetworkServerSendChat(NetworkAction action, DestType type, int dest, std::string_view msg, ClientID from_id, int64_t data=0, bool from_admin=false)
Send an actual chat message.
void NetworkServerShowStatusToConsole()
Show the status message of all clients on the console.
void NetworkServerSendRcon(ClientID client_id, TextColour colour_code, std::string_view string)
Send an rcon reply to the client.
uint NetworkServerKickOrBanIP(ClientID client_id, bool ban, std::string_view reason)
Ban, or kick, everyone joined from the given client's IP.
bool NetworkClientConnectGame(std::string_view connection_string, CompanyID default_company, const std::string &join_server_password="")
Join a client to the server at with the given connection string.
Definition network.cpp:786
void NetworkUpdateServerGameType()
The setting server_game_type was updated; possibly we need to take some action.
Definition network.cpp:1028
bool NetworkCanJoinCompany(CompanyID company_id)
Returns whether the given company can be joined by this client.
Definition network.cpp:143
bool NetworkValidateClientName(std::string &client_name)
Trim the given client name in place, i.e.
bool NetworkIsValidClientName(std::string_view client_name)
Check whether the given client name is deemed valid for use in network games.
bool NetworkValidateServerName(std::string &server_name)
Trim the given server name in place, i.e.
Definition network.cpp:859
Types used for networking.
DestType
Destination of our chat messages.
NetworkAction
Actions that can be used for NetworkTextMessage.
ClientID
'Unique' identifier to be given to clients
PauseMode
Modes of pausing we've got.
Definition openttd.h:68
std::vector< std::string > StringList
Type for a list of strings.
Definition string_type.h:60
Container for all information known about a client.