network_client.cpp File Reference

Client part of the network protocol. More...

#include "../stdafx.h"
#include "../debug.h"
#include "network_internal.h"
#include "network_gui.h"
#include "../saveload/saveload.h"
#include "../saveload/saveload_filter.h"
#include "../command_func.h"
#include "../console_func.h"
#include "../fileio_func.h"
#include "../3rdparty/md5/md5.h"
#include "../strings_func.h"
#include "../window_func.h"
#include "../company_func.h"
#include "../company_base.h"
#include "../company_gui.h"
#include "../core/random_func.hpp"
#include "../date_func.h"
#include "../gui.h"
#include "../rev.h"
#include "network.h"
#include "network_base.h"
#include "network_client.h"
#include "table/strings.h"

Go to the source code of this file.

Data Structures

struct  PacketReader
 Read some packets, and when do use that data as initial load filter. More...

Functions

 assert_compile (NETWORK_SERVER_ID_LENGTH==16 *2+1)
 Make sure the server ID length is the same as a md5 hash.
static const char * GenerateCompanyPasswordHash (const char *password)
 Generates a hashed password for the company name.
void HashCurrentCompanyPassword (const char *password)
 Hash the current company password; used when the server 'company' sets his/her password.
bool SafeLoad (const char *filename, int mode, GameMode newgm, Subdirectory subdir, struct LoadFilter *lf=NULL)
 Load the specified savegame but on error do different things.
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_FULL)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_BANNED)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_COMPANY_INFO)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_CLIENT_INFO)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_ERROR)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_CHECK_NEWGRFS)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_NEED_GAME_PASSWORD)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_NEED_COMPANY_PASSWORD)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_WELCOME)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_WAIT)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_MAP_BEGIN)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_MAP_SIZE)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_MAP_DATA)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_MAP_DONE)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_FRAME)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_SYNC)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_COMMAND)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_CHAT)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_ERROR_QUIT)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_QUIT)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_JOIN)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_SHUTDOWN)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_NEWGAME)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_RCON)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_MOVE)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_CONFIG_UPDATE)
 DEF_GAME_RECEIVE_COMMAND (Client, PACKET_SERVER_COMPANY_UPDATE)
void NetworkClient_Connected ()
void NetworkClientSendRcon (const char *password, const char *command)
void NetworkClientRequestMove (CompanyID company_id, const char *pass)
 Notify the server of this client wanting to be moved to another company.
void NetworkClientsToSpectators (CompanyID cid)
void NetworkUpdateClientName ()
void NetworkClientSendChat (NetworkAction action, DestType type, int dest, const char *msg, int64 data)
static void NetworkClientSetPassword (const char *password)
bool NetworkClientPreferTeamChat (const NetworkClientInfo *cio)
 Tell whether the client has team members where he/she can chat to.
const char * NetworkChangeCompanyPassword (const char *password)
 Sets/resets company password.
bool NetworkMaxCompaniesReached ()
 Check if max_companies has been reached on the server (local check only).
bool NetworkMaxSpectatorsReached ()
 Check if max_spectatos has been reached on the server (local check only).
void NetworkPrintClients ()
 Print all the clients to the console.

Variables

static uint32 last_ack_frame
static uint32 _password_game_seed
 One bit of 'entropy' used to generate a salt for the company passwords.
static char _password_server_id [NETWORK_SERVER_ID_LENGTH]
 The other bit of 'entropy' used to generate a salt for the company passwords.
static uint8 _network_server_max_companies
 Maximum number of companies of the currently joined server.
static uint8 _network_server_max_spectators
 Maximum number of spectators of the currently joined server.
CompanyID _network_join_as
 Who would we like to join as.
const char * _network_join_server_password = NULL
 Login password from -p argument.
const char * _network_join_company_password = NULL
 Company password from -P argument.
StringID _switch_mode_errorstr

Detailed Description

Client part of the network protocol.

Definition in file network_client.cpp.


Function Documentation

assert_compile ( NETWORK_SERVER_ID_LENGTH  = =16 *2+1  ) 

Make sure the server ID length is the same as a md5 hash.

static const char* GenerateCompanyPasswordHash ( const char *  password  )  [static]

Generates a hashed password for the company name.

Parameters:
password the password to 'encrypt'.
Returns:
the hashed password.

Definition at line 306 of file network_client.cpp.

References lengthof, NETWORK_SERVER_ID_LENGTH, and StrEmpty().

Referenced by HashCurrentCompanyPassword().

const char* NetworkChangeCompanyPassword ( const char *  password  ) 

Sets/resets company password.

Parameters:
password new password, "" or "*" resets password
Returns:
new password

Definition at line 1255 of file network_client.cpp.

References _network_server, and HashCurrentCompanyPassword().

Referenced by CmdCompanyCtrl().

bool NetworkClientPreferTeamChat ( const NetworkClientInfo cio  ) 

Tell whether the client has team members where he/she can chat to.

Parameters:
cio client to check members of.
Returns:
true if there is at least one team member.

Definition at line 1237 of file network_client.cpp.

References _settings_client, NetworkClientInfo::client_playas, ClientSettings::gui, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), and GUISettings::prefer_teamchat.

Referenced by MainWindow::OnKeyPress().

void NetworkClientRequestMove ( CompanyID  company_id,
const char *  pass 
)

Notify the server of this client wanting to be moved to another company.

Parameters:
company_id id of the company the client wishes to be moved to.
pass the password, is only checked on the server end if a password is needed.
Returns:
void

Definition at line 1184 of file network_client.cpp.

Referenced by CompanyWindow::OnClick(), and CompanyWindow::OnQueryTextFinished().

bool NetworkMaxCompaniesReached (  ) 

Check if max_companies has been reached on the server (local check only).

Returns:
true if the max value has been reached or exceeded, false otherwise.

Definition at line 1272 of file network_client.cpp.

References _network_server, _settings_client, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::GetNumItems(), NetworkSettings::max_companies, and ClientSettings::network.

Referenced by PopupMainCompanyToolbMenu().

bool NetworkMaxSpectatorsReached (  ) 

Check if max_spectatos has been reached on the server (local check only).

Returns:
true if the max value has been reached or exceeded, false otherwise.

Definition at line 1281 of file network_client.cpp.

References _network_server, _settings_client, NetworkSettings::max_spectators, and ClientSettings::network.

Referenced by PopupMainCompanyToolbMenu().

bool SafeLoad ( const char *  filename,
int  mode,
GameMode  newgm,
Subdirectory  subdir,
struct LoadFilter lf = NULL 
)

Load the specified savegame but on error do different things.

If loading fails due to corrupt savegame, bad version, etc. go back to a previous correct state. In the menu for example load the intro game again.

Parameters:
mode mode of loading, either SL_LOAD or SL_OLD_LOAD
newgm switch to this mode of loading fails due to some unknown error
filename file to be loaded
subdir default directory to look for filename, set to 0 if not needed
lf Load filter to use, if NULL: use filename + subdir.

Definition at line 875 of file openttd.cpp.

Referenced by StartScenario().


Variable Documentation

Who would we like to join as.

Definition at line 291 of file network_client.cpp.

Maximum number of companies of the currently joined server.

Definition at line 286 of file network_client.cpp.

Maximum number of spectators of the currently joined server.

Definition at line 288 of file network_client.cpp.

uint32 _password_game_seed [static]

One bit of 'entropy' used to generate a salt for the company passwords.

Definition at line 281 of file network_client.cpp.

The other bit of 'entropy' used to generate a salt for the company passwords.

Definition at line 283 of file network_client.cpp.


Generated on Fri Dec 31 17:15:46 2010 for OpenTTD by  doxygen 1.6.1