private void checkLost(Game gameByGameId) { for (Player player : gameByGameId.getPlayers()) { if (player.getColonies().size() == 0) { gameByGameId.setLoserPlayerId(player.getPlayerId()); } } }
@Override public void endTurn(Integer playerID) { Player player = playerRepository.getPlayerByPlayerId(playerID); Game game = player.getGame(); if (!player.isTurnEnded()) { int commandPoints = player.getCommandPoints(); player.setCommandPoints(commandPoints + COMMANDPOINTS_PER_TURN); player.setTurnEnded(true); boolean allTurnsEnded = true; List<Player> players = game.getPlayers(); for (Player p : players) { if (!p.isTurnEnded()) { allTurnsEnded = false; } } if (allTurnsEnded) { for (Player p : players) { p.setTurnEnded(false); } } } else { throw new SpaceCrackNotAcceptableException("Turn is already ended"); } gameSynchronizer.updateGame(game); }
@Override public void acceptGameInvite(int gameId) { Game game = getGameByGameId(gameId); for (Player p : game.getPlayers()) { p.setRequestAccepted(true); } gameSynchronizer.updateGame(game); }
@Override public int createGame(Profile userProfile, String gameName, Profile opponentProfile) { Game game = new Game(); Player player1 = new Player(); Player player2 = new Player(); userProfile.addPlayer(player1); opponentProfile.addPlayer(player2); player1.setCommandPoints(START_COMMAND_POINTS); player2.setCommandPoints(START_COMMAND_POINTS); player1.setRequestAccepted(true); player2.setRequestAccepted(false); player1.setGame(game); player2.setGame(game); Planet planetA = planetRepository.getPlanetByName("a"); Planet planetA3 = planetRepository.getPlanetByName("a3"); Ship player1StartingShip = new Ship(planetA); Ship player2StartingShip = new Ship(planetA3); player1StartingShip.setStrength(NEW_SHIP_STRENGTH); player2StartingShip.setStrength(NEW_SHIP_STRENGTH); player1StartingShip.setPlayer(player1); player2StartingShip.setPlayer(player2); Colony player1StartingColony = new Colony(planetA); Colony player2StartingColony = new Colony(planetA3); player1StartingColony.setStrength(NEW_COLONY_STRENGHT); player2StartingColony.setStrength(NEW_COLONY_STRENGHT); player1StartingColony.setPlayer(player1); player2StartingColony.setPlayer(player2); game.setName(gameName); gameRepository.createOrUpdateGame(game); return game.getGameId(); }
@Override public Player getActivePlayer(User user, Game game) { for (Player p : user.getProfile().getPlayers()) { for (Player gamePlayer : game.getPlayers()) { if (gamePlayer.getPlayerId() == p.getPlayerId()) { return gamePlayer; } } } throw new SpaceCrackUnexpectedException("This user isn't playing this game"); }
private void validateActionMakeSureGameIsNotFinishedYet(Game game) { if (game.getLoserPlayerId() != 0) { throw new SpaceCrackNotAcceptableException("Game is already finished."); } }