#include "game.h" #include #include Game::p Game::create(Player::p player_1, Player::p player_2, Player::p player_3, Player::p player_4) { Game::p p(new Game(player_1, player_2, player_3, player_4)); p->start(); return p; } Game::Game(Player::p player_1, Player::p player_2, Player::p player_3, Player::p player_4) { players.push_back(player_1); players.push_back(player_2); players.push_back(player_3); players.push_back(player_4); } void Game::handle_ready() { if(--waiting_players) { return; } std::cout << "All ready!" << std::endl; } void Game::start() { std::cout << "Started a game with " << players[0]->nick() << ", " << players[1]->nick() << ", " << players[2]->nick() << " and " << players[3]->nick() << "." << std::endl; waiting_players = 4; players[0]->game_start(boost::bind(&Game::handle_ready, shared_from_this()), players); players[1]->game_start(boost::bind(&Game::handle_ready, shared_from_this()), players); players[2]->game_start(boost::bind(&Game::handle_ready, shared_from_this()), players); players[3]->game_start(boost::bind(&Game::handle_ready, shared_from_this()), players); }