diff --git a/source/server/game_instance.cpp b/source/server/game_instance.cpp index 751d57f0413ddc4dffe1d26a6381140057c6c7d2..a8aa1ac65ed3fad94db98aaf858d4d6dffa2200e 100644 --- a/source/server/game_instance.cpp +++ b/source/server/game_instance.cpp @@ -3,7 +3,7 @@ #include "server_network_manager.hpp" #include "../general/network/responses/change_gamestate_msg.hpp" - +// ACCESSORS FOR GAME STATE game_instance::game_instance() { _game_state = new game_state(); } @@ -34,7 +34,7 @@ bool game_instance::is_finished() { bool game_instance::start_game(player* player, std::string &err) { modification_lock.lock(); - if (_game_state->start_game(err)) { // ADAPT THIS LINE! + if (_game_state->start_game(err)) { // send state update to all other players change_gamestate_msg state_update_msg = change_gamestate_msg(this->get_id(), *_game_state); server_network_manager::broadcast_message(state_update_msg, _game_state->get_players(), player); @@ -47,7 +47,7 @@ bool game_instance::start_game(player* player, std::string &err) { bool game_instance::try_add_player(player *new_player, std::string &err) { modification_lock.lock(); - if (_game_state->add_player(new_player, err)) { // ADAPT THIS LINE! + if (_game_state->add_player(new_player, err)) { new_player->set_game_id(get_id()); // send state update to all other players change_gamestate_msg state_update_msg = change_gamestate_msg(this->get_id(), *_game_state); @@ -61,7 +61,7 @@ bool game_instance::try_add_player(player *new_player, std::string &err) { bool game_instance::try_remove_player(player *player, std::string &err) { modification_lock.lock(); - if (_game_state->remove_player(player, err)) { // ADAPT THIS LINE! + if (_game_state->remove_player(player, err)) { player->set_game_id(""); // send state update to all other players change_gamestate_msg state_update_msg = change_gamestate_msg(this->get_id(), *_game_state); @@ -75,7 +75,7 @@ bool game_instance::try_remove_player(player *player, std::string &err) { bool game_instance::hit(player* player, std::string& err) { modification_lock.lock(); - if (_game_state->hit(player, err)) { // ADAPT THIS LINE! + if (_game_state->hit(player, err)) { // send state update to all other players change_gamestate_msg state_update_msg = change_gamestate_msg(this->get_id(), *_game_state); server_network_manager::broadcast_message(state_update_msg, _game_state->get_players(), player); @@ -88,7 +88,7 @@ bool game_instance::hit(player* player, std::string& err) { bool game_instance::stand(player* player, std::string& err) { modification_lock.lock(); - if (_game_state->stand(player, err)) { // ADAPT THIS LINE! + if (_game_state->stand(player, err)) { // send state update to all other players change_gamestate_msg state_update_msg = change_gamestate_msg(this->get_id(), *_game_state); server_network_manager::broadcast_message(state_update_msg, _game_state->get_players(), player); @@ -101,7 +101,7 @@ bool game_instance::stand(player* player, std::string& err) { bool game_instance::make_bet(player *player, const int& bet_size, std::string& err) { modification_lock.lock(); - if (_game_state->make_bet(player, bet_size, err)) { // ADAPT THIS LINE! + if (_game_state->make_bet(player, bet_size, err)) { change_gamestate_msg state_update_msg = change_gamestate_msg(this->get_id(), *_game_state); server_network_manager::broadcast_message(state_update_msg, _game_state->get_players(), player); modification_lock.unlock(); diff --git a/source/server/request_handler.cpp b/source/server/request_handler.cpp index 6e4e2bf7ba2ea5297842562c954e0a44eac449de..988177b15405cc2b255162e2a604fd5938cc8b21 100644 --- a/source/server/request_handler.cpp +++ b/source/server/request_handler.cpp @@ -77,10 +77,12 @@ answer_rqst_response* request_handler::handle_request(const client_request* cons case RequestType::start_game: { if (game_instance_manager::try_get_player_and_game_instance(player_id, player, game_instance_ptr, err)) { if (game_instance_ptr->start_game(player, err)) { + // if successful, send all clients the new game state return new answer_rqst_response(game_instance_ptr->get_id(), req_id, true, game_instance_ptr->get_game_state()->to_json(), err); } } + // otherwise, send all clients an error message return new answer_rqst_response("", req_id, false, nullptr, err); } @@ -90,10 +92,12 @@ answer_rqst_response* request_handler::handle_request(const client_request* cons if (game_instance_manager::try_get_player_and_game_instance(player_id, player, game_instance_ptr, err)) { int bet_size = ((make_bet_request *) req)->get_bet(); if (game_instance_ptr->make_bet(player, bet_size, err)) { + // if successful, send all clients the new game state return new answer_rqst_response(game_instance_ptr->get_id(), req_id, true, game_instance_ptr->get_game_state()->to_json(), err); } } + // otherwise, send all clients an error message return new answer_rqst_response("", req_id, false, nullptr, err); } @@ -102,12 +106,13 @@ answer_rqst_response* request_handler::handle_request(const client_request* cons case RequestType::hit: { if (game_instance_manager::try_get_player_and_game_instance(player_id, player, game_instance_ptr, err)) { if (game_instance_ptr->hit(player, err)) { + // if successful, send all clients the new game state return new answer_rqst_response(game_instance_ptr->get_id(), req_id, true, game_instance_ptr->get_game_state()->to_json(), err); } } + // otherwise, send all clients an error message return new answer_rqst_response("", req_id, false, nullptr, err); - } @@ -115,10 +120,12 @@ answer_rqst_response* request_handler::handle_request(const client_request* cons case RequestType::stand: { if (game_instance_manager::try_get_player_and_game_instance(player_id, player, game_instance_ptr, err)) { if (game_instance_ptr->stand(player, err)) { + // if successful, send all clients the new game state return new answer_rqst_response(game_instance_ptr->get_id(), req_id, true, game_instance_ptr->get_game_state()->to_json(), err); } } + // otherwise, send all clients an error message return new answer_rqst_response("", req_id, false, nullptr, err); } @@ -136,7 +143,6 @@ bool request_handler::perform_setup_if_needed(const client_request* const req){ std::string player_id = req->get_player_id(); std::string err; - //TODO: This should probably be error-checked game_instance_manager::try_get_player_and_game_instance(player_id, player, game_instance_ptr, err); return game_instance_ptr->perform_setup_if_needed(err); diff --git a/source/server/server_network_manager.hpp b/source/server/server_network_manager.hpp index c40282f7d9c1868963dd1b0d362b8cb58b6e6a4b..3af917690390f8acbce5ed9ab2fa0431e30c7342 100644 --- a/source/server/server_network_manager.hpp +++ b/source/server/server_network_manager.hpp @@ -6,7 +6,6 @@ #include <unordered_map> #include <shared_mutex> -// these includes cause problems to compiler #include "sockpp/tcp_socket.h" #include "sockpp/tcp_connector.h" #include "sockpp/tcp_acceptor.h"