File diff r25292:6323f849890a → r25293:51d13a17d6ec
src/network/network_client.cpp
Show inline comments
 
@@ -27,6 +27,7 @@
 
#include "network.h"
 
#include "network_base.h"
 
#include "network_client.h"
 
#include "network_gamelist.h"
 
#include "../core/backup_type.hpp"
 
#include "../thread.h"
 

	
 
@@ -341,15 +342,18 @@ static_assert(NETWORK_SERVER_ID_LENGTH =
 
 *   DEF_CLIENT_SEND_COMMAND has no parameters
 
 ************/
 

	
 
/** Query the server for company information. */
 
NetworkRecvStatus ClientNetworkGameSocketHandler::SendCompanyInformationQuery()
 
/**
 
 * Query the server for server information.
 
 */
 
NetworkRecvStatus ClientNetworkGameSocketHandler::SendInformationQuery()
 
{
 
	my_client->status = STATUS_COMPANY_INFO;
 
	_network_join_status = NETWORK_JOIN_STATUS_GETTING_COMPANY_INFO;
 
	SetWindowDirty(WC_NETWORK_STATUS_WINDOW, WN_NETWORK_STATUS_WINDOW_JOIN);
 

	
 
	Packet *p = new Packet(PACKET_CLIENT_COMPANY_INFO);
 
	my_client->SendPacket(p);
 
	my_client->SendPacket(new Packet(PACKET_CLIENT_GAME_INFO));
 
	my_client->SendPacket(new Packet(PACKET_CLIENT_COMPANY_INFO));
 

	
 
	return NETWORK_RECV_STATUS_OKAY;
 
}
 

	
 
@@ -571,6 +575,28 @@ NetworkRecvStatus ClientNetworkGameSocke
 
	return NETWORK_RECV_STATUS_SERVER_BANNED;
 
}
 

	
 
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_GAME_INFO(Packet *p)
 
{
 
	if (this->status != STATUS_COMPANY_INFO && this->status != STATUS_INACTIVE) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
 

	
 
	NetworkGameList *item = GetLobbyGameInfo();
 

	
 
	/* Clear any existing GRFConfig chain. */
 
	ClearGRFConfigList(&item->info.grfconfig);
 
	/* Retrieve the NetworkGameInfo from the packet. */
 
	DeserializeNetworkGameInfo(p, &item->info);
 
	/* Check for compatability with the client. */
 
	CheckGameCompatibility(item->info);
 
	/* Ensure we consider the server online. */
 
	item->online = true;
 

	
 
	SetWindowDirty(WC_NETWORK_WINDOW, WN_NETWORK_WINDOW_LOBBY);
 

	
 
	/* We will receive company info next, so keep connection open. */
 
	if (this->status == STATUS_COMPANY_INFO) return NETWORK_RECV_STATUS_OKAY;
 
	return NETWORK_RECV_STATUS_CLOSE_QUERY;
 
}
 

	
 
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_COMPANY_INFO(Packet *p)
 
{
 
	if (this->status != STATUS_COMPANY_INFO) return NETWORK_RECV_STATUS_MALFORMED_PACKET;