summaryrefslogtreecommitdiff
path: root/server/lobby.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'server/lobby.cpp')
-rw-r--r--server/lobby.cpp81
1 files changed, 0 insertions, 81 deletions
diff --git a/server/lobby.cpp b/server/lobby.cpp
deleted file mode 100644
index 9fb769e..0000000
--- a/server/lobby.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-#include "lobby.h"
-
-#include <boost/bind.hpp>
-
-#include <iostream>
-
-#include "game.h"
-
-void Lobby::handle_connect(Connection::p connection) {
- // Send Hello.
- connection->send(make_shared<Message::Hello>("aotenjoud git"));
-
- // Wait for Login.
- connection->recv(boost::bind(&Lobby::handle_login, this, connection, _1));
-
- // Get another connection.
- server.get_connection(boost::bind(&Lobby::handle_connect, this, _1));
-}
-
-void Lobby::handle_login(Connection::p connection, Message::p msg) {
- if(msg->type != Message::Types::Login) {
- return;
- }
-
- Message::Login::p login_msg = dynamic_pointer_cast<Message::Login>(msg);
-
- Client::p client;
-
- // Check if this is a reconnection attempt and whether a reconnection is possible.
- if(login_msg->cookie && (client = Client::exists(login_msg))) {
- client->reconnect(connection);
- return;
- }
-
- // Validate nick.
- if(login_msg->nick.size() == 0) {
- connection->send(make_shared<Message::LoginResponse>(Message::LoginResponse::Invalid));
- connection->recv(boost::bind(&Lobby::handle_login, this, connection, _1));
- return;
- }
-
- // Create a new client.
- client = Client::create(connection, login_msg->nick);
-
- std::vector<std::string> 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<ClientDumb>(), make_shared<ClientDumb>(), make_shared<ClientDumb>());
- } 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();
-}