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 68 69 70 71 72 73 74 75 76 77
|
#ifdef WIN32
#pragma warning (disable:4355)
#pragma warning (disable:4786)
#endif
#include "lobby_players.h"
#include "lobby_player.h"
/////////////////////////////////////////////////////////////////////////////
// LobbyPlayers Construction:
LobbyPlayers::LobbyPlayers()
{
}
LobbyPlayers::~LobbyPlayers()
{
std::map<CL_NetComputer, LobbyPlayer *>::iterator it;
for (it = begin(); it != end(); it++)
delete (*it).second;
std::list<LobbyPlayer *>::iterator itl;
for (itl = linkdead_players.begin(); itl != linkdead_players.end(); itl++)
delete (*itl);
}
/////////////////////////////////////////////////////////////////////////////
// LobbyPlayers Operations:
void LobbyPlayers::add(LobbyPlayer *player)
{
insert(std::pair<CL_NetComputer, LobbyPlayer *>(player->computer, player));
}
void LobbyPlayers::remove(const CL_NetComputer &computer)
{
std::map<CL_NetComputer, LobbyPlayer *>::iterator it;
it = find(computer);
if(it != end())
{
erase(it);
linkdead_players.push_back((*it).second);
}
}
bool LobbyPlayers::resurrect(const CL_NetComputer &computer)
{
std::list<LobbyPlayer *>::iterator it;
for (it = linkdead_players.begin(); it != linkdead_players.end(); it++)
{
LobbyPlayer *player = *it;
if (player->computer == computer)
{
linkdead_players.erase(it);
add(player);
return true;
}
}
return false;
}
LobbyPlayer *LobbyPlayers::get(const CL_NetComputer &computer)
{
std::map<CL_NetComputer, LobbyPlayer *>::iterator it;
it = find(computer);
if(it != end())
return (*it).second;
return NULL;
}
void LobbyPlayers::update()
{
// todo: check for player netmsg.
}
|