Esempio n. 1
0
 /**
  * @param Game $game
  * @return EloGame
  */
 private function getEloGame(Game $game)
 {
     $eloGame = new EloGame();
     $whiteUser = $game->getUserWhite();
     $blackUser = $game->getUserBlack();
     $eloGame->setWhiteElo($whiteUser->getRating())->setBlackElo($blackUser->getRating())->setWhiteGames($whiteUser->getRateGamesCount())->setBlackGames($blackUser->getRateGamesCount())->setWhiteResult($game->getResultWhite())->setBlackResult($game->getResultBlack());
     return $eloGame;
 }
Esempio n. 2
0
 /**
  *
  */
 public function testRatingCalculate()
 {
     $game = new Game();
     $userA = $this->container->get('core.handler.user')->getRepository()->findOneByLogin('Stas');
     $userB = $this->container->get('core.handler.user')->getRepository()->findOneByLogin('TestLogin');
     $game->setUserWhite($userA)->setUserBlack($userB)->setResultWhite(1)->setResultBlack(0)->setUserToMove($userA)->setStatus(GameStatus::END)->setRate(true);
     $this->container->get('core.handler.game')->changeGameStatus($game, GameStatus::END);
     self::assertEquals(2211, $game->getUserWhite()->getRating());
     self::assertEquals(2232, $game->getUserBlack()->getRating());
 }
Esempio n. 3
0
 /**
  * Creates a new game
  * @param Request $request
  * @return Response
  */
 public function postAction(Request $request)
 {
     $userId = $this->requireAuthentificatedUser($request);
     $data = $this->getParsedRequestContent($request);
     if (strlen($data['name']) < 2) {
         throw new BadRequestHttpException('The length of the game name to be created is less then 2');
     }
     if ($this->em->getRepository('CoreBundle:Game')->findBy(['name' => $data['name'], 'userId' => $userId])) {
         return new Response('You allready have a game with this name.');
     }
     $user = $this->getInternalUser($request);
     $game = new Game();
     $game->setName($data['name']);
     $game->setUserId($userId);
     $game->setUser($user);
     $game->setAmountOfSaveCodes($data['amountOfSaveCodes']);
     $this->em->persist($game);
     $this->em->flush();
     return new Response(null, 204);
 }
Esempio n. 4
0
 /**
  * @param Game $game
  * @param $status
  */
 public function changeGameStatus(Game $game, $status)
 {
     $this->container->get("logger")->debug(__METHOD__ . ' ' . $game->getId() . ' ' . $status);
     $game->setStatus($status);
     $this->container->get("event_dispatcher")->dispatch(GameEvents::CHANGE_STATUS_BEFORE, (new GameEvent())->setGame($game));
     $this->saveEntity($game);
     $this->container->get("event_dispatcher")->dispatch(GameEvents::CHANGE_STATUS_AFTER, (new GameEvent())->setGame($game));
 }
Esempio n. 5
0
 /**
  * @param Game $game
  * @param User $user
  * @param $rateGamesCount
  */
 private function updateRateTotals(Game $game, User $user, &$rateGamesCount = null)
 {
     if (!$game->isRate()) {
         return;
     }
     $user->setRateGamesCount(is_null($rateGamesCount) ? $user->getRateGamesCount() + 1 : ++$rateGamesCount);
 }
Esempio n. 6
0
 /**
  * @param Game $game
  * @return Pgn
  */
 private function buildPgnForSaver(Game $game) : Pgn
 {
     $headers = ['Event' => 'Game #' . $game->getId(), 'Site' => $this->container->getParameter('app_core_site_host'), 'White' => $game->getUserWhite(), 'Black' => $game->getUserBlack(), 'Result' => $game->getResultWhite() == 0.5 ? '1/2-1/2' : $game->getResultWhite() . '-' . $game->getResultBlack(), 'Date' => $game->getTimeLastMove()->format('Y.m.d')];
     if ($game->getTournamentGame()) {
         $headers['Event'] = $game->getTournamentGame()->getTournament()->getName();
         $headers['Round'] = $game->getTournamentGame()->getRound();
     }
     return (new Pgn())->setPgnString($game->getPgn())->setHeaders($headers);
 }
Esempio n. 7
0
 /**
  * @param Game $game
  * @return bool
  */
 public function canAbort(Game $game) : bool
 {
     $this->chessGameService->setPgn($game->getPgn());
     return count($this->chessGameService->getMoveList()) < 3;
 }