src/proto2/Network.hh
author saiam
Thu, 20 Nov 2008 22:45:10 +0000
changeset 86 ed31ece6f340
parent 66 1415a2d45686
child 89 825c4613e087
permissions -rw-r--r--
Segfault <3 (mik? oli odotettavaa)
#ifndef NETWORK_HH
#define NETWORK_HH

#include "NetworkConfig.hh"
#include "GameState.hh"

#include <ClanLib/network.h>

const int32_t COORDINATE_MAX = 1 << 30;

class NetworkCore {
    protected:
        GameState &state;

        CL_SlotContainer slots;

        CL_NetSession netsession;

        CL_NetObject_Controller netobjs;
        
        // constructor
        NetworkCore (GameState &state) : state(state), netsession(NETWORK_APP_NAME), netobjs(&netsession, NETWORK_NETOBJ_CHAN) { }


};

// XXX: util methods
void writeVector (CL_NetPacket &pkt, const Vector &vec);
Vector readVector (CL_NetPacket &pkt);

enum NetworkMessage {
    NETMSG_PACKET_INVALID   = 0x00,

    /*
     * You have joined the game:
     *
     *  Vector      initial_position
     */
    NETMSG_SERVER_HELLO = 0x0100,

    /*
     * New client has connected to server:
     *  
     *  Vector      initial_position
     */
    NETMSG_PLAYER_JOIN  = 0x0101,

    /*
     * Client has left server:
     *
     */
    NETMSG_PLAYER_QUIT  = 0x0102,

    /*
     * Client has moved
     *
     *  Vector      impulse_force
     *  uint16_t    impulse_ms
     */
    NETMSG_CLIENT_MOVE  = 0x0201,
    
    /*
     * Initial player info
     *
     *  Vector      initial_position
     */
    NETMSG_PLAYER_INFO  = 0x0300,

    /*
     * Player position update
     *
     * Vector   position
     * Vector   velocity
     */
    NETMSG_PLAYER_POSITION  = 0x0301,
};

#endif