summaryrefslogtreecommitdiff
path: root/server/game.cpp
diff options
context:
space:
mode:
authorVegard Storheil Eriksen <zyp@jvnv.net>2010-11-15 12:28:19 +0100
committerVegard Storheil Eriksen <zyp@jvnv.net>2010-11-15 12:28:19 +0100
commitb2527a9eaa7082c50ce6230e79df88edbced9abb (patch)
treeee6ab3ddc487600690f16b48137a97c72c396218 /server/game.cpp
parent2c6d82abe3c82041991066ca84ac067771756818 (diff)
Implement server program flow around GameStart.
Diffstat (limited to 'server/game.cpp')
-rw-r--r--server/game.cpp41
1 files changed, 33 insertions, 8 deletions
diff --git a/server/game.cpp b/server/game.cpp
index 13f2a18..e5a21b6 100644
--- a/server/game.cpp
+++ b/server/game.cpp
@@ -1,16 +1,41 @@
#include "game.h"
+#include <boost/bind.hpp>
+
#include <iostream>
+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 "
- << player_1->nick() << ", "
- << player_2->nick() << ", "
- << player_3->nick() << " and "
- << player_4->nick() << "." << std::endl;
+ << players[0]->nick() << ", "
+ << players[1]->nick() << ", "
+ << players[2]->nick() << " and "
+ << players[3]->nick() << "." << std::endl;
+
+ waiting_players = 4;
- player_1->game_start();
- player_2->game_start();
- player_3->game_start();
- player_4->game_start();
+ 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);
}