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
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#include <cstdlib>
#include "PlayerBase.h"
#include "System/StringHash.h"
#include "System/creg/STL_Map.h"
CR_BIND_DERIVED(PlayerBase,TeamController, )
CR_REG_METADATA(PlayerBase, (
CR_MEMBER(rank),
CR_MEMBER(countryCode),
CR_MEMBER(spectator),
CR_MEMBER(isFromDemo),
CR_MEMBER(readyToStart),
CR_MEMBER(desynced),
CR_MEMBER(cpuUsage),
CR_MEMBER(customValues)
))
PlayerBase::PlayerBase() {
// NB: sync-safe so long as PlayerHandler destroys all players on reload
customValues.reserve(8);
}
void PlayerBase::SetValue(const std::string& key, const std::string& value)
{
switch (hashString(key.c_str())) {
case hashString("team"): {
team = std::atoi(value.c_str());
} break;
case hashString("name"): {
name = value;
} break;
case hashString("rank"): {
rank = std::atoi(value.c_str());
} break;
case hashString("countrycode"): {
countryCode = value;
} break;
case hashString("spectator"): {
spectator = static_cast<bool>(std::atoi(value.c_str()));
} break;
case hashString("isfromdemo"): {
isFromDemo = static_cast<bool>(std::atoi(value.c_str()));
} break;
default: {
customValues[key] = value;
} break;
}
}
|