示例#1
0
 protected function getDiffEvents(Player $player, $clientVersion)
 {
     $playerStack = $player->getStack();
     $stackVersion = $playerStack->getVersion();
     if ($stackVersion === $clientVersion) {
         return array();
     }
     if (!$playerStack->hasVersion($clientVersion)) {
         throw new OutOfBoundsException(sprintf('ClientUpdater:OutOfBound player=%d requested=%s', $stackVersion, $clientVersion));
     }
     $events = array();
     for ($version = $clientVersion + 1; $version <= $stackVersion; $version++) {
         $events[] = $playerStack->getEvent($version);
     }
     return $events;
 }
示例#2
0
 public function renderGameWatchData(Player $player, $possibleMoves)
 {
     $game = $player->getGame();
     $gameId = $game->getId();
     $color = $player->getColor();
     $opponent = $player->getOpponent();
     $generator = $this->getRouterGenerator();
     $translator = $this->getTranslator();
     $locale = $this->container->get('session')->getLocale();
     $data = array('game' => array('id' => $game->getId(), 'started' => $game->getIsStarted(), 'finished' => $game->getIsFinishedOrAborted(), 'clock' => $game->hasClock(), 'player' => $game->getTurnPlayer()->getColor(), 'turns' => $game->getTurns(), 'last_move' => $game->getLastMove()), 'player' => array('color' => $player->getColor(), 'version' => $player->getStack()->getVersion(), 'spectator' => true, 'unique_id' => uniqid()), 'opponent' => array('color' => $opponent->getColor(), 'ai' => $opponent->getIsAi(), 'active' => true), 'url' => array('sync' => $this->getXhrUrlPrefix() . $generator->generate('lichess_sync', array('l' => $locale, 'id' => $gameId, 'color' => $color, 'version' => 9999999, 'playerFullId' => '')) . '/', 'table' => $generator->generate('lichess_table', array('id' => $gameId, 'color' => $color, 'playerFullId' => '')) . '/', 'opponent' => $generator->generate('lichess_opponent', array('id' => $gameId, 'color' => $color, 'playerFullId' => '')) . '/'), 'i18n' => array('Game Over' => $translator->trans('Game Over'), 'Waiting for opponent' => $translator->trans('Waiting for opponent'), 'Your turn' => $translator->trans('Your turn')), 'possible_moves' => $possibleMoves, 'sync_latency' => $this->container->getParameter('lichess.sync.latency') * 1000, 'animation_delay' => $this->container->getParameter('lichess.animation.delay') * 1000, 'locale' => $this->container->get('session')->getLocale());
     return sprintf('<script type="text/javascript">var lichess_data = %s;</script>', json_encode($data));
 }