Removed IP version checking code (since this is handled in the Sock constructor), and allowed server (but not client, yet) to quit game before round start
This commit is contained in:
18
main.cpp
18
main.cpp
@@ -100,16 +100,9 @@ GameType check_server_client(int argc, char** argv) {
|
||||
try {
|
||||
addr_port = connect_code::decode(connect_code);
|
||||
/* Check IP address version */
|
||||
int ip_ver = 0;
|
||||
if (check_ip_ver(addr_port[0].data()) < 0) {
|
||||
throw std::invalid_argument("Invalid code entered.");
|
||||
}
|
||||
/* From here, assume address is either IPv4 or IPv6 */
|
||||
if (check_ip_ver(addr_port[0].data()) == 4) {
|
||||
ip_ver = 4;
|
||||
} else {
|
||||
ip_ver = 6;
|
||||
}
|
||||
Client* client = new Client(ES_UDP, addr_port[0].data(), std::stoi(addr_port[1]));
|
||||
client->create_socket();
|
||||
/* Send a specific message to the server, and wait for the appropriate response, to know that the server is ready */
|
||||
@@ -387,11 +380,18 @@ int main(int argc, char** argv) {
|
||||
}
|
||||
}
|
||||
|
||||
/* For client (wait for start message from server) */
|
||||
/* For client (wait for start or quit message from server): When the peer quits the
|
||||
game, it sends a serialized struct, containing all zeros, with the last bit turned
|
||||
on as a flag. We catch this zero bit, as it indicates that the peer quit the game. */
|
||||
if (type.mode == M_CLIENT) {
|
||||
do {
|
||||
response = type.netsock->recvAll();
|
||||
} while (response[0] != 'S');
|
||||
} while (response[0] != 'S' && response[0] != 0);
|
||||
if (response[0] == 0) {
|
||||
CloseWindow();
|
||||
std::cout << "Peer unexpectedly quit game." << std::endl;
|
||||
return -1;
|
||||
}
|
||||
game_started = true;
|
||||
std::cout << "Game has been started by server." << std::endl;
|
||||
}
|
||||
|
Reference in New Issue
Block a user