示例#1
0
 /**
  * @TODO бонусы и штрафы за коды
  * @param Game $game
  * @param Team $team
  * @return array
  */
 public function getTotalTime(Game $game, Team $team)
 {
     $summaryTime = 0;
     $summaryBonus = 0;
     $summaryPenalty = 0;
     $sequence = $this->manager->getRepository('sdGameBundle:TeamTaskSequence')->findBy(['team' => $team, 'completeType' => [TeamTaskSequence::COMPLETE_CODE, TeamTaskSequence::COMPLETE_MANUAL, TeamTaskSequence::COMPLETE_TIMEOUT], 'game' => $game]);
     foreach ($sequence as $teamTask) {
         switch ($teamTask->getCompleteType()) {
             /** @noinspection PhpMissingBreakStatementInspection */
             case TeamTaskSequence::COMPLETE_TIMEOUT:
                 $summaryPenalty += $teamTask->getTask()->getPenaltyTime() * 60;
             case TeamTaskSequence::COMPLETE_CODE:
             case TeamTaskSequence::COMPLETE_MANUAL:
                 $summaryTime += $teamTask->getCompleted()->getTimestamp() - $teamTask->getStarted()->getTimestamp();
                 break;
             default:
                 continue;
         }
     }
     foreach ($game->getTasks() as $task) {
         if ($task->getType() === Task::TYPE_FREE && $this->isLevelCompleted($task, $team)) {
             $summaryBonus += $task->getBonusTime() * 60;
         }
     }
     return ['time' => $summaryTime, 'bonus' => $summaryBonus, 'penalty' => $summaryPenalty];
 }
示例#2
0
 /**
  * @param Game $object
  */
 public function preUpdate($object)
 {
     $object->setTasks($object->getTasks());
 }