Imlemented creating a lobby in the ClientHandler. Added getLobbyID() method to Lobby.java
This commit is contained in:
parent
8ea39356f2
commit
37a8caa64d
@ -14,6 +14,7 @@ import org.apache.logging.log4j.LogManager;
|
|||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
public class ClientHandler implements Runnable {
|
public class ClientHandler implements Runnable {
|
||||||
|
|
||||||
public static final Logger LOGGER = LogManager.getLogger();
|
public static final Logger LOGGER = LogManager.getLogger();
|
||||||
public static final BudaLogConfig l = new BudaLogConfig(LOGGER);
|
public static final BudaLogConfig l = new BudaLogConfig(LOGGER);
|
||||||
|
|
||||||
@ -41,7 +42,8 @@ public class ClientHandler implements Runnable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Implements the login logic in client-server architecture.
|
* Implements the login logic in client-server architecture.
|
||||||
* @param ip the ip of the client, used for re-connection.
|
*
|
||||||
|
* @param ip the ip of the client, used for re-connection.
|
||||||
* @param socket the socket on which to make the connection.
|
* @param socket the socket on which to make the connection.
|
||||||
*/
|
*/
|
||||||
public ClientHandler(Socket socket, InetAddress ip, CentralServerData serverData) {
|
public ClientHandler(Socket socket, InetAddress ip, CentralServerData serverData) {
|
||||||
@ -118,10 +120,9 @@ public class ClientHandler implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lets the client change their username, if the username is already taken, a similar
|
* Lets the client change their username, if the username is already taken, a similar option is
|
||||||
* option is chosen.
|
* chosen.
|
||||||
*
|
*
|
||||||
* @param newName The desired new name to replace the old one with.
|
* @param newName The desired new name to replace the old one with.
|
||||||
*/
|
*/
|
||||||
@ -132,15 +133,15 @@ public class ClientHandler implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the client's username on login, if the username is already taken, a similar
|
* Sets the client's username on login, if the username is already taken, a similar option is
|
||||||
* option is chosen. Functionally, the only difference between this method and changeUsername
|
* chosen. Functionally, the only difference between this method and changeUsername is that it
|
||||||
* is that it doesn't print out the name change.
|
* doesn't print out the name change.
|
||||||
*
|
*
|
||||||
* @param name The desired name.
|
* @param name The desired name.
|
||||||
*/
|
*/
|
||||||
public void setUsernameOnLogin(String name) {
|
public void setUsernameOnLogin(String name) {
|
||||||
this.clientUserName = nameDuplicateChecker.checkName(name);
|
this.clientUserName = nameDuplicateChecker.checkName(name);
|
||||||
broadcastAnnouncement( clientUserName + " has joined the Server");
|
broadcastAnnouncement(clientUserName + " has joined the Server");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -155,10 +156,10 @@ public class ClientHandler implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Broadcasts a non-chat Message to all active clients. This can be used for server
|
* Broadcasts a non-chat Message to all active clients. This can be used for server messages /
|
||||||
* messages / announcements rather than chat messages. The message will be printed to the user
|
* announcements rather than chat messages. The message will be printed to the user exactly as it
|
||||||
* exactly as it is given to this method. Unlike broadcastChatMessage, it will also be printed
|
* is given to this method. Unlike broadcastChatMessage, it will also be printed onto the server
|
||||||
* onto the server console.
|
* console.
|
||||||
*
|
*
|
||||||
* @param msg the Message to be broadcast
|
* @param msg the Message to be broadcast
|
||||||
*/
|
*/
|
||||||
@ -169,8 +170,10 @@ public class ClientHandler implements Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Sends a given message to client. The message has to already be protocol-formatted. ALL
|
/**
|
||||||
|
* Sends a given message to client. The message has to already be protocol-formatted. ALL
|
||||||
* communication with the client has to happen via this method!
|
* communication with the client has to happen via this method!
|
||||||
|
*
|
||||||
* @param msg the given message. Should already be protocol-formatted.
|
* @param msg the given message. Should already be protocol-formatted.
|
||||||
*/
|
*/
|
||||||
public void sendMsgToClient(String msg) {
|
public void sendMsgToClient(String msg) {
|
||||||
@ -186,10 +189,11 @@ public class ClientHandler implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes & disconnects the client. To be used if a severe connection loss is detected (i.e. if trying to
|
* Removes & disconnects the client. To be used if a severe connection loss is detected (i.e. if
|
||||||
* send / receive a message throws an exception, not just if ping-pong detects a connection loss).
|
* trying to send / receive a message throws an exception, not just if ping-pong detects a
|
||||||
* This is very similar to removeClientOnLogout(), however removeClientOnLogout() should only be used for
|
* connection loss). This is very similar to removeClientOnLogout(), however
|
||||||
* regular quitting, since removeClientOnLogout() cannot handle a client with connection loss.
|
* removeClientOnLogout() should only be used for regular quitting, since removeClientOnLogout()
|
||||||
|
* cannot handle a client with connection loss.
|
||||||
*/
|
*/
|
||||||
public void removeClientOnConnectionLoss() {
|
public void removeClientOnConnectionLoss() {
|
||||||
connectedClients.remove(this);
|
connectedClients.remove(this);
|
||||||
@ -210,8 +214,15 @@ public class ClientHandler implements Runnable {
|
|||||||
disconnectClient();
|
disconnectClient();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Invoked by CRTGM. Creates a new lobby with the ClientHandler as admin and adds the lobby to the
|
||||||
|
* server data.
|
||||||
|
*/
|
||||||
public void createNewLobby() {
|
public void createNewLobby() {
|
||||||
Lobby newGame = new Lobby(this);
|
Lobby newGame = new Lobby(this);
|
||||||
|
serverData.addLobbyToListOfAllLobbies(newGame);
|
||||||
|
LOGGER.debug(
|
||||||
|
this.getClientUserName() + " created a new lobby with ID: " + newGame.getLobbyID());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -59,6 +59,7 @@ public class JServerProtocolParser {
|
|||||||
break;
|
break;
|
||||||
case Protocol.createNewGame:
|
case Protocol.createNewGame:
|
||||||
// TODO add h.openLobby(h) method
|
// TODO add h.openLobby(h) method
|
||||||
|
h.createNewLobby();
|
||||||
LOGGER.debug(Protocol.createNewGame
|
LOGGER.debug(Protocol.createNewGame
|
||||||
+ " command reached in JServerProtocolParser. Command issued by: "
|
+ " command reached in JServerProtocolParser. Command issued by: "
|
||||||
+ h.getClientUserName());
|
+ h.getClientUserName());
|
||||||
|
|||||||
@ -71,6 +71,14 @@ public class Lobby {
|
|||||||
return this.admin;
|
return this.admin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* getter for the lobby ID
|
||||||
|
* @return lobbyID as set in constructor based on number of lobbies.
|
||||||
|
*/
|
||||||
|
public int getLobbyID(){
|
||||||
|
return this.lobbyID;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a player to the lobby.
|
* Adds a player to the lobby.
|
||||||
* TODO: ad an appropriate response. Currently hardcoded.
|
* TODO: ad an appropriate response. Currently hardcoded.
|
||||||
|
|||||||
Reference in New Issue
Block a user