/** * @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; }
/** * */ 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()); }
/** * 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); }
/** * @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)); }
/** * @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); }
/** * @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); }
/** * @param Game $game * @return bool */ public function canAbort(Game $game) : bool { $this->chessGameService->setPgn($game->getPgn()); return count($this->chessGameService->getMoveList()) < 3; }