Added /room command to know in which room the user is
This commit is contained in:
@@ -29,6 +29,8 @@ You will also be able to create a new room.
|
||||
- /listRooms
|
||||
- /joinRoom *roomName*
|
||||
- /leaveRoom
|
||||
- /room
|
||||
- /bye
|
||||
- /help
|
||||
|
||||
> [!NOTE]
|
||||
|
||||
@@ -4,13 +4,7 @@ import java.net.DatagramSocket;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.SocketException;
|
||||
|
||||
import network.protocol.packets.CreateRoomPacket;
|
||||
import network.protocol.packets.DisconnectPacket;
|
||||
import network.protocol.packets.JoinRoomPacket;
|
||||
import network.protocol.packets.LeaveRoomPacket;
|
||||
import network.protocol.packets.LoginPacket;
|
||||
import network.protocol.packets.RequestRoomListPacket;
|
||||
import network.protocol.packets.SendChatMessagePacket;
|
||||
import network.protocol.packets.*;
|
||||
|
||||
public class Client {
|
||||
|
||||
@@ -52,4 +46,8 @@ public class Client {
|
||||
public void RequestRoomList() {
|
||||
this.connexion.sendPacket(new RequestRoomListPacket());
|
||||
}
|
||||
|
||||
public void RequestActualRoom() {
|
||||
this.connexion.sendPacket(new RequestActualRoomPacket());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,17 +9,7 @@ import network.SocketReader;
|
||||
import network.SocketWriter;
|
||||
import network.protocol.Packet;
|
||||
import network.protocol.PacketVisitor;
|
||||
import network.protocol.packets.ChatMessagePacket;
|
||||
import network.protocol.packets.CreateRoomPacket;
|
||||
import network.protocol.packets.DisconnectPacket;
|
||||
import network.protocol.packets.HandshakePacket;
|
||||
import network.protocol.packets.JoinRoomPacket;
|
||||
import network.protocol.packets.LeaveRoomPacket;
|
||||
import network.protocol.packets.LoginPacket;
|
||||
import network.protocol.packets.RequestRoomListPacket;
|
||||
import network.protocol.packets.RoomListPacket;
|
||||
import network.protocol.packets.SendChatMessagePacket;
|
||||
import network.protocol.packets.ServerResponsePacket;
|
||||
import network.protocol.packets.*;
|
||||
|
||||
public class ClientConnexion implements PacketVisitor, PacketHandler {
|
||||
|
||||
@@ -92,6 +82,16 @@ public class ClientConnexion implements PacketVisitor, PacketHandler {
|
||||
this.callback.handleServerResponse(packet.getResponse());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitPacket(RequestActualRoomPacket packet) {
|
||||
throw new UnsupportedOperationException("Unimplemented method 'visitPacket'");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitPacket(ActualRoomPacket packet) {
|
||||
this.callback.handleActualRoom(packet.getRoomName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitPacket(DisconnectPacket packet) {
|
||||
this.close();
|
||||
|
||||
@@ -84,7 +84,10 @@ public class ClientConsole implements ClientListener {
|
||||
this.client.SendJoinRoom(roomName);
|
||||
} else if (message.equals("/leaveRoom") || message.equals("/leave")) {
|
||||
this.client.SendLeaveRoom();
|
||||
} else if (message.equals("/bye")) {
|
||||
} else if (message.equals("/room")) {
|
||||
this.client.RequestActualRoom();
|
||||
}
|
||||
else if (message.equals("/bye")) {
|
||||
this.client.close();
|
||||
} else if (message.equals("/help")) {
|
||||
System.out.println("Available commands:");
|
||||
@@ -92,6 +95,8 @@ public class ClientConsole implements ClientListener {
|
||||
System.out.println("\t/listRooms");
|
||||
System.out.println("\t/joinRoom <roomName>");
|
||||
System.out.println("\t/leaveRoom");
|
||||
System.out.println("\t/room");
|
||||
System.out.println("\t/bye");
|
||||
System.out.println("\t/help");
|
||||
} else {
|
||||
System.out.println(ANSIColor.formatString("&rUnknown command&n"));
|
||||
@@ -145,6 +150,11 @@ public class ClientConsole implements ClientListener {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleActualRoom(String roomName) {
|
||||
System.out.println(roomName != null ? ANSIColor.formatString("You are now in room &b" + roomName + "&n") : "You are not in a room");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleServerResponse(Response response) {
|
||||
if (response == ServerResponsePacket.Response.MessageSent
|
||||
|
||||
@@ -13,5 +13,6 @@ public interface ClientListener {
|
||||
void handleChatMessage(Instant time, String chatter, String content);
|
||||
void handleRoomList(List<String> roomNames);
|
||||
void handleServerResponse(ServerResponsePacket.Response response);
|
||||
void handleActualRoom(String roomName);
|
||||
|
||||
}
|
||||
@@ -1,16 +1,6 @@
|
||||
package network.protocol;
|
||||
|
||||
import network.protocol.packets.ChatMessagePacket;
|
||||
import network.protocol.packets.CreateRoomPacket;
|
||||
import network.protocol.packets.DisconnectPacket;
|
||||
import network.protocol.packets.HandshakePacket;
|
||||
import network.protocol.packets.JoinRoomPacket;
|
||||
import network.protocol.packets.LeaveRoomPacket;
|
||||
import network.protocol.packets.LoginPacket;
|
||||
import network.protocol.packets.RequestRoomListPacket;
|
||||
import network.protocol.packets.RoomListPacket;
|
||||
import network.protocol.packets.SendChatMessagePacket;
|
||||
import network.protocol.packets.ServerResponsePacket;
|
||||
import network.protocol.packets.*;
|
||||
|
||||
public interface PacketVisitor {
|
||||
|
||||
@@ -29,5 +19,7 @@ public interface PacketVisitor {
|
||||
void visitPacket(RoomListPacket packet);
|
||||
void visitPacket(SendChatMessagePacket packet);
|
||||
void visitPacket(ServerResponsePacket packet);
|
||||
void visitPacket(RequestActualRoomPacket packet);
|
||||
void visitPacket(ActualRoomPacket packet);
|
||||
|
||||
}
|
||||
|
||||
21
ChatApp/src/network/protocol/packets/ActualRoomPacket.java
Normal file
21
ChatApp/src/network/protocol/packets/ActualRoomPacket.java
Normal file
@@ -0,0 +1,21 @@
|
||||
package network.protocol.packets;
|
||||
|
||||
import network.protocol.Packet;
|
||||
import network.protocol.PacketVisitor;
|
||||
|
||||
public class ActualRoomPacket extends Packet {
|
||||
private final String roomName;
|
||||
|
||||
public ActualRoomPacket(String roomName) {
|
||||
this.roomName = roomName;
|
||||
}
|
||||
|
||||
public String getRoomName() {
|
||||
return roomName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(PacketVisitor packetVisitor) {
|
||||
packetVisitor.visitPacket(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package network.protocol.packets;
|
||||
|
||||
import network.protocol.Packet;
|
||||
import network.protocol.PacketVisitor;
|
||||
|
||||
public class RequestActualRoomPacket extends Packet {
|
||||
public RequestActualRoomPacket() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(PacketVisitor packetVisitor) {
|
||||
packetVisitor.visitPacket(this);
|
||||
}
|
||||
}
|
||||
@@ -136,4 +136,15 @@ public class ServerConnexion implements PacketVisitor {
|
||||
throw new UnsupportedOperationException("Unimplemented method 'visitPacket'");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitPacket(RequestActualRoomPacket packet) {
|
||||
sendPacket(new ActualRoomPacket(server.getRoomName(this)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitPacket(ActualRoomPacket packet) {
|
||||
// I'm never supposed to receive this from the client
|
||||
throw new UnsupportedOperationException("Unimplemented method 'visitPacket'");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user