/** * {@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; }
/** * {@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); }
/** * @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; }
/** * @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())]; }