From a9ecd7b80d21cd65679eb764e46fd97a8fe226f0 Mon Sep 17 00:00:00 2001 From: jbion Date: Thu, 12 Jan 2017 22:12:42 +0100 Subject: Fix LobbyController to match the documentation --- .../luxons/sevenwonders/actions/StartGameAction.java | 19 ------------------- .../sevenwonders/controllers/LobbyController.java | 14 ++++++++------ .../sevenwonders/repositories/PlayerRepository.java | 8 ++++---- 3 files changed, 12 insertions(+), 29 deletions(-) delete mode 100644 src/main/java/org/luxons/sevenwonders/actions/StartGameAction.java (limited to 'src') diff --git a/src/main/java/org/luxons/sevenwonders/actions/StartGameAction.java b/src/main/java/org/luxons/sevenwonders/actions/StartGameAction.java deleted file mode 100644 index 632b80ef..00000000 --- a/src/main/java/org/luxons/sevenwonders/actions/StartGameAction.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.luxons.sevenwonders.actions; - -import javax.validation.constraints.NotNull; - -import org.luxons.sevenwonders.game.Settings; - -public class StartGameAction { - - @NotNull - private Settings settings; - - public Settings getSettings() { - return settings; - } - - public void setSettings(Settings settings) { - this.settings = settings; - } -} diff --git a/src/main/java/org/luxons/sevenwonders/controllers/LobbyController.java b/src/main/java/org/luxons/sevenwonders/controllers/LobbyController.java index cfc540bb..1664d05e 100644 --- a/src/main/java/org/luxons/sevenwonders/controllers/LobbyController.java +++ b/src/main/java/org/luxons/sevenwonders/controllers/LobbyController.java @@ -8,7 +8,6 @@ import org.luxons.sevenwonders.actions.ChooseNameAction; import org.luxons.sevenwonders.actions.CreateGameAction; import org.luxons.sevenwonders.actions.JoinGameAction; import org.luxons.sevenwonders.actions.ReorderPlayersAction; -import org.luxons.sevenwonders.actions.StartGameAction; import org.luxons.sevenwonders.actions.UpdateSettingsAction; import org.luxons.sevenwonders.errors.ApiMisuseException; import org.luxons.sevenwonders.game.Game; @@ -51,11 +50,13 @@ public class LobbyController { } @MessageMapping("/chooseName") - public void chooseName(@Validated ChooseNameAction action, Principal principal) { + @SendToUser("/queue/nameChoice") + public Player chooseName(@Validated ChooseNameAction action, Principal principal) { String userName = principal.getName(); Player player = playerRepository.updateOrCreatePlayer(userName, action.getPlayerName()); logger.info("Player '{}' chose the name '{}'", userName, player.getDisplayName()); + return player; } @SubscribeMapping("/games") // prefix /topic not shown @@ -79,8 +80,8 @@ public class LobbyController { } @MessageMapping("/lobby/join") - @SendToUser("/queue/lobby") - public Collection joinGame(@Validated JoinGameAction action, Principal principal) { + @SendToUser("/queue/lobby/joined") + public Lobby joinGame(@Validated JoinGameAction action, Principal principal) { checkThatUserIsNotInAGame(principal, "cannot join another game"); Lobby lobby = lobbyRepository.find(action.getGameId()); @@ -90,7 +91,8 @@ public class LobbyController { logger.info("Player '{}' ({}) joined game {}", newPlayer.getDisplayName(), newPlayer.getUserName(), lobby.getName()); - return Collections.singletonList(lobby); + sendLobbyUpdateToPlayers(lobby); + return lobby; } private void checkThatUserIsNotInAGame(Principal principal, String impossibleActionDescription) { @@ -123,7 +125,7 @@ public class LobbyController { } @MessageMapping("/lobby/start") - public void startGame(@Validated StartGameAction action, Principal principal) { + public void startGame(Principal principal) { Lobby lobby = getOwnedLobby(principal); Game game = lobby.startGame(); gameRepository.add(game); diff --git a/src/main/java/org/luxons/sevenwonders/repositories/PlayerRepository.java b/src/main/java/org/luxons/sevenwonders/repositories/PlayerRepository.java index cd63c440..76df13b4 100644 --- a/src/main/java/org/luxons/sevenwonders/repositories/PlayerRepository.java +++ b/src/main/java/org/luxons/sevenwonders/repositories/PlayerRepository.java @@ -20,26 +20,26 @@ public class PlayerRepository { } } - private Player createPlayer(String userName, String displayName) { + private Player createPlayer(String userName, String displayName) throws PlayerAlreadyExistsException { Player player = new Player(userName, displayName); add(player); return player; } - private void add(Player player) { + private void add(Player player) throws PlayerAlreadyExistsException { if (players.containsKey(player.getUserName())) { throw new PlayerAlreadyExistsException(player.getUserName()); } players.put(player.getUserName(), player); } - private Player updatePlayerName(String userName, String displayName) { + private Player updatePlayerName(String userName, String displayName) throws PlayerNotFoundException { Player player = find(userName); player.setDisplayName(displayName); return player; } - public Player find(String userName) { + public Player find(String userName) throws PlayerNotFoundException { Player player = players.get(userName); if (player == null) { throw new PlayerNotFoundException(userName); -- cgit