diff --git a/Server/src/main/java/uulm/teamname/marvelous/server/lobbymanager/LobbyManager.java b/Server/src/main/java/uulm/teamname/marvelous/server/lobbymanager/LobbyManager.java index 06dce5f..c477231 100644 --- a/Server/src/main/java/uulm/teamname/marvelous/server/lobbymanager/LobbyManager.java +++ b/Server/src/main/java/uulm/teamname/marvelous/server/lobbymanager/LobbyManager.java @@ -74,6 +74,56 @@ public class LobbyManager { return true; } + /** + * Adds a participant to a lobby. If the maximum amount of lobbies is already filled, or if the lobby requested + * isn't free, the participant is disconnected. + */ + private void addParticipant(Client client, String lobbyID, RoleEnum role) { + Logger.trace("Adding participant '{}' to the lobby '{}'", client.id.getName(), lobbyID); + if (!lobbies.containsKey(lobbyID)) { + if (!LobbyRunner.getInstance().canAddLobby()) { + Logger.info("Rejecting participant '{}' as server is already full", client.id.getName()); + UserManager.getInstance().removeClient(client, "The server has currently its maximum" + + "lobby number. Please connect as a spectator instead."); + return; + } + Logger.info("Lobby '{}' didn't exist yet, initializing", lobbyID); + lobbies.put(lobbyID, new LobbyConnection(lobbyID)); + } + + LobbyConnection lobby = lobbies.get(lobbyID); + + if (!lobby.hasFreePlayerSlot() && role != RoleEnum.SPECTATOR) { + Logger.debug("No free player slots available, disconnecting client '{}'", client.id.getName()); + UserManager.getInstance() + .removeClient(client, "The lobby your requested is already full. " + + "Please connect as a spectator instead."); + return; + } + + ParticipantType type = lobby.freeSlot(); + + Logger.trace("New participant '{}' has the role '{}'", client.id.getName(), type); + + Participant participant = new Participant(client, lobbyID, type); + participants.put(client.id, participant); + + lobby.addParticipant(participant); + + if (type != ParticipantType.Spectator) { + Logger.debug("Sending GameAssignment message to user '{}'", client.id.getName()); + GameAssignmentMessage response = new GameAssignmentMessage(); + response.gameID = lobby.gameID; + response.characterSelection = lobby.options.get(type); + participant.sendMessage(response); + } else { + Logger.debug("Sending GeneralAssignment message to user '{}'", client.id.getName()); + GeneralAssignmentMessage response = new GeneralAssignmentMessage(); + response.gameID = lobby.gameID; + participant.sendMessage(response); + } + } + /** * Handles a {@link CharacterSelectionMessage}, computes the characters that have been selected and relays that * information to the {@link LobbyConnection} concerned by this information. @@ -187,54 +237,4 @@ public class LobbyManager { public void removeParticipant(Participant participant) { participants.remove(participant.id); } - - /** - * Adds a participant to a lobby. If the maximum amount of lobbies is already filled, or if the lobby requested - * isn't free, the participant is disconnected. - */ - private void addParticipant(Client client, String lobbyID, RoleEnum role) { - Logger.trace("Adding participant '{}' to the lobby '{}'", client.id.getName(), lobbyID); - if (!lobbies.containsKey(lobbyID)) { - if (!LobbyRunner.getInstance().canAddLobby()) { - Logger.info("Rejecting participant '{}' as server is already full", client.id.getName()); - UserManager.getInstance().removeClient(client, "The server has currently its maximum" + - "lobby number. Please connect as a spectator instead."); - return; - } - Logger.info("Lobby '{}' didn't exist yet, initializing", lobbyID); - lobbies.put(lobbyID, new LobbyConnection(lobbyID)); - } - - LobbyConnection lobby = lobbies.get(lobbyID); - - if (!lobby.hasFreePlayerSlot() && role != RoleEnum.SPECTATOR) { - Logger.debug("No free player slots available, disconnecting client '{}'", client.id.getName()); - UserManager.getInstance() - .removeClient(client, "The lobby your requested is already full. " + - "Please connect as a spectator instead."); - return; - } - - ParticipantType type = lobby.freeSlot(); - - Logger.trace("New participant '{}' has the role '{}'", client.id.getName(), type); - - Participant participant = new Participant(client, lobbyID, type); - participants.put(client.id, participant); - - lobby.addParticipant(participant); - - if (type != ParticipantType.Spectator) { - Logger.debug("Sending GameAssignment message to user '{}'", client.id.getName()); - GameAssignmentMessage response = new GameAssignmentMessage(); - response.gameID = lobby.gameID; - response.characterSelection = lobby.options.get(type); - participant.sendMessage(response); - } else { - Logger.debug("Sending GeneralAssignment message to user '{}'", client.id.getName()); - GeneralAssignmentMessage response = new GeneralAssignmentMessage(); - response.gameID = lobby.gameID; - participant.sendMessage(response); - } - } }