mirror of https://github.com/OpenTTD/OpenTTD
Add: ability to retrieve game info from server over TCP
parent
84c75a7b9a
commit
b3003dd163
|
@ -71,6 +71,8 @@ NetworkRecvStatus NetworkGameSocketHandler::HandlePacket(Packet *p)
|
||||||
case PACKET_SERVER_BANNED: return this->Receive_SERVER_BANNED(p);
|
case PACKET_SERVER_BANNED: return this->Receive_SERVER_BANNED(p);
|
||||||
case PACKET_CLIENT_JOIN: return this->Receive_CLIENT_JOIN(p);
|
case PACKET_CLIENT_JOIN: return this->Receive_CLIENT_JOIN(p);
|
||||||
case PACKET_SERVER_ERROR: return this->Receive_SERVER_ERROR(p);
|
case PACKET_SERVER_ERROR: return this->Receive_SERVER_ERROR(p);
|
||||||
|
case PACKET_CLIENT_GAME_INFO: return this->Receive_CLIENT_GAME_INFO(p);
|
||||||
|
case PACKET_SERVER_GAME_INFO: return this->Receive_SERVER_GAME_INFO(p);
|
||||||
case PACKET_CLIENT_COMPANY_INFO: return this->Receive_CLIENT_COMPANY_INFO(p);
|
case PACKET_CLIENT_COMPANY_INFO: return this->Receive_CLIENT_COMPANY_INFO(p);
|
||||||
case PACKET_SERVER_COMPANY_INFO: return this->Receive_SERVER_COMPANY_INFO(p);
|
case PACKET_SERVER_COMPANY_INFO: return this->Receive_SERVER_COMPANY_INFO(p);
|
||||||
case PACKET_SERVER_CLIENT_INFO: return this->Receive_SERVER_CLIENT_INFO(p);
|
case PACKET_SERVER_CLIENT_INFO: return this->Receive_SERVER_CLIENT_INFO(p);
|
||||||
|
@ -157,6 +159,8 @@ NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_FULL(Packet *p) { ret
|
||||||
NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_BANNED(Packet *p) { return this->ReceiveInvalidPacket(PACKET_SERVER_BANNED); }
|
NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_BANNED(Packet *p) { return this->ReceiveInvalidPacket(PACKET_SERVER_BANNED); }
|
||||||
NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_JOIN(Packet *p) { return this->ReceiveInvalidPacket(PACKET_CLIENT_JOIN); }
|
NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_JOIN(Packet *p) { return this->ReceiveInvalidPacket(PACKET_CLIENT_JOIN); }
|
||||||
NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_ERROR(Packet *p) { return this->ReceiveInvalidPacket(PACKET_SERVER_ERROR); }
|
NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_ERROR(Packet *p) { return this->ReceiveInvalidPacket(PACKET_SERVER_ERROR); }
|
||||||
|
NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_GAME_INFO(Packet *p) { return this->ReceiveInvalidPacket(PACKET_CLIENT_GAME_INFO); }
|
||||||
|
NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_GAME_INFO(Packet *p) { return this->ReceiveInvalidPacket(PACKET_SERVER_GAME_INFO); }
|
||||||
NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_COMPANY_INFO(Packet *p) { return this->ReceiveInvalidPacket(PACKET_CLIENT_COMPANY_INFO); }
|
NetworkRecvStatus NetworkGameSocketHandler::Receive_CLIENT_COMPANY_INFO(Packet *p) { return this->ReceiveInvalidPacket(PACKET_CLIENT_COMPANY_INFO); }
|
||||||
NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_COMPANY_INFO(Packet *p) { return this->ReceiveInvalidPacket(PACKET_SERVER_COMPANY_INFO); }
|
NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_COMPANY_INFO(Packet *p) { return this->ReceiveInvalidPacket(PACKET_SERVER_COMPANY_INFO); }
|
||||||
NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_CLIENT_INFO(Packet *p) { return this->ReceiveInvalidPacket(PACKET_SERVER_CLIENT_INFO); }
|
NetworkRecvStatus NetworkGameSocketHandler::Receive_SERVER_CLIENT_INFO(Packet *p) { return this->ReceiveInvalidPacket(PACKET_SERVER_CLIENT_INFO); }
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
*/
|
*/
|
||||||
enum PacketGameType {
|
enum PacketGameType {
|
||||||
/*
|
/*
|
||||||
* These first three pair of packets (thus six in
|
* These first four pair of packets (thus eight in
|
||||||
* total) must remain in this order for backward
|
* total) must remain in this order for backward
|
||||||
* and forward compatibility between clients that
|
* and forward compatibility between clients that
|
||||||
* are trying to join directly.
|
* are trying to join directly.
|
||||||
|
@ -42,6 +42,10 @@ enum PacketGameType {
|
||||||
PACKET_CLIENT_COMPANY_INFO, ///< Request information about all companies.
|
PACKET_CLIENT_COMPANY_INFO, ///< Request information about all companies.
|
||||||
PACKET_SERVER_COMPANY_INFO, ///< Information about a single company.
|
PACKET_SERVER_COMPANY_INFO, ///< Information about a single company.
|
||||||
|
|
||||||
|
/* Packets used to get the game info. */
|
||||||
|
PACKET_CLIENT_GAME_INFO, ///< Request information about the server.
|
||||||
|
PACKET_SERVER_GAME_INFO, ///< Information about the server.
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Packets after here assume that the client
|
* Packets after here assume that the client
|
||||||
* and server are running the same version. As
|
* and server are running the same version. As
|
||||||
|
@ -183,6 +187,19 @@ protected:
|
||||||
*/
|
*/
|
||||||
virtual NetworkRecvStatus Receive_SERVER_ERROR(Packet *p);
|
virtual NetworkRecvStatus Receive_SERVER_ERROR(Packet *p);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Request game information.
|
||||||
|
* @param p The packet that was just received.
|
||||||
|
*/
|
||||||
|
virtual NetworkRecvStatus Receive_CLIENT_GAME_INFO(Packet *p);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sends information about the game.
|
||||||
|
* Serialized NetworkGameInfo. See game_info.h for details.
|
||||||
|
* @param p The packet that was just received.
|
||||||
|
*/
|
||||||
|
virtual NetworkRecvStatus Receive_SERVER_GAME_INFO(Packet *p);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Request company information (in detail).
|
* Request company information (in detail).
|
||||||
* @param p The packet that was just received.
|
* @param p The packet that was just received.
|
||||||
|
|
|
@ -353,6 +353,20 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendClientInfo(NetworkClientIn
|
||||||
return NETWORK_RECV_STATUS_OKAY;
|
return NETWORK_RECV_STATUS_OKAY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Send the client information about the server. */
|
||||||
|
NetworkRecvStatus ServerNetworkGameSocketHandler::SendGameInfo()
|
||||||
|
{
|
||||||
|
NetworkGameInfo ngi;
|
||||||
|
FillNetworkGameInfo(ngi);
|
||||||
|
|
||||||
|
Packet *p = new Packet(PACKET_SERVER_GAME_INFO);
|
||||||
|
SerializeNetworkGameInfo(p, &ngi);
|
||||||
|
|
||||||
|
this->SendPacket(p);
|
||||||
|
|
||||||
|
return NETWORK_RECV_STATUS_OKAY;
|
||||||
|
}
|
||||||
|
|
||||||
/** Send the client information about the companies. */
|
/** Send the client information about the companies. */
|
||||||
NetworkRecvStatus ServerNetworkGameSocketHandler::SendCompanyInfo()
|
NetworkRecvStatus ServerNetworkGameSocketHandler::SendCompanyInfo()
|
||||||
{
|
{
|
||||||
|
@ -828,6 +842,11 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendConfigUpdate()
|
||||||
* DEF_SERVER_RECEIVE_COMMAND has parameter: NetworkClientSocket *cs, Packet *p
|
* DEF_SERVER_RECEIVE_COMMAND has parameter: NetworkClientSocket *cs, Packet *p
|
||||||
************/
|
************/
|
||||||
|
|
||||||
|
NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_GAME_INFO(Packet *p)
|
||||||
|
{
|
||||||
|
return this->SendGameInfo();
|
||||||
|
}
|
||||||
|
|
||||||
NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_COMPANY_INFO(Packet *p)
|
NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_COMPANY_INFO(Packet *p)
|
||||||
{
|
{
|
||||||
return this->SendCompanyInfo();
|
return this->SendCompanyInfo();
|
||||||
|
|
|
@ -24,6 +24,7 @@ extern NetworkClientSocketPool _networkclientsocket_pool;
|
||||||
class ServerNetworkGameSocketHandler : public NetworkClientSocketPool::PoolItem<&_networkclientsocket_pool>, public NetworkGameSocketHandler, public TCPListenHandler<ServerNetworkGameSocketHandler, PACKET_SERVER_FULL, PACKET_SERVER_BANNED> {
|
class ServerNetworkGameSocketHandler : public NetworkClientSocketPool::PoolItem<&_networkclientsocket_pool>, public NetworkGameSocketHandler, public TCPListenHandler<ServerNetworkGameSocketHandler, PACKET_SERVER_FULL, PACKET_SERVER_BANNED> {
|
||||||
protected:
|
protected:
|
||||||
NetworkRecvStatus Receive_CLIENT_JOIN(Packet *p) override;
|
NetworkRecvStatus Receive_CLIENT_JOIN(Packet *p) override;
|
||||||
|
NetworkRecvStatus Receive_CLIENT_GAME_INFO(Packet *p) override;
|
||||||
NetworkRecvStatus Receive_CLIENT_COMPANY_INFO(Packet *p) override;
|
NetworkRecvStatus Receive_CLIENT_COMPANY_INFO(Packet *p) override;
|
||||||
NetworkRecvStatus Receive_CLIENT_GAME_PASSWORD(Packet *p) override;
|
NetworkRecvStatus Receive_CLIENT_GAME_PASSWORD(Packet *p) override;
|
||||||
NetworkRecvStatus Receive_CLIENT_COMPANY_PASSWORD(Packet *p) override;
|
NetworkRecvStatus Receive_CLIENT_COMPANY_PASSWORD(Packet *p) override;
|
||||||
|
@ -40,6 +41,7 @@ protected:
|
||||||
NetworkRecvStatus Receive_CLIENT_NEWGRFS_CHECKED(Packet *p) override;
|
NetworkRecvStatus Receive_CLIENT_NEWGRFS_CHECKED(Packet *p) override;
|
||||||
NetworkRecvStatus Receive_CLIENT_MOVE(Packet *p) override;
|
NetworkRecvStatus Receive_CLIENT_MOVE(Packet *p) override;
|
||||||
|
|
||||||
|
NetworkRecvStatus SendGameInfo();
|
||||||
NetworkRecvStatus SendCompanyInfo();
|
NetworkRecvStatus SendCompanyInfo();
|
||||||
NetworkRecvStatus SendNewGRFCheck();
|
NetworkRecvStatus SendNewGRFCheck();
|
||||||
NetworkRecvStatus SendWelcome();
|
NetworkRecvStatus SendWelcome();
|
||||||
|
|
Loading…
Reference in New Issue