示例#1
0
 /**
  * @param GameEvent $gameEvent
  */
 public function onGameChangeStatus(GameEvent $gameEvent)
 {
     if ($gameEvent->getGame()->getStatus() != GameStatus::END) {
         return;
     }
     try {
         $tournament = $this->getTournamentHandler()->getTournamentForGame($gameEvent->getGame());
     } catch (TournamentGameNotFoundException $e) {
         return;
     }
     if (!$this->getTournamentHandler()->isCurrentRoundFinished($tournament)) {
         return;
     }
     if ($tournament->getStatus() == TournamentStatus::END()) {
         // TODO: send message to users about finishing tournament
         return;
     }
     try {
         $this->assertEventNotExists($tournament);
         $this->addNextRoundToSchedule($tournament);
     } catch (EventAlreadyFoundException $e) {
         $this->container->get("logger")->error("Event is already found. Game #" . $gameEvent->getGame()->getId());
     }
 }
示例#2
0
 /**
  * @param TournamentContainer $tournamentContainer
  */
 public function onTournamentStart(TournamentContainer $tournamentContainer)
 {
     $tournament = $tournamentContainer->getTournament();
     $this->removeOfflinePlayers($tournament);
     $this->changeTournamentStatus($tournament, TournamentStatus::CURRENT());
     $this->calculateRounds($tournament);
     $this->manager->flush($tournament);
 }