ClientListener + ClientConsole

This commit is contained in:
2025-03-01 12:41:40 +01:00
parent a041193ce2
commit 07ad2ba05e
7 changed files with 203 additions and 133 deletions

View File

@@ -7,7 +7,6 @@ import java.net.InetSocketAddress;
import network.PacketHandler;
import network.SocketReader;
import network.SocketWriter;
import network.protocol.ANSIColor;
import network.protocol.Packet;
import network.protocol.PacketVisitor;
import network.protocol.packets.ChatMessagePacket;
@@ -25,19 +24,27 @@ public class ClientConnexion implements PacketVisitor, PacketHandler{
private final InetSocketAddress serverAddress;
private final SocketWriter writer;
private final SocketReader reader;
private final ClientListener callback;
public ClientConnexion(DatagramSocket socket, InetSocketAddress serverAddress) {
public ClientConnexion(DatagramSocket socket, InetSocketAddress serverAddress, ClientListener callback) {
this.serverAddress = serverAddress;
this.writer = new SocketWriter(socket);
this.reader = new SocketReader(socket, this);
this.callback = callback;
}
public void close() {
this.reader.stop();
}
public void sendPacket(Packet packet) throws IOException {
this.writer.sendPacket(packet, serverAddress);
public void sendPacket(Packet packet) {
try {
this.writer.sendPacket(packet, serverAddress);
} catch (IOException e) {
this.close();
this.callback.handleDisconnect();
e.printStackTrace();
}
}
@Override
@@ -48,16 +55,17 @@ public class ClientConnexion implements PacketVisitor, PacketHandler{
@Override
public void visitPacket(ChatMessagePacket packet) {
StringBuilder sb = new StringBuilder();
String time = packet.getTime().toString();
sb.append("&y[");
sb.append(time, 11, 19); // We only take the HH:MM:SS part
sb.append("]&n");
sb.append(" ");
sb.append(packet.getChatter());
sb.append(" : ");
sb.append(packet.getContent()).append("&n"); // make the color back to normal at the end of every message
System.out.println(ANSIColor.formatString(sb.toString()));
this.callback.handleChatMessage(packet.getTime(), packet.getChatter(), packet.getContent());
}
@Override
public void visitPacket(RoomListPacket packet) {
this.callback.handleRoomList(packet.getRoomNames());
}
@Override
public void visitPacket(ServerResponsePacket packet) {
this.callback.handleServerResponse(packet.getResponse());
}
@Override
@@ -85,25 +93,9 @@ public class ClientConnexion implements PacketVisitor, PacketHandler{
throw new UnsupportedOperationException("Unimplemented method 'visitPacket'");
}
@Override
public void visitPacket(RoomListPacket packet) {
System.out.println("Rooms :");
for (String room : packet.getRoomNames()) {
System.out.println("\t" + room);
}
}
@Override
public void visitPacket(SendChatMessagePacket packet) {
throw new UnsupportedOperationException("Unimplemented method 'visitPacket'");
}
@Override
public void visitPacket(ServerResponsePacket packet) {
if(packet.getResponse() == ServerResponsePacket.Response.MessageSent || packet.getResponse() == ServerResponsePacket.Response.MessageNotSent) {
return;
}
System.out.println(packet.getResponse());
}
}