From e9a4a6173766ba13362c608a1d5f025368b252e9 Mon Sep 17 00:00:00 2001 From: Sebastian Lenzlinger Date: Mon, 18 Apr 2022 15:27:27 +0200 Subject: [PATCH] Reformatted to googlestyle and now gui colorcodes if you whisper and differentiates for all --- .../dmi/dbis/cs108/NightTrainToBudapest.java | 6 +- .../gamelogic/ServerGameInfoHandler.java | 44 +++++++++------ .../dbis/cs108/multiplayer/client/Client.java | 3 +- .../client/JClientProtocolParser.java | 8 +-- .../multiplayer/client/MessageFormatter.java | 6 +- .../multiplayer/client/gui/ClientModel.java | 1 + .../multiplayer/client/gui/CmdProperty.java | 11 ---- .../cs108/multiplayer/client/gui/GUI.java | 6 +- .../multiplayer/client/gui/chat/ChatApp.java | 1 + .../client/gui/chat/ChatController.java | 6 +- .../client/gui/chat/ChatIncomingThread.java | 31 ----------- .../multiplayer/server/ClientHandler.java | 19 ++++--- .../server/JServerProtocolParser.java | 3 +- .../dbis/cs108/multiplayer/server/Lobby.java | 55 +++++++++++-------- .../dbis/cs108/multiplayer/server/Server.java | 1 + .../server/nameDuplicateChecker.java | 24 ++++---- 16 files changed, 109 insertions(+), 116 deletions(-) delete mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/CmdProperty.java delete mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatIncomingThread.java diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/NightTrainToBudapest.java b/src/main/java/ch/unibas/dmi/dbis/cs108/NightTrainToBudapest.java index dacbc7b..35a3b20 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/NightTrainToBudapest.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/NightTrainToBudapest.java @@ -7,11 +7,11 @@ import java.net.InetAddress; public class NightTrainToBudapest { - public static void main(String[] args){ - try{ + public static void main(String[] args) { + try { String clientOrServer = args[0]; if (clientOrServer.equalsIgnoreCase("client")) { - String addrString = args[1].substring(0,args[1].indexOf(":")); + String addrString = args[1].substring(0, args[1].indexOf(":")); InetAddress addr = InetAddress.getByName(addrString); int port = Integer.parseInt(args[1].substring(args[1].indexOf(":") + 1)); String username = null; diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/ServerGameInfoHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/ServerGameInfoHandler.java index 5d3eaf8..253b231 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/ServerGameInfoHandler.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/gamelogic/ServerGameInfoHandler.java @@ -12,42 +12,46 @@ import org.apache.logging.log4j.Logger; /** * Handles all communications Server to Client concerning game state or game state related requests - * - Needs a possibility to only send to Ghosts - * - and only humans + * - Needs a possibility to only send to Ghosts - and only humans */ public class ServerGameInfoHandler { + public static final Logger LOGGER = LogManager.getLogger(ServerGameInfoHandler.class); public static final BudaLogConfig l = new BudaLogConfig(LOGGER); /** * Gets a string msg from somewhere and formats it into protocol messages - * @param msg the message to be formatted + * + * @param msg the message to be formatted * @param passenger the passenger getting the message - * @param game the game in wich the passenger lives + * @param game the game in wich the passenger lives * @return a message in a protocol format */ public static String format(String msg, Passenger passenger, Game game) { switch (msg) { case ClientGameInfoHandler.ghostVoteRequest: - msg = Protocol.serverRequestsGhostVote + "$" + passenger.getPosition() +"$" + game.gameState.toString(); + msg = Protocol.serverRequestsGhostVote + "$" + passenger.getPosition() + "$" + + game.gameState.toString(); break; case ClientGameInfoHandler.humanVoteRequest: - msg = Protocol.serverRequestsHumanVote + "$" + passenger.getPosition() +"$"+ game.gameState.humanToString(); + msg = Protocol.serverRequestsHumanVote + "$" + passenger.getPosition() + "$" + + game.gameState.humanToString(); break; default: - msg = Protocol.printToClientConsole + "$"+ msg; + msg = Protocol.printToClientConsole + "$" + msg; } LOGGER.debug(msg); return msg; } /** - * //TODO(Seraina): Smart implementation that sends all relevant things to spectator, so they won't get bored - * Formartiert Nachrichten die für einen Spectator gedacht sind. - * @param msg the message to be formatted + * //TODO(Seraina): Smart implementation that sends all relevant things to spectator, so they + * won't get bored Formartiert Nachrichten die für einen Spectator gedacht sind. + * + * @param msg the message to be formatted * @param passenger the passenger getting the message - * @param game the game in wich the passenger lives + * @param game the game in wich the passenger lives * @return a message in a protocol format */ public static String spectatorFormat(String msg, Passenger passenger, Game game) { @@ -61,7 +65,7 @@ public class ServerGameInfoHandler { msg = Protocol.printToClientConsole + "$Humans are voting:" + game.gameState.toString(); break; default: - msg = Protocol.printToClientConsole + "$"+ msg; + msg = Protocol.printToClientConsole + "$" + msg; } LOGGER.debug(msg); return msg; @@ -69,6 +73,7 @@ public class ServerGameInfoHandler { /** * Chooses for an NPC what they want to say, so they don't sound the same all the time + * * @return a String saying that sm heard sm noise */ public static String noiseRandomizer() { @@ -77,7 +82,7 @@ public class ServerGameInfoHandler { String c = "I heard smt strange tonight"; String d = "Me, noise!"; String e = "Uuuuh, spoky sounds"; - int number = (int)(Math.random()*5); + int number = (int) (Math.random() * 5); switch (number) { case 0: return a; @@ -94,8 +99,9 @@ public class ServerGameInfoHandler { /** * decides which action an GhostNpc needs to take, based on a message - * @param npc the GhostNpc needing to do smt - * @param msg the msg containing the information on what to do + * + * @param npc the GhostNpc needing to do smt + * @param msg the msg containing the information on what to do * @param game the game the GhostNpc lives in (in gameState.passengerTrain) */ public static void ghostNpcParser(GhostNPC npc, String msg, Game game) { @@ -111,14 +117,16 @@ public class ServerGameInfoHandler { /** * decides which action an HumanNpc needs to take, based on a message - * @param npc the HumanNpc needing to do smt - * @param msg the msg containing the information on what to do + * + * @param npc the HumanNpc needing to do smt + * @param msg the msg containing the information on what to do * @param game the game the HumanNpc lives in (in gameState.passengerTrain) */ public static void humanNpcParser(HumanNPC npc, String msg, Game game) { switch (msg) { case ClientGameInfoHandler.noiseNotification: - String outMsg = npc.getName() + ": " + noiseRandomizer();; + String outMsg = npc.getName() + ": " + noiseRandomizer(); + ; game.getLobby().getAdmin().broadcastNpcChatMessageToLobby(outMsg); break; case ClientGameInfoHandler.humanVoteRequest: diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java index 1f05475..9dbb6ee 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java @@ -71,7 +71,7 @@ public class Client { } - public void changeUsername (String newName) { + public void changeUsername(String newName) { ChatController.getClient().setUsername(newName); } @@ -105,6 +105,7 @@ public class Client { /** * Tells user to enter a position to vote for passenger at that position + * * @param msg the message containing the position */ public void positionSetter(String msg) { diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/JClientProtocolParser.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/JClientProtocolParser.java index 16787b3..739158c 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/JClientProtocolParser.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/JClientProtocolParser.java @@ -7,15 +7,15 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class JClientProtocolParser { + public static final Logger LOGGER = LogManager.getLogger(JClientProtocolParser.class); public static final BudaLogConfig l = new BudaLogConfig(LOGGER); /** - * Used by the client to parse an incoming protocol message. - * For documentation on the individual Protocol messages, view the Protocol.java - * class or hover over the commands (e.g. Protocol.chatMsgToAll) with your mouse - * in this class. + * Used by the client to parse an incoming protocol message. For documentation on the individual + * Protocol messages, view the Protocol.java class or hover over the commands (e.g. + * Protocol.chatMsgToAll) with your mouse in this class. * * @param msg the encoded message that needs to be parsed * @param c this Client(required so this method can access the Client's methods) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/MessageFormatter.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/MessageFormatter.java index 67fe9af..3c0c817 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/MessageFormatter.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/MessageFormatter.java @@ -11,10 +11,10 @@ public class MessageFormatter { public static final BudaLogConfig l = new BudaLogConfig(LOGGER); /** - * Takes a given client input and reformats it to where the JServerProtocolParser.parse() method can - * handle it (see Protocol.java). May need to be redesigned once the game uses a GUI. + * Takes a given client input and reformats it to where the JServerProtocolParser.parse() method + * can handle it (see Protocol.java). May need to be redesigned once the game uses a GUI. * - * @param msg the Messaged to be reformatted + * @param msg the Messaged to be reformatted * @param position the position the client is in * @return the reformatted message in the form HEADR$msg */ diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientModel.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientModel.java index 1cd6058..7444913 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientModel.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientModel.java @@ -6,6 +6,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class ClientModel { + public static final Logger LOGGER = LogManager.getLogger(ClientModel.class); public static final BudaLogConfig l = new BudaLogConfig(LOGGER); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/CmdProperty.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/CmdProperty.java deleted file mode 100644 index 0df6ff6..0000000 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/CmdProperty.java +++ /dev/null @@ -1,11 +0,0 @@ -package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui; - -import javafx.beans.property.BooleanProperty; -import javafx.beans.property.SimpleBooleanProperty; - -public class CmdProperty extends SimpleBooleanProperty { - - private String cmd; - - //TODO private void updateCmd(); -} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GUI.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GUI.java index 274073a..f7a47d3 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GUI.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GUI.java @@ -6,13 +6,15 @@ import javafx.application.Application; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class GUI implements Runnable{ +public class GUI implements Runnable { + public static final Logger LOGGER = LogManager.getLogger(GUI.class); public static final BudaLogConfig l = new BudaLogConfig(LOGGER); ChatApp chatApp; private String name; - public GUI (ChatApp chatApp) { + + public GUI(ChatApp chatApp) { this.chatApp = chatApp; } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatApp.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatApp.java index 7e283be..5386a24 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatApp.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatApp.java @@ -14,6 +14,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class ChatApp extends Application { + public static final Logger LOGGER = LogManager.getLogger(ChatApp.class); public static final BudaLogConfig l = new BudaLogConfig(LOGGER); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatController.java index bb2bb7f..8d381a5 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatController.java @@ -112,7 +112,11 @@ public class ChatController implements Initializable { client.getClient().sendMsgToServer(cmd.toString() + msg); LOGGER.info("Message trying to send is: " + cmd.toString() + msg); Label l = new Label(client.getUsername() + " (you): " + msg); - l.setBackground(Background.fill(Color.LAVENDER)); + if (cmd.contains(whisper)) { + l.setBackground(Background.fill(Color.LAVENDERBLUSH)); + } else { + l.setBackground(Background.fill(Color.LAVENDER)); + } vBoxChatMessages.getChildren().add(l); chatMsgField.clear(); } else { diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatIncomingThread.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatIncomingThread.java deleted file mode 100644 index c927748..0000000 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatIncomingThread.java +++ /dev/null @@ -1,31 +0,0 @@ -package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat; - -import java.io.BufferedReader; -import java.io.BufferedWriter; - -/** - * To get the chat messages to the chat window. - */ -public class ChatIncomingThread implements Runnable { - - BufferedReader inputReader; - ChatApp chatApp; - public ChatIncomingThread(BufferedReader inputReader, ChatApp chatApp) { - this.inputReader = inputReader; - this.chatApp = chatApp; - } - - /** - * When an object implementing interface {@code Runnable} is used to create a thread, starting the - * thread causes the object's {@code run} method to be called in that separately executing - * thread. - *

- * The general contract of the method {@code run} is that it may take any action whatsoever. - * - * @see Thread#run() - */ - @Override - public void run() { - - } -} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/ClientHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/ClientHandler.java index f2bfcc3..6c5a4fb 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/ClientHandler.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/ClientHandler.java @@ -156,6 +156,7 @@ public class ClientHandler implements Runnable { /** * Returns the Lobby this ClientHandler is in. If this ClientHandler is not in a Lobby, it returns * null. + * * @return the Lobby this clientHandler lives in */ public Lobby getLobby() { @@ -176,7 +177,7 @@ public class ClientHandler implements Runnable { Lobby l = getLobby(); if (l != null) { for (ClientHandler client : l.getLobbyClients()) { - if(client.getClientUserName().equals(this.getClientUserName())){ + if (client.getClientUserName().equals(this.getClientUserName())) { continue; } client.sendMsgToClient(Protocol.printToClientChat + "$" + clientUserName + ": " + msg); @@ -184,7 +185,7 @@ public class ClientHandler implements Runnable { } else { //send msg to all clients who are not in a lobby. for (ClientHandler client : connectedClients) { - if(client.getClientUserName().equals(this.getClientUserName())){ + if (client.getClientUserName().equals(this.getClientUserName())) { continue; } if (Lobby.clientIsInLobby(client) == -1) { @@ -209,14 +210,14 @@ public class ClientHandler implements Runnable { } /** - * Broadcasts a chat Message to all clients across all lobbies and clients who are not in a lobby in - * the form "Username: @msg" + * Broadcasts a chat Message to all clients across all lobbies and clients who are not in a lobby + * in the form "Username: @msg" * * @param msg the Message to be broadcast */ public void broadcastChatMessageToAll(String msg) { for (ClientHandler client : connectedClients) { - if(client.getClientUserName().equals(this.getClientUserName())){ + if (client.getClientUserName().equals(this.getClientUserName())) { continue; } client.sendMsgToClient(Protocol.printToClientChat + "$" + clientUserName + ": " + msg); @@ -267,12 +268,15 @@ public class ClientHandler implements Runnable { * sent the message that it has been sent. Syntax: * * @param target MUST NOT BE NULL! - * @param msg the message being whisperd + * @param msg the message being whisperd */ public void whisper(String msg, ClientHandler target) { target.sendMsgToClient( Protocol.printToClientChat + "$" + this.getClientUserName() + " whispers: " + msg); - sendMsgToClient( + /*sendMsgToClient( + Protocol.printToClientChat + "$You whispered to " + target.getClientUserName() + ": " + + msg);*/ // no confirmation messge needed. will be colorcoded in gui + LOGGER.info( Protocol.printToClientChat + "$You whispered to " + target.getClientUserName() + ": " + msg); } @@ -375,6 +379,7 @@ public class ClientHandler implements Runnable { * Sends an announcement to just this client. Essentially the same as broadcastAnnouncementToAll * except it only sends an announcement to just this client instead of everyone. Can be used for * private non-chat messages (e.g. "You are now a ghost"). + * * @param msg the message being announced */ public void sendAnnouncementToClient(String msg) { diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/JServerProtocolParser.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/JServerProtocolParser.java index eb5006a..359ffe4 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/JServerProtocolParser.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/JServerProtocolParser.java @@ -30,7 +30,8 @@ public class JServerProtocolParser { String header = ""; //"header" is the first 5 characters, i.e. the protocol part try { header = msg.substring(0, 5); - if(!header.equals(Protocol.pingBack) &&!header.equals(Protocol.pingFromClient)) { //for debuging without constant pings + if (!header.equals(Protocol.pingBack) && !header.equals( + Protocol.pingFromClient)) { //for debuging without constant pings LOGGER.debug("got message: " + msg + "."); } } catch (IndexOutOfBoundsException e) { diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/Lobby.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/Lobby.java index 805edb7..78bd9f3 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/Lobby.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/Lobby.java @@ -26,10 +26,9 @@ public class Lobby { /** - * true by default - * true if game has not started yet, false if game has. If true, potential players can still join the game. - * Should be set to true again, after a game is finished. - * Games can only be started if Lobby is open. + * true by default true if game has not started yet, false if game has. If true, potential players + * can still join the game. Should be set to true again, after a game is finished. Games can only + * be started if Lobby is open. */ private boolean lobbyIsOpen = true; @@ -40,8 +39,8 @@ public class Lobby { /** - * The Person who created the game and can configure it and decide to start once enough lobbyClients - * have entered the lobby. + * The Person who created the game and can configure it and decide to start once enough + * lobbyClients have entered the lobby. */ private final ClientHandler admin; @@ -54,8 +53,8 @@ public class Lobby { /** - * Constructor. Sets the admin to who created the lobby. Adds the admin to the list of lobbyClients. - * Increases the number of lobbyClients from 0 to 1. + * Constructor. Sets the admin to who created the lobby. Adds the admin to the list of + * lobbyClients. Increases the number of lobbyClients from 0 to 1. * * @param admin the Client who called CRTGM */ @@ -83,6 +82,7 @@ public class Lobby { /** * getter for the lobby ID + * * @return lobbyID as set in constructor. */ public int getLobbyID() { @@ -99,14 +99,14 @@ public class Lobby { } /** - * Returns the lobby with the desired LobbyID. - * For example, getLobbyFromID(5) returns the lobby whose LobbyID is 5. - * If no such lobby exists, it returns null. + * Returns the lobby with the desired LobbyID. For example, getLobbyFromID(5) returns the lobby + * whose LobbyID is 5. If no such lobby exists, it returns null. + * * @param i the Lobby ID you are looking for * @return the Lobby with i as its ID */ public static Lobby getLobbyFromID(int i) { - for (Lobby l: lobbies) { + for (Lobby l : lobbies) { if (l.getLobbyID() == i) { return l; } @@ -125,7 +125,7 @@ public class Lobby { } public boolean getLobbyIsOpen() { - if (lobbyClients.size() >= MAX_NO_OF_CLIENTS || gameIsRunning ) { + if (lobbyClients.size() >= MAX_NO_OF_CLIENTS || gameIsRunning) { setLobbyIsOpen(false); } else { setLobbyIsOpen(true); @@ -148,14 +148,15 @@ public class Lobby { /** - * Returns the ID of the lobby that the client is in. If the client is not in any - * lobby, it returns -1. + * Returns the ID of the lobby that the client is in. If the client is not in any lobby, it + * returns -1. + * * @param h ClientHandler that the corresponding Lobby is searched for * @return the Lobby ID */ public static int clientIsInLobby(ClientHandler h) { - for (Lobby l: lobbies) { - for (ClientHandler clientHandler: l.getLobbyClients()) { + for (Lobby l : lobbies) { + for (ClientHandler clientHandler : l.getLobbyClients()) { if (h.equals(clientHandler)) { return l.getLobbyID(); } @@ -167,6 +168,7 @@ public class Lobby { /** * Adds a player to the lobby. Returns true if successful. * TODO: add an appropriate response. Currently hardcoded. + * * @param client who wants to join the lobby. * @return true if successful */ @@ -174,7 +176,8 @@ public class Lobby { if (getLobbyIsOpen()) { if (clientIsInLobby(client) == -1) { lobbyClients.add(client); - ClientHandler.broadcastAnnouncementToAll(client.getClientUserName() + " has joined lobby " + this.getLobbyID()); + ClientHandler.broadcastAnnouncementToAll( + client.getClientUserName() + " has joined lobby " + this.getLobbyID()); //LOGGER.debug(client.getClientUserName() + " has been added to Lobby with ID: " + lobbyID // + ". Current number of lobbyClients in this lobby: " + lobbyClients.size()); return true; @@ -182,7 +185,8 @@ public class Lobby { client.sendAnnouncementToClient("You are already in lobby nr. " + clientIsInLobby(client)); } } else { - client.sendAnnouncementToClient("This lobby is closed. Please try joining a different lobby or create a new lobby"); + client.sendAnnouncementToClient( + "This lobby is closed. Please try joining a different lobby or create a new lobby"); } return false; } @@ -198,10 +202,12 @@ public class Lobby { public synchronized boolean removePlayer(ClientHandler player) { //if the player who leaves the lobby is the admin, the lobby is closed. if (player.equals(getAdmin())) { - ClientHandler.broadcastAnnouncementToAll(player.getClientUserName() + " has closed lobby nr. " + this.getLobbyID()); + ClientHandler.broadcastAnnouncementToAll( + player.getClientUserName() + " has closed lobby nr. " + this.getLobbyID()); closeLobby(); - } else if (this.getLobbyClients().remove(player)){ - ClientHandler.broadcastAnnouncementToAll(player.getClientUserName() + " has left lobby nr. " + this.getLobbyID()); + } else if (this.getLobbyClients().remove(player)) { + ClientHandler.broadcastAnnouncementToAll( + player.getClientUserName() + " has left lobby nr. " + this.getLobbyID()); return true; } return false; @@ -209,6 +215,7 @@ public class Lobby { /** * Adds game to list of running games and sets its lobby's gameIsRunning to true. + * * @param game the game to be added */ public void addGameToRunningGames(Game game) { @@ -218,6 +225,7 @@ public class Lobby { /** * Removes game from list of running games and sets its lobby's gameIsRunning to false. + * * @param game the game to be removed */ public void removeGameFromRunningGames(Game game) { @@ -225,13 +233,12 @@ public class Lobby { runningGames.remove(game); } - public void addGameToFinishedGames(Game game) { + public void addGameToFinishedGames(Game game) { finishedGames.add(game); } /** * Closes the lobby. - * */ public void closeLobby() { lobbies.remove(this); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/Server.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/Server.java index 67f9b89..fcf5c72 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/Server.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/Server.java @@ -11,6 +11,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class Server { + public static final Logger LOGGER = LogManager.getLogger(Server.class); public static final BudaLogConfig l = new BudaLogConfig(LOGGER); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/nameDuplicateChecker.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/nameDuplicateChecker.java index 5db39fa..c286696 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/nameDuplicateChecker.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/nameDuplicateChecker.java @@ -3,11 +3,12 @@ package ch.unibas.dmi.dbis.cs108.multiplayer.server; import java.util.Random; /** - * This class is responsible for checking names for duplicates and assigning suffixes in case - * of duplicate names. + * This class is responsible for checking names for duplicates and assigning suffixes in case of + * duplicate names. */ public class nameDuplicateChecker { - static final String[] suffixes = new String[] { + + static final String[] suffixes = new String[]{ " from London", " of Prussia", " of Zagreb", @@ -48,19 +49,22 @@ public class nameDuplicateChecker { } /** - * Adjusts the name to avoid conflicts and returns it as a String. Namely: - * If that name is already used by some other ClientHandler, it returns the name with some suffix. - * Also, any ":" or "$" are removed, so they can be used for whisper chat. - * Also, if the name is empty, it assigns a default value ("U.N. Owen"). + * Adjusts the name to avoid conflicts and returns it as a String. Namely: If that name is already + * used by some other ClientHandler, it returns the name with some suffix. Also, any ":" or "$" + * are removed, so they can be used for whisper chat. Also, if the name is empty, it assigns a + * default value ("U.N. Owen"). + * * @param name the name that is checked for * @return returns either just the name or added some suffix */ public static String checkName(String name) { String tempname = name; //if this line is used, only duplicate names get a suffix. //String tempname = extendName(name); //if this line is used, all clients get a suffix - tempname = tempname.replace("$",""); - tempname = tempname.replace(":",""); - if (tempname.equalsIgnoreCase("")) {tempname = "U.N. Owen";} + tempname = tempname.replace("$", ""); + tempname = tempname.replace(":", ""); + if (tempname.equalsIgnoreCase("")) { + tempname = "U.N. Owen"; + } String rtrn = tempname; while (isTaken(rtrn)) { //todo: handle the (very unlikely) case that all names are taken. rtrn = extendName(tempname);