/**
  * @return Game
  */
 private function createGame()
 {
     $whitePlayer = PlayerFactory::create(Color::WHITE, 'White', true);
     $blackPlayer = PlayerFactory::create(Color::BLACK, 'Black', true);
     $board = BoardFactory::create();
     $gameState = $this->createGameState();
     $gameState->setFrom(SquareInterface::POSITION_E2);
     $gameState->setTo(SquareInterface::POSITION_E4);
     $gameState->setColor(Color::WHITE);
     $gameState->setMoveType(MoveInterface::TYPE_NORMAL);
     $gameState->setPiece(PieceFactory::create(PieceInterface::TYPE_PAWN, Color::WHITE));
     $game = new Game($whitePlayer, $blackPlayer, $board);
     $game->addState($gameState);
     return $game;
 }
 /**
  * @param PersistableGameInterface $persistableGame
  *
  * @return Game
  */
 protected function createFromPersistable(PersistableGameInterface $persistableGame)
 {
     $whitePlayer = new Player(Color::WHITE, $persistableGame->getWhitePlayerName(), $persistableGame->isWhitePlayerHuman());
     $blackPlayer = new Player(Color::BLACK, $persistableGame->getBlackPlayerName(), $persistableGame->isBlackPlayerHuman());
     $squares = [];
     if (null !== ($lastState = $persistableGame->getLastState())) {
         foreach ($lastState->getSquares() as $squareData) {
             $squares[] = SquareFactory::create($squareData['position'], $squareData['piece']);
         }
     }
     $board = BoardFactory::create($squares);
     $game = new Game($whitePlayer, $blackPlayer, $board, $persistableGame->getUid());
     foreach ($persistableGame->getStates() as $persistableGameState) {
         $game->addState($this->createFromPersistableState($persistableGameState));
     }
     $game->setFinished($persistableGame->hasFinished());
     $game->setFinishedReason($persistableGame->getFinishedReason());
     if ($lastState !== null) {
         $game->setCurrentColor($lastState->getColor() === Color::WHITE ? Color::BLACK : Color::WHITE);
     }
     return $game;
 }