1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
#ifndef header_players
#define header_players
#ifdef WIN32
#pragma warning (disable:4786)
#endif
#include "network.h"
#include <map>
#include <ClanLib/network.h>
class Player;
class Players : public std::multimap<CL_NetComputer, Player *>
{
// Enums:
public:
enum netchannels
{
NETCHANNEL_PLAYERS = NETCHANNELS_PLAYERS
};
enum netmessage_type
{
PLAYER_CREATE,
PLAYER_UPDATE,
PLAYER_DESTROY
};
// Construction:
public:
Players();
~Players();
// Operations:
public:
void add(Player *player);
// Registers new player object on server. Replicates it to all clients in the game.
void remove(const CL_NetComputer &computer);
// Removes a player with the matching computer identification from the game,
// and replicates it to all clients in the game.
bool resurrect(const CL_NetComputer &computer);
// Look for old player that was previously in the game. If found, re-register the
// Player object once connected to it.
// Returns true if successful, false if none was found.
void update(CL_NetSession *session);
// Parse any incoming messages from the player netchannel.
void replicate(CL_NetSession *session, const CL_NetGroup &group);
// Replicate all players to the passed group of computers.
Player *get_id(int playerID);
// Search for player matching player ID.
Player *get(const CL_NetComputer &computer);
// Return a player if it exists.
// Implementation:
private:
std::list<Player *> linkdead_players;
};
#endif
|