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 23c32f2..5e75c9d 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 @@ -4,6 +4,7 @@ import ch.unibas.dmi.dbis.cs108.BudaLogConfig; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ClientModel; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.GUI; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat.ChatApp; +import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat.ChatController; import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.ClientPinger; @@ -70,6 +71,10 @@ public class Client { } + public void changeUsername (String newName) { + ChatController.getClient().setUsername(newName); + } + /** * Sends a message to the Server in a formatted way COMND$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 d932eda..d2c7218 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 @@ -58,6 +58,9 @@ public class JClientProtocolParser { c.positionSetter(msg.substring(6)); break; case Protocol.serverDeliversLobbyList: + case Protocol.changedUserName: + c.changeUsername(msg.substring(6)); + break; default: System.out.println("Received unknown command"); } 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 52e7fb3..7e283be 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 @@ -17,8 +17,9 @@ public class ChatApp extends Application { public static final Logger LOGGER = LogManager.getLogger(ChatApp.class); public static final BudaLogConfig l = new BudaLogConfig(LOGGER); - private static ClientModel clientModel; + private static ClientModel clientModel; private static ChatController chatController; + private ClientModel cModel; public ChatApp() { super(); @@ -36,6 +37,14 @@ public class ChatApp extends Application { chatController = chatC; } + public void setcModel(ClientModel cModel) { + this.cModel = cModel; + } + + public ClientModel getcModel() { + return cModel; + } + public static void setClientModel(ClientModel clientM) { clientModel = clientM; } @@ -60,7 +69,7 @@ public class ChatApp extends Application { @Override public void start(Stage primaryStage) throws Exception { LOGGER.info("made it here"); - this.setClientModel(clientModel); + this.setcModel(clientModel); URL resource = ChatApp.class.getResource( "splitPaneChatView.fxml"); LOGGER.info("1"); 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 eacfbc3..f9169cb 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 @@ -42,7 +42,7 @@ public class ChatController implements Initializable { @FXML private TextArea chatMsgField; - private ClientModel client; + private static ClientModel client; private SimpleBooleanProperty whisperTargetChosen; private String cmd; @@ -56,8 +56,8 @@ public class ChatController implements Initializable { whisperTargetChosen = new SimpleBooleanProperty(); cmd = "CHATA$"; } - public ChatController(ClientModel client) { - this.client = client; + public ChatController(ClientModel c) { + client = c; whisperTargetChosen = new SimpleBooleanProperty(); cmd = "CHATA"; @@ -73,8 +73,8 @@ public class ChatController implements Initializable { */ @Override public void initialize(URL location, ResourceBundle resources) { - setClient(ChatApp.getClientModel()); - ChatApp.setChatController(this); + setClient(ChatApp.getClientModel()); + ChatApp.setChatController(this); vBoxChatMessages.getChildren().addListener(new ListChangeListener() { @Override public void onChanged(Change c) { @@ -157,7 +157,7 @@ public class ChatController implements Initializable { /** * @return the client who's chat controller this is */ - public ClientModel getClient() { + public static ClientModel getClient() { return client; } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/helpers/Protocol.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/helpers/Protocol.java index f53c17a..578efa5 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/helpers/Protocol.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/helpers/Protocol.java @@ -187,7 +187,10 @@ public class Protocol { */ public static final String serverDeliversLobbyList = "LLIST"; //todo: do we need this? - + /** + * Informs Client, that their username has been changed + */ + public static final String changedUserName = "CHNAM"; } 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 5ba0654..8aa4053 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 @@ -126,6 +126,7 @@ public class ClientHandler implements Runnable { public void changeUsername(String newName) { String helper = this.getClientUserName(); this.clientUserName = nameDuplicateChecker.checkName(newName); + sendMsgToClient(Protocol.changedUserName + "$" + newName); broadcastAnnouncementToAll(helper + " has changed their nickname to " + clientUserName); try { getLobby().getGame().getGameState().changeUsername(helper,newName);