src/proto2/NetworkServer.hh
author terom
Thu, 20 Nov 2008 19:25:56 +0000
branchno-netsession
changeset 36 785d220fc6b7
parent 32 2ff929186c90
permissions -rw-r--r--
...
#ifndef NETWORKSERVER_HH
#define NETWORKSERVER_HH

#include "Network.hh"
#include "GameState.hh"
#include "NetworkSession.hh"
#include "NetworkObject.hh"

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

// forward-declare
class NetworkServerPlayer;

class NetworkServer : public NetworkCore {
    friend class NetworkServerPlayer;

    protected:
        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);

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

        void send_position_update (void);
};

#endif