diff options
author | Vegard Storheil Eriksen <zyp@jvnv.net> | 2010-12-25 12:54:59 +0100 |
---|---|---|
committer | Vegard Storheil Eriksen <zyp@jvnv.net> | 2010-12-25 12:54:59 +0100 |
commit | fae209a9e93400c3a2072befda9c820634cf9278 (patch) | |
tree | 2d69e2c75fff0e08468c168f773abbc939a2ff03 /server/client.h | |
parent | 94a1189d757f0269ac081ad2d750152e30564986 (diff) |
Diffstat (limited to 'server/client.h')
-rw-r--r-- | server/client.h | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/server/client.h b/server/client.h deleted file mode 100644 index e6cfcc7..0000000 --- a/server/client.h +++ /dev/null @@ -1,132 +0,0 @@ -#ifndef CLIENT_H -#define CLIENT_H - -#include <string> -#include <map> -#include <boost/shared_ptr.hpp> -#include <boost/enable_shared_from_this.hpp> -#include <boost/function.hpp> -#include <boost/asio.hpp> - -#include "connection.h" - -//! Abstract client base class. -class ClientBase { - public: - typedef boost::shared_ptr<ClientBase> p; - - virtual ~ClientBase() {} - - //! Return client's nick. - virtual std::string nick() = 0; - - //! Notify client of a game start. - virtual void game_start(boost::function<void ()> callback, std::vector<std::string> players) = 0; - - //! Notify client of a round start. - virtual void round_start() = 0; - - //! Send round state. - virtual void round_state(const PlayerState& pl_d, const PlayerState& pl_r, const PlayerState& pl_u, const PlayerState& pl_l, const GameState& g, const Actions& a) = 0; - - //! Send round end. - virtual void round_end(Message::RoundEnd::p msg, boost::function<void ()> callback) = 0; - - //! Get action. Upon connection error, last element of expected_actions will be provided. - virtual void get_action(boost::function<void (Action)> callback, Actions expected_actions) = 0; - - virtual void game_end(Message::GameEnd::p msg, boost::function<void ()> callback) = 0; - -}; - -//! Class implementing ClientBase for real clients. -class Client : public ClientBase, public boost::enable_shared_from_this<Client> { - public: - typedef boost::shared_ptr<Client> p; - - //! Construct and return a new Client instance. - static p create(Connection::p c, std::string n); - - //! Check if a Client instance of the user already exists and return it. - static p exists(Message::Login::p login_msg); - - ~Client(); - - private: - uint64_t cookie; - - static std::map<uint64_t, boost::weak_ptr<Client> > client_list; - - Connection::p connection; - - boost::asio::deadline_timer timer; - - std::string nick_; - - Client(Connection::p c, std::string n); - - //! Start communicating. - void start(); - - //! Handle Login-message. - void handle_login(Message::p msg, boost::function<void (Client::p)> login_callback); - - //! Handle LobbyAction-message. - void handle_lobby(Message::p msg, boost::function<void (int)> lobby_callback); - - //! Handle Ready-message. - void handle_ready(Message::p msg, boost::function<void ()> ready_callback); - - //! Handle Action-message. - void handle_action(Message::p msg, boost::function<void (Action)> action_callback, Actions expected_actions); - - public: - //! Inform client of lobby status (available game modes). - void lobby_status(const std::vector<std::string>& game_modes, boost::function<void (int)> callback); - - //! Return client's nick. - virtual std::string nick(); - - //! Notify client of a game start. - virtual void game_start(boost::function<void ()> callback, std::vector<std::string> players); - - //! Notify client of a round start. - virtual void round_start(); - - //! Send round state. - virtual void round_state(const PlayerState& pl_d, const PlayerState& pl_r, const PlayerState& pl_u, const PlayerState& pl_l, const GameState& g, const Actions& a); - - //! Send round end. - virtual void round_end(Message::RoundEnd::p msg, boost::function<void ()> callback); - - //! Get action. Upon connection error, last element of expected_actions will be provided. - virtual void get_action(boost::function<void (Action)> callback, Actions expected_actions); - - //! Reconnect a player. - virtual void reconnect(Connection::p c); - - virtual void game_end(Message::GameEnd::p msg, boost::function<void ()> callback); -}; - -typedef std::vector<Client> Clients; - -class ClientDumb : public ClientBase { - public: - virtual unsigned int id(); - - virtual std::string nick(); - - virtual void game_start(boost::function<void ()> callback, std::vector<std::string> players); - - virtual void round_start(); - - virtual void round_state(const PlayerState& pl_d, const PlayerState& pl_r, const PlayerState& pl_u, const PlayerState& pl_l, const GameState& g, const Actions& a); - - virtual void round_end(Message::RoundEnd::p msg, boost::function<void ()> callback); - - virtual void get_action(boost::function<void (Action)> callback, Actions expected_actions); - - virtual void game_end(Message::GameEnd::p msg, boost::function<void ()> callback); -}; - -#endif |