Exemple #1
0
 public function getGametypeAttribute($value)
 {
     return Gametype::getGametype($value);
 }
Exemple #2
0
 /**
  * @param $entry
  * @param $game
  * @param $pvp
  * @param $regular
  */
 private function gamePlayerSetup($data, $entry, &$game, $pvp, $regular = true)
 {
     $player = new GamePlayer();
     $player->game_id = $game->instanceId;
     $player->membershipId = $entry['player']['destinyUserInfo']['membershipId'];
     $player->account_id = Account::getAccountIdViaDestiny($player->membershipId);
     // check if we have player
     if ($this->checkCacheForGamertag($entry['player']['destinyUserInfo']['displayName']) == false && $regular) {
         Bus::dispatch(new UpdateGamertag($entry['player']['destinyUserInfo']['displayName'], $entry['player']['destinyUserInfo']['membershipType']));
         if ($player->account_id == null) {
             // we are re-running this, because an Account doesnt exist yet so the previous check is NULL
             // this is technically a bug-fix for a RACE condition, where we cant create a Player
             // without an AccountId which doesn't exist till after the Event is dispatched.
             $player->account_id = Account::getAccountIdViaDestiny($player->membershipId);
         }
     }
     $player->characterId = $entry['characterId'];
     $player->level = $entry['player']['characterLevel'];
     $player->class = $entry['player']['characterClass'];
     $player->emblem = $entry['player']['destinyUserInfo']['iconPath'];
     $player->assists = $entry['values']['assists']['basic']['value'];
     $player->deaths = $entry['values']['deaths']['basic']['value'];
     $player->kills = $entry['values']['kills']['basic']['value'];
     $player->completed = boolval($entry['values']['completed']['basic']['value']);
     // PVP games don't seem to have secondsPlayed or averageLifespan
     if (isset($entry['values']['secondsPlayed']['basic']['value'])) {
         $player->secondsPlayed = $entry['values']['secondsPlayed']['basic']['value'];
     }
     if (isset($entry['extended']['values']['averageLifespan']['basic']['value'])) {
         $player->averageLifespan = $entry['extended']['values']['averageLifespan']['basic']['value'];
     }
     if (isset($entry['values']['score']['basic']['value'])) {
         $player->score = $entry['values']['score']['basic']['value'];
     }
     if (isset($entry['values']['standing']['basic']['values'])) {
         $player->standing = $entry['values']['standing']['basic']['value'];
     }
     // Check for team or rumble
     if (isset($entry['values']['team']['basic']['value'])) {
         $player->team = $entry['values']['team']['basic']['value'];
     }
     // Check for revives given/received
     if (isset($entry['extended']['values']['resurrectionsPerformed']['basic']['value'])) {
         $player->revives_given = $entry['extended']['values']['resurrectionsPerformed']['basic']['value'];
     }
     if (isset($entry['extended']['values']['resurrectionsReceived']['basic']['value'])) {
         $player->revives_taken = $entry['extended']['values']['resurrectionsReceived']['basic']['value'];
     }
     if (isset($entry['extended']['values']['medalsActivityCompleteVictoryMercy']['basic']['value'])) {
         $game->mercy = true;
         $game->save();
     }
     // Don't save if 0/0
     if ($player->score == 0 && $player->deaths == 0 && $player->kills == 0) {
         return;
     } else {
         $player->save();
         $duration = $entry['values']['activityDurationSeconds']['basic']['value'];
         if (isset($data['Response']['data']['activityDetails']['mode']) && Gametype::isPVP($data['Response']['data']['activityDetails']['mode'])) {
             // We need to figure out which "team" is PandaLove via checking the players
             if ($player->account->isPandaLove()) {
                 if ($entry['standing'] == 0) {
                     $pvp->pandaId = $pvp->winnerId;
                 } else {
                     $pvp->pandaId = $pvp->loserId;
                 }
                 $pvp->save();
             }
         }
     }
     return isset($duration) ? $duration : null;
 }