예제 #1
0
 /**
  * {@inheritdoc}
  */
 public function save(GameInterface $game)
 {
     if ($game->getId() === null || null === ($persistableGame = $this->loadPersistable($game->getId()))) {
         $persistableGame = $this->createPersistable($game, $this->gameClassName);
         $this->managerRegistry->getManager()->persist($persistableGame);
     }
     $persistableGame->setFinished($game->hasFinished());
     $persistableGame->setFinishedReason($game->getFinishedReason());
     //$persistableGameState = $this->createPersistableState($game, $this->gameStateClassName, $game->getLastMove(true));
     $persistableGameState = $this->createPersistableState($game, $game->getLastState(), $this->gameStateClassName);
     $persistableGame->addState($persistableGameState);
     $this->managerRegistry->getManager()->persist($persistableGameState);
     $this->managerRegistry->getManager()->flush();
     return true;
 }
예제 #2
0
 /**
  * {@inheritdoc}
  */
 public function save(GameInterface $game)
 {
     $id = $game->getId();
     if ($id === null) {
         $id = $this->generateId();
     }
     $filePath = $this->getPathToFile($id);
     $fh = fopen($filePath, 'w+');
     fwrite($fh, json_encode($game));
     fclose($fh);
 }
예제 #3
0
 /**
  * @param GameInterface $game
  * @param string        $class
  *
  * @return PersistableGameInterface
  */
 protected function createPersistable(GameInterface $game, $class)
 {
     $persistable = $this->createPersistableGameObject($class);
     $persistable->setUid($game->getId());
     $persistable->setWhitePlayerName($game->getWhitePlayer()->getName());
     $persistable->setWhitePlayerHuman($game->getWhitePlayer()->isHuman());
     $persistable->setBlackPlayerName($game->getBlackPlayer()->getName());
     $persistable->setBlackPlayerHuman($game->getBlackPlayer()->isHuman());
     $persistable->setFinished($game->hasFinished());
     $persistable->setFinishedReason($game->getFinishedReason());
     return $persistable;
 }
예제 #4
0
 /**
  * @param GameInterface $game
  *
  * @return array
  */
 private function getExpectedGameArray(GameInterface $game)
 {
     return ['uid' => $game->getId(), 'white_player' => $this->getExpectedPlayerArray($game->getWhitePlayer()), 'black_player' => $this->getExpectedPlayerArray($game->getBlackPlayer()), 'finished' => $game->hasFinished(), 'finished_reason' => $game->getFinishedReason(), 'board' => $this->getExpectedBoardArray($game->getBoard()), 'current_color' => $game->getCurrentColor(), 'states' => $this->getExpectedGameStatesArray($game->getStates()->toArray())];
 }