updated player object

This commit is contained in:
kremsy
2014-01-23 16:15:41 +01:00
committed by Steffen Schröder
parent bb28e72f79
commit 8a193fe7ee
2 changed files with 129 additions and 35 deletions

View File

@ -24,14 +24,41 @@ class Player {
public $allies = array();
public $clubLink = '';
public $teamId = -1;
public $isSpectator = false;
public $isOfficial = false;
public $isReferee = false;
public $ladderScore = -1.;
public $ladderRank = -1;
public $ladderStats = null;
public $joinTime = -1;
public $ipAddress = '';
public $maniaPlanetPlayDays = 0;
public $isConnected = true;
public $clientVersion = '';
public $downloadRate = -1;
public $uploadRate = -1;
public $skins = null;
public $stateUpdateLatency; //TODO format?
public $stateUpdatePeriod; //TODO format?
public $latestNetworkActivity; //TODO format?
public $packetLossRate; //TODO format?
public $maniaPlanetPlayDays = -1;
//Flags details
public $forcedSpectatorState = 0;
public $isReferee = false;
public $isPodiumReady = false;
public $isUsingStereoscopy = false;
public $isManagedByAnOtherServer = false;
public $isServer = false;
public $hasPlayerSlot = false;
public $isBroadcasting = false;
public $hasJoinedGame = false;
//SpectatorStatus details
public $isSpectator = false;
public $isTemporarySpectator = false;
public $isPureSpectator = false;
public $autoTarget = false;
public $currentTargetId = 0;
/**
* Construct a player from XmlRpc data
@ -40,28 +67,53 @@ class Player {
*/
public function __construct($mpPlayer) {
if(!$mpPlayer) {
$this->isConnected = false;
return;
}
$rpcInfos = (array)$mpPlayer; //Temporary
$this->pid = $mpPlayer->playerId;
$this->login = $mpPlayer->login;
$this->nickname = Formatter::stripDirtyCodes($mpPlayer->nickName);
$this->path = $mpPlayer->path;
$this->language = $mpPlayer->language;
$this->avatar = $mpPlayer->avatar['FileName'];
$this->allies = $mpPlayer->allies;
$this->clubLink = $mpPlayer->clubLink;
$this->teamId = $mpPlayer->teamId;
$this->isOfficial = $mpPlayer->isInOfficialMode;
$this->ladderScore = $mpPlayer->ladderStats['PlayerRankings'][0]['Score'];
$this->ladderRank = $mpPlayer->ladderStats['PlayerRankings'][0]['Ranking'];
$this->ladderStats = $mpPlayer->ladderStats;
$this->maniaPlanetPlayDays = $mpPlayer->hoursSinceZoneInscription / 24; //TODO change
$this->ipAddress = $mpPlayer->iPAddress;
$this->clientVersion = $mpPlayer->clientVersion;
$this->downloadRate = $mpPlayer->downloadRate;
$this->uploadRate = $mpPlayer->uploadRate;
$this->skins = $mpPlayer->skins;
$this->stateUpdateLatency = $mpPlayer->stateUpdateLatency;
$this->stateUpdatePeriod = $mpPlayer->stateUpdatePeriod;
$this->latestNetworkActivity = $mpPlayer->latestNetworkActivity;
$this->packetLossRate = $mpPlayer->packetLossRate;
$this->pid = $mpPlayer->playerId;
$this->login = $mpPlayer->login;
$this->nickname = Formatter::stripDirtyCodes($mpPlayer->nickName);
$this->path = $mpPlayer->path;
$this->language = $mpPlayer->language;
$this->avatar = $mpPlayer->avatar['FileName'];
$this->allies = $mpPlayer->allies;
$this->clubLink = $mpPlayer->clubLink;
$this->teamId = $mpPlayer->teamId;
$this->isSpectator = $mpPlayer->isSpectator;
$this->isOfficial = $mpPlayer->isInOfficialMode;
$this->isReferee = $mpPlayer->isReferee;
$this->ladderScore = $mpPlayer->ladderStats['PlayerRankings'][0]['Score'];
$this->ladderRank = $mpPlayer->ladderStats['PlayerRankings'][0]['Ranking'];
$this->maniaPlanetPlayDays = $mpPlayer->hoursSinceZoneInscription / 24;
$this->ipAddress = $mpPlayer->iPAddress;
//Flag Details
$this->forcedSpectatorState = $mpPlayer->forceSpectator;
$this->isReferee = $mpPlayer->isReferee;
$this->isPodiumReady = $mpPlayer->isPodiumReady;
$this->isUsingStereoscopy = $mpPlayer->isUsingStereoscopy;
$this->isServer = $mpPlayer->isServer;
$this->isManagedByAnOtherServer = $mpPlayer->isManagedByAnOtherServer;
$this->hasPlayerSlot = $mpPlayer->hasPlayerSlot;
$this->hasJoinedGame = $mpPlayer->hasJoinedGame;
$this->isBroadcasting = $mpPlayer->isBroadcasting;
//Spectator Status
$this->isSpectator = $mpPlayer->spectator;
$this->isTemporarySpectator = $mpPlayer->temporarySpectator;
$this->isPureSpectator = $mpPlayer->pureSpectator;
$this->autoTarget = $mpPlayer->autoTarget;
$this->currentTargetId = $mpPlayer->currentTargetId;
$this->joinTime = time();
@ -127,4 +179,37 @@ class Player {
}
return $this->path;
}
/**
* Updates the Flags of the Player
*
* @param $flags
*/
public function updatePlayerFlags($flags) {
//Detail flags
$this->forcedSpectatorState = $flags % 10; // 0, 1 or 2
$this->isReferee = (bool)(intval($flags / 10) % 10);
$this->isPodiumReady = (bool)(intval($flags / 100) % 10);
$this->isUsingStereoscopy = (bool)(intval($flags / 1000) % 10);
$this->isManagedByAnOtherServer = (bool)(intval($flags / 10000) % 10);
$this->isServer = (bool)(intval($flags / 100000) % 10);
$this->hasPlayerSlot = (bool)(intval($flags / 1000000) % 10);
$this->isBroadcasting = (bool)(intval($flags / 10000000) % 10);
$this->hasJoinedGame = (bool)(intval($flags / 100000000) % 10);
}
/**
* Updates the Spectator Status of the player
*
* @param $spectatorStatus
*/
public function updateSpectatorStatus($spectatorStatus) {
//Details spectatorStatus
$this->isSpectator = (bool)($spectatorStatus % 10);
$this->isTemporarySpectator = (bool)(intval($spectatorStatus / 10) % 10);
$this->isPureSpectator = (bool)(intval($spectatorStatus / 100) % 10);
$this->autoTarget = (bool)(intval($spectatorStatus / 1000) % 10);
$this->currentTargetId = intval($spectatorStatus / 10000);
}
}