src/Network/Server.hh
author terom
Thu, 04 Dec 2008 21:59:23 +0000
changeset 200 2dbf40661580
parent 187 f41f894213ca
child 203 3ec7ab40755f
permissions -rw-r--r--
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
#ifndef NETWORKSERVER_HH
#define NETWORKSERVER_HH

#include "../GameState.hh"
#include "Session.hh"
#include "Object.hh"

#include <list>
#include <map>
#include <ClanLib/core.h>

// forward-declare
class NetworkServerPlayer;

class NetworkServer {
    friend class NetworkServerPlayer;

    protected:
        GameState &state;
        CL_SlotContainer slots;

        NetworkSession netsession;
        NetworkObject_ServerController netobjs;
        std::list<NetworkServerPlayer *> players;

    public:
        NetworkServer (GameState &state, const NetworkAddress &listen_addr);
    
    protected:
        void handle_disconnect (NetworkServerPlayer *player);

    private:
        void on_node_connected (NetworkNode *node);
};

class NetworkServerPlayer : public RemotePlayer {
    private:
        NetworkServer &server;
        NetworkObject_Server obj;
        NetworkNode *node;

        CL_SlotContainer slots;
        
    public:
        NetworkServerPlayer (NetworkServer &server, NetworkNode *node);

        virtual void handleDig (Vector position, float radius);

    private:
        void on_disconnected (void);
        void on_move (NetworkNode *node, NetworkPacketInput &pkt);

        void send_position_update (void);
};

#endif