updated nameDuplicateChecker to remove $ and : and deal with empty names. Also renamed singularName() to checkName().
Some other minor adjustments
This commit is contained in:
parent
2789779d62
commit
1b27a601f0
@ -38,7 +38,7 @@ public class ClientHandler implements Runnable {
|
||||
this.socket = socket;
|
||||
this.out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
|
||||
this.in = new BufferedReader(new InputStreamReader((socket.getInputStream())));
|
||||
this.clientUserName = nameDuplicateChecker.singularName("U.N. Owen");
|
||||
this.clientUserName = nameDuplicateChecker.checkName("U.N. Owen");
|
||||
connectedClients.add(this);
|
||||
serverPinger = new ServerPinger(socket, this);
|
||||
Thread sP = new Thread(serverPinger);
|
||||
@ -77,11 +77,6 @@ public class ClientHandler implements Runnable {
|
||||
|
||||
|
||||
@Override
|
||||
/**
|
||||
* 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() && !socket.isClosed()) {
|
||||
@ -109,7 +104,7 @@ public class ClientHandler implements Runnable {
|
||||
*/
|
||||
public void changeUsername(String newName) {
|
||||
String helper = this.getClientUserName();
|
||||
this.clientUserName = nameDuplicateChecker.singularName(newName);
|
||||
this.clientUserName = nameDuplicateChecker.checkName(newName);
|
||||
broadcastAnnouncement(helper + " has changed their nickname to " + clientUserName);
|
||||
}
|
||||
|
||||
@ -121,7 +116,7 @@ public class ClientHandler implements Runnable {
|
||||
* @param name The desired name.
|
||||
*/
|
||||
public void setUsernameOnLogin(String name) {
|
||||
this.clientUserName = nameDuplicateChecker.singularName(name);
|
||||
this.clientUserName = nameDuplicateChecker.checkName(name);
|
||||
broadcastAnnouncement( clientUserName + " has joined the Server");
|
||||
}
|
||||
|
||||
|
||||
@ -38,7 +38,7 @@ public class JServerProtocolParser {
|
||||
try {
|
||||
h.setUsernameOnLogin(msg.substring(6));
|
||||
} catch (Exception e) {
|
||||
h.setUsernameOnLogin("A Mysterious Passenger");
|
||||
h.setUsernameOnLogin("U.N. Owen");
|
||||
}
|
||||
break;
|
||||
case "NAMEC":
|
||||
|
||||
@ -48,12 +48,17 @@ public class nameDuplicateChecker {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name as a String, if that name is already used by some other ClientHandler,
|
||||
* it returns the name with some suffix.
|
||||
* 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").
|
||||
*/
|
||||
public static String singularName(String name) {
|
||||
public static String checkName(String name) {
|
||||
String rtrn = name; //if this line is used, only duplicate names get a suffix.
|
||||
//String rtrn = extendName(name); //if this line is used, all clients get a suffix
|
||||
rtrn = rtrn.replace("$","");
|
||||
rtrn = rtrn.replace(":","");
|
||||
if (rtrn.equalsIgnoreCase("")) {rtrn = "U.N. Owen";}
|
||||
while (isTaken(rtrn)) { //todo: handle the (very unlikely) case that all names are taken.
|
||||
rtrn = extendName(name);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user