/** * @param PersistableGameStateInterface $persistableGameState * * @return GameState */ protected function createFromPersistableState(PersistableGameStateInterface $persistableGameState) { $gameState = new GameState(); if ($pieceData = $persistableGameState->getPiece()) { $piece = PieceFactory::create($pieceData['type'], $pieceData['color'], array_key_exists('id', $pieceData) ? $pieceData['id'] : null); $gameState->setPiece($piece); $gameState->setColor($persistableGameState->getColor()); $gameState->setFrom($persistableGameState->getFrom()); $gameState->setTo($persistableGameState->getTo()); $gameState->setMoveType($persistableGameState->getMoveType()); if ($captureData = $persistableGameState->getCapture()) { $capturingPiece = PieceFactory::create($captureData['capturing_type'], $captureData['capturing_color'], $captureData['capturing_id']); $capturedPiece = PieceFactory::create($captureData['captured_type'], $captureData['captured_color'], $captureData['captured_id']); $capture = new Capture($capturingPiece, $capturedPiece, $captureData['position']); $gameState->setCapture($capture); } } return $gameState; }
/** * {@inheritdoc} * * @return $this */ public function addState(PersistableGameStateInterface $state) { $state->setGame($this); $this->states->add($state); return $this; }