From 1c03b5d9c7e7f06fb2abae15031c17a733eaeb00 Mon Sep 17 00:00:00 2001 From: Seraina Date: Sun, 27 Mar 2022 16:41:03 +0200 Subject: [PATCH] Added nickname change /n newName --- .../{server => client}/MessageFormatter.java | 16 ++++++++-------- .../cs108/multiplayer/server/ClientHandler.java | 9 ++++++++- .../server/JServerProtocolParser.java | 3 +++ 3 files changed, 19 insertions(+), 9 deletions(-) rename src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/{server => client}/MessageFormatter.java (75%) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/MessageFormatter.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/MessageFormatter.java similarity index 75% rename from src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/MessageFormatter.java rename to src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/MessageFormatter.java index b2c7984..d1a4680 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/MessageFormatter.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/MessageFormatter.java @@ -1,6 +1,4 @@ -package ch.unibas.dmi.dbis.cs108.multiplayer.server; - -import java.io.StringBufferInputStream; +package ch.unibas.dmi.dbis.cs108.multiplayer.client; public class MessageFormatter { @@ -23,15 +21,17 @@ public class MessageFormatter { } switch (header) { case "/c": - stringBuilder.append("CHATA"); - s = msg.substring(2); + stringBuilder.append("CHATA$"); + s = msg.substring(3); break; case "/q": - stringBuilder.append("QUITS"); - s = msg.substring(2); + stringBuilder.append("QUITS$"); + s = msg.substring(3); break; case "/n": - stringBuilder.append("NAMEC"); + stringBuilder.append("NAMEC$"); + s = msg.substring(3); + break; default: s = msg; } 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 4464437..6fb8c49 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 @@ -79,7 +79,7 @@ public class ClientHandler implements Runnable { * The main logic of the client handler. * Since every client is put on a string this is where * most interactions between client and server are held - */ + **/ public void run() { String msg; while (socket.isConnected()) { @@ -98,6 +98,13 @@ public class ClientHandler implements Runnable { return clientUserName; } + public void changeUsername(String newName) { + + String h = this.clientUserName; //just a friendly little helper + this.clientUserName = newName; + broadcastMessage(h +" have changed their nickname to " + clientUserName); + } + public void broadcastMessage(String msg) { for (ClientHandler client : connectedClients) { client.sendMsgToClient("CHATM:" + clientUserName + ": \"" + 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 85971a9..29fff16 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 @@ -21,6 +21,9 @@ public class JServerProtocolParser { case "CHATA": h.broadcastMessage(msg.substring(6)); break; + case "NAMEC": + h.changeUsername(msg.substring(6)); + break; case "CPING": h.sendMsgToClient("PINGB"); break;