write some mode code...
#ifndef NETWORKSERVER_HH
#define NETWORKSERVER_HH
#include "Network.hh"
#include "GameState.hh"
#include "NetworkTCP.hh"
#include "NetworkUDP.hh"
#include <list>
#include <map>
#include <ClanLib/core.h>
// forward-declare
class NetworkServerPlayer;
class NetworkServer : public NetworkCore {
friend class NetworkServerPlayer;
private:
NetworkTCPServer tcp_server;
NetworkUDP udp;
uint16_t pid_pool;
std::map<NetworkAddress, NetworkServerPlayer*> players;
public:
NetworkServer (GameState &state, const NetworkAddress &listen_addr);
private:
void on_client (NetworkTCPTransport *client);
void on_packet_udp (const NetworkPacket &pkt, const NetworkAddress &src);
};
class NetworkServerPlayer : public RemotePlayer {
private:
NetworkServer &server;
NetworkTCPTransport *tcp;
CL_SlotContainer slots;
uint16_t pid;
public:
NetworkServerPlayer (NetworkServer &server, NetworkTCPTransport *tcp, uint16_t pid);
private:
void on_disconnected (void);
void on_packet_tcp (const NetworkPacket &pkt);
void on_move (const NetworkPacket &pkt);
void send_position_update (void);
};
#endif