#include "lobby.h" #include #include #include "game.h" void Lobby::handle_connect(Connection::p connection) { // Create player. Client::create(connection, boost::bind(&Lobby::handle_login, this, _1)); // Get another connection. server.get_connection(boost::bind(&Lobby::handle_connect, this, _1)); } void Lobby::handle_login(Client::p client) { std::cout << "Client " << client->nick() << " entered the lobby." << std::endl; if(0) {//client->id != 0 //We check if player is in an ongoing game? } else { std::vector game_modes; game_modes.push_back("1p test mode"); game_modes.push_back("4p test mode"); client->lobby_status(game_modes, boost::bind(&Lobby::handle_action, this, client, _1)); } } void Lobby::handle_action(Client::p client, int game_mode) { std::cout << "Client " << client->nick() << " joined a game." << std::endl; switch(game_mode) { case 0: { Game::create(client, make_shared(), make_shared(), make_shared()); } break; case 1: { if(waiting.size() >= 3) { Game::create(waiting[0], waiting[1], waiting[2], client); waiting.clear(); } else { waiting.push_back(client); } } break; } } Lobby::Lobby() : server(io_service) { } void Lobby::run() { // Get a connection. server.get_connection(boost::bind(&Lobby::handle_connect, this, _1)); io_service.run(); }