mirror of https://github.com/OpenTTD/OpenTTD
(svn r8546) -Codechange: add a seperate (wrapper) functions to send/receive booleans.
parent
9ddd227eb3
commit
500f9a971a
|
@ -80,8 +80,16 @@ void Packet::PrepareToSend(void)
|
||||||
* sent first.
|
* sent first.
|
||||||
*
|
*
|
||||||
* So 0x01234567 would be sent as 67 45 23 01.
|
* So 0x01234567 would be sent as 67 45 23 01.
|
||||||
|
*
|
||||||
|
* A bool is sent as a uint8 where zero means false
|
||||||
|
* and non-zero means true.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
void Packet::Send_bool(bool data)
|
||||||
|
{
|
||||||
|
this->Send_uint8(data ? 1 : 0);
|
||||||
|
}
|
||||||
|
|
||||||
void Packet::Send_uint8(uint8 data)
|
void Packet::Send_uint8(uint8 data)
|
||||||
{
|
{
|
||||||
assert(this->size < sizeof(this->buffer) - sizeof(data));
|
assert(this->size < sizeof(this->buffer) - sizeof(data));
|
||||||
|
@ -133,7 +141,7 @@ void Packet::Send_string(const char* data)
|
||||||
/**
|
/**
|
||||||
* Receiving commands
|
* Receiving commands
|
||||||
* Again, the next couple of functions are endian-safe
|
* Again, the next couple of functions are endian-safe
|
||||||
* see the comment before NetworkSend_uint8 for more info.
|
* see the comment before Send_bool for more info.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
@ -173,6 +181,11 @@ void Packet::PrepareToRead(void)
|
||||||
this->pos = sizeof(PacketSize);
|
this->pos = sizeof(PacketSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Packet::Recv_bool(void)
|
||||||
|
{
|
||||||
|
return this->Recv_uint8() != 0;
|
||||||
|
}
|
||||||
|
|
||||||
uint8 Packet::Recv_uint8(void)
|
uint8 Packet::Recv_uint8(void)
|
||||||
{
|
{
|
||||||
uint8 n;
|
uint8 n;
|
||||||
|
|
|
@ -45,6 +45,7 @@ public:
|
||||||
/* Sending/writing of packets */
|
/* Sending/writing of packets */
|
||||||
void PrepareToSend(void);
|
void PrepareToSend(void);
|
||||||
|
|
||||||
|
void Send_bool (bool data);
|
||||||
void Send_uint8 (uint8 data);
|
void Send_uint8 (uint8 data);
|
||||||
void Send_uint16(uint16 data);
|
void Send_uint16(uint16 data);
|
||||||
void Send_uint32(uint32 data);
|
void Send_uint32(uint32 data);
|
||||||
|
@ -56,6 +57,7 @@ public:
|
||||||
void PrepareToRead(void);
|
void PrepareToRead(void);
|
||||||
|
|
||||||
bool CanReadFromPacket (uint bytes_to_read);
|
bool CanReadFromPacket (uint bytes_to_read);
|
||||||
|
bool Recv_bool (void);
|
||||||
uint8 Recv_uint8 (void);
|
uint8 Recv_uint8 (void);
|
||||||
uint16 Recv_uint16(void);
|
uint16 Recv_uint16(void);
|
||||||
uint32 Recv_uint32(void);
|
uint32 Recv_uint32(void);
|
||||||
|
|
|
@ -190,7 +190,7 @@ void NetworkUDPSocketHandler::Send_NetworkGameInfo(Packet *p, const NetworkGameI
|
||||||
p->Send_string(info->server_name);
|
p->Send_string(info->server_name);
|
||||||
p->Send_string(info->server_revision);
|
p->Send_string(info->server_revision);
|
||||||
p->Send_uint8 (info->server_lang);
|
p->Send_uint8 (info->server_lang);
|
||||||
p->Send_uint8 (info->use_password);
|
p->Send_bool (info->use_password);
|
||||||
p->Send_uint8 (info->clients_max);
|
p->Send_uint8 (info->clients_max);
|
||||||
p->Send_uint8 (info->clients_on);
|
p->Send_uint8 (info->clients_on);
|
||||||
p->Send_uint8 (info->spectators_on);
|
p->Send_uint8 (info->spectators_on);
|
||||||
|
@ -198,7 +198,7 @@ void NetworkUDPSocketHandler::Send_NetworkGameInfo(Packet *p, const NetworkGameI
|
||||||
p->Send_uint16(info->map_width);
|
p->Send_uint16(info->map_width);
|
||||||
p->Send_uint16(info->map_height);
|
p->Send_uint16(info->map_height);
|
||||||
p->Send_uint8 (info->map_set);
|
p->Send_uint8 (info->map_set);
|
||||||
p->Send_uint8 (info->dedicated);
|
p->Send_bool (info->dedicated);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -249,7 +249,7 @@ void NetworkUDPSocketHandler::Recv_NetworkGameInfo(Packet *p, NetworkGameInfo *i
|
||||||
p->Recv_string(info->server_name, sizeof(info->server_name));
|
p->Recv_string(info->server_name, sizeof(info->server_name));
|
||||||
p->Recv_string(info->server_revision, sizeof(info->server_revision));
|
p->Recv_string(info->server_revision, sizeof(info->server_revision));
|
||||||
info->server_lang = p->Recv_uint8 ();
|
info->server_lang = p->Recv_uint8 ();
|
||||||
info->use_password = (p->Recv_uint8 () != 0);
|
info->use_password = p->Recv_bool ();
|
||||||
info->clients_max = p->Recv_uint8 ();
|
info->clients_max = p->Recv_uint8 ();
|
||||||
info->clients_on = p->Recv_uint8 ();
|
info->clients_on = p->Recv_uint8 ();
|
||||||
info->spectators_on = p->Recv_uint8 ();
|
info->spectators_on = p->Recv_uint8 ();
|
||||||
|
@ -261,7 +261,7 @@ void NetworkUDPSocketHandler::Recv_NetworkGameInfo(Packet *p, NetworkGameInfo *i
|
||||||
info->map_width = p->Recv_uint16();
|
info->map_width = p->Recv_uint16();
|
||||||
info->map_height = p->Recv_uint16();
|
info->map_height = p->Recv_uint16();
|
||||||
info->map_set = p->Recv_uint8 ();
|
info->map_set = p->Recv_uint8 ();
|
||||||
info->dedicated = (p->Recv_uint8() != 0);
|
info->dedicated = p->Recv_bool ();
|
||||||
|
|
||||||
if (info->server_lang >= NETWORK_NUM_LANGUAGES) info->server_lang = 0;
|
if (info->server_lang >= NETWORK_NUM_LANGUAGES) info->server_lang = 0;
|
||||||
if (info->map_set >= NETWORK_NUM_LANDSCAPES) info->map_set = 0;
|
if (info->map_set >= NETWORK_NUM_LANDSCAPES) info->map_set = 0;
|
||||||
|
|
|
@ -48,7 +48,7 @@ typedef struct NetworkPlayerInfo {
|
||||||
int64 money; // The amount of money the company has
|
int64 money; // The amount of money the company has
|
||||||
int64 income; // How much did the company earned last year
|
int64 income; // How much did the company earned last year
|
||||||
uint16 performance; // What was his performance last month?
|
uint16 performance; // What was his performance last month?
|
||||||
byte use_password; // 0: No password 1: There is a password
|
bool use_password; // Is there a password
|
||||||
uint16 num_vehicle[NETWORK_VEHICLE_TYPES]; // How many vehicles are there of this type?
|
uint16 num_vehicle[NETWORK_VEHICLE_TYPES]; // How many vehicles are there of this type?
|
||||||
uint16 num_station[NETWORK_STATION_TYPES]; // How many stations are there of this type?
|
uint16 num_station[NETWORK_STATION_TYPES]; // How many stations are there of this type?
|
||||||
char players[NETWORK_PLAYERS_LENGTH]; // The players that control this company (Name1, name2, ..)
|
char players[NETWORK_PLAYERS_LENGTH]; // The players that control this company (Name1, name2, ..)
|
||||||
|
|
|
@ -314,7 +314,7 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_COMPANY_INFO)
|
||||||
_network_player_info[current].money = p->Recv_uint64();
|
_network_player_info[current].money = p->Recv_uint64();
|
||||||
_network_player_info[current].income = p->Recv_uint64();
|
_network_player_info[current].income = p->Recv_uint64();
|
||||||
_network_player_info[current].performance = p->Recv_uint16();
|
_network_player_info[current].performance = p->Recv_uint16();
|
||||||
_network_player_info[current].use_password = p->Recv_uint8();
|
_network_player_info[current].use_password = p->Recv_bool();
|
||||||
for (i = 0; i < NETWORK_VEHICLE_TYPES; i++)
|
for (i = 0; i < NETWORK_VEHICLE_TYPES; i++)
|
||||||
_network_player_info[current].num_vehicle[i] = p->Recv_uint16();
|
_network_player_info[current].num_vehicle[i] = p->Recv_uint16();
|
||||||
for (i = 0; i < NETWORK_STATION_TYPES; i++)
|
for (i = 0; i < NETWORK_STATION_TYPES; i++)
|
||||||
|
@ -655,7 +655,7 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_CHAT)
|
||||||
|
|
||||||
NetworkAction action = (NetworkAction)p->Recv_uint8();
|
NetworkAction action = (NetworkAction)p->Recv_uint8();
|
||||||
uint16 index = p->Recv_uint16();
|
uint16 index = p->Recv_uint16();
|
||||||
bool self_send = (p->Recv_uint8() != 0);
|
bool self_send = p->Recv_bool();
|
||||||
p->Recv_string(msg, MAX_TEXT_MSG_LEN);
|
p->Recv_string(msg, MAX_TEXT_MSG_LEN);
|
||||||
|
|
||||||
ci_to = NetworkFindClientInfoFromIndex(index);
|
ci_to = NetworkFindClientInfoFromIndex(index);
|
||||||
|
|
|
@ -101,7 +101,7 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_COMPANY_INFO)
|
||||||
p->Send_uint16(_network_player_info[player->index].performance);
|
p->Send_uint16(_network_player_info[player->index].performance);
|
||||||
|
|
||||||
/* Send 1 if there is a passord for the company else send 0 */
|
/* Send 1 if there is a passord for the company else send 0 */
|
||||||
p->Send_uint8(StrEmpty(_network_player_info[player->index].password) ? 0 : 1);
|
p->Send_bool(StrEmpty(_network_player_info[player->index].password));
|
||||||
|
|
||||||
for (i = 0; i < NETWORK_VEHICLE_TYPES; i++) {
|
for (i = 0; i < NETWORK_VEHICLE_TYPES; i++) {
|
||||||
p->Send_uint16(_network_player_info[player->index].num_vehicle[i]);
|
p->Send_uint16(_network_player_info[player->index].num_vehicle[i]);
|
||||||
|
@ -503,7 +503,7 @@ DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_CHAT)(NetworkTCPSocketHandler *cs, N
|
||||||
|
|
||||||
p->Send_uint8 (action);
|
p->Send_uint8 (action);
|
||||||
p->Send_uint16(client_index);
|
p->Send_uint16(client_index);
|
||||||
p->Send_uint8 (self_send);
|
p->Send_bool (self_send);
|
||||||
p->Send_string(msg);
|
p->Send_string(msg);
|
||||||
|
|
||||||
cs->Send_Packet(p);
|
cs->Send_Packet(p);
|
||||||
|
|
|
@ -124,7 +124,7 @@ DEF_UDP_RECEIVE_COMMAND(Server, PACKET_UDP_CLIENT_DETAIL_INFO)
|
||||||
packet.Send_uint16(_network_player_info[player->index].performance);
|
packet.Send_uint16(_network_player_info[player->index].performance);
|
||||||
|
|
||||||
/* Send 1 if there is a passord for the company else send 0 */
|
/* Send 1 if there is a passord for the company else send 0 */
|
||||||
packet.Send_uint8 (StrEmpty(_network_player_info[player->index].password) ? 0 : 1);
|
packet.Send_bool (StrEmpty(_network_player_info[player->index].password));
|
||||||
|
|
||||||
for (i = 0; i < NETWORK_VEHICLE_TYPES; i++)
|
for (i = 0; i < NETWORK_VEHICLE_TYPES; i++)
|
||||||
packet.Send_uint16(_network_player_info[player->index].num_vehicle[i]);
|
packet.Send_uint16(_network_player_info[player->index].num_vehicle[i]);
|
||||||
|
@ -136,8 +136,7 @@ DEF_UDP_RECEIVE_COMMAND(Server, PACKET_UDP_CLIENT_DETAIL_INFO)
|
||||||
FOR_ALL_CLIENTS(cs) {
|
FOR_ALL_CLIENTS(cs) {
|
||||||
ci = DEREF_CLIENT_INFO(cs);
|
ci = DEREF_CLIENT_INFO(cs);
|
||||||
if (ci->client_playas == player->index) {
|
if (ci->client_playas == player->index) {
|
||||||
/* The uint8 == 1 indicates that a client is following */
|
packet.Send_bool (true);
|
||||||
packet.Send_uint8 (1);
|
|
||||||
packet.Send_string(ci->client_name);
|
packet.Send_string(ci->client_name);
|
||||||
packet.Send_string(ci->unique_id);
|
packet.Send_string(ci->unique_id);
|
||||||
packet.Send_uint32(ci->join_date);
|
packet.Send_uint32(ci->join_date);
|
||||||
|
@ -146,23 +145,21 @@ DEF_UDP_RECEIVE_COMMAND(Server, PACKET_UDP_CLIENT_DETAIL_INFO)
|
||||||
/* Also check for the server itself */
|
/* Also check for the server itself */
|
||||||
ci = NetworkFindClientInfoFromIndex(NETWORK_SERVER_INDEX);
|
ci = NetworkFindClientInfoFromIndex(NETWORK_SERVER_INDEX);
|
||||||
if (ci->client_playas == player->index) {
|
if (ci->client_playas == player->index) {
|
||||||
/* The uint8 == 1 indicates that a client is following */
|
packet.Send_bool (true);
|
||||||
packet.Send_uint8 (1);
|
|
||||||
packet.Send_string(ci->client_name);
|
packet.Send_string(ci->client_name);
|
||||||
packet.Send_string(ci->unique_id);
|
packet.Send_string(ci->unique_id);
|
||||||
packet.Send_uint32(ci->join_date);
|
packet.Send_uint32(ci->join_date);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Indicates end of client list */
|
/* Indicates end of client list */
|
||||||
packet.Send_uint8(0);
|
packet.Send_bool(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* And check if we have any spectators */
|
/* And check if we have any spectators */
|
||||||
FOR_ALL_CLIENTS(cs) {
|
FOR_ALL_CLIENTS(cs) {
|
||||||
ci = DEREF_CLIENT_INFO(cs);
|
ci = DEREF_CLIENT_INFO(cs);
|
||||||
if (!IsValidPlayer(ci->client_playas)) {
|
if (!IsValidPlayer(ci->client_playas)) {
|
||||||
/* The uint8 == 1 indicates that a client is following */
|
packet.Send_bool (true);
|
||||||
packet.Send_uint8 (1);
|
|
||||||
packet.Send_string(ci->client_name);
|
packet.Send_string(ci->client_name);
|
||||||
packet.Send_string(ci->unique_id);
|
packet.Send_string(ci->unique_id);
|
||||||
packet.Send_uint32(ci->join_date);
|
packet.Send_uint32(ci->join_date);
|
||||||
|
@ -172,15 +169,14 @@ DEF_UDP_RECEIVE_COMMAND(Server, PACKET_UDP_CLIENT_DETAIL_INFO)
|
||||||
/* Also check for the server itself */
|
/* Also check for the server itself */
|
||||||
ci = NetworkFindClientInfoFromIndex(NETWORK_SERVER_INDEX);
|
ci = NetworkFindClientInfoFromIndex(NETWORK_SERVER_INDEX);
|
||||||
if (!IsValidPlayer(ci->client_playas)) {
|
if (!IsValidPlayer(ci->client_playas)) {
|
||||||
/* The uint8 == 1 indicates that a client is following */
|
packet.Send_bool (true);
|
||||||
packet.Send_uint8 (1);
|
|
||||||
packet.Send_string(ci->client_name);
|
packet.Send_string(ci->client_name);
|
||||||
packet.Send_string(ci->unique_id);
|
packet.Send_string(ci->unique_id);
|
||||||
packet.Send_uint32(ci->join_date);
|
packet.Send_uint32(ci->join_date);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Indicates end of client list */
|
/* Indicates end of client list */
|
||||||
packet.Send_uint8(0);
|
packet.Send_bool(false);
|
||||||
|
|
||||||
this->SendPacket(&packet, client_addr);
|
this->SendPacket(&packet, client_addr);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue