77 lines
2.0 KiB
Java
77 lines
2.0 KiB
Java
package network.client;
|
|
|
|
import java.io.IOException;
|
|
import java.net.Socket;
|
|
import java.net.UnknownHostException;
|
|
|
|
import game.Player;
|
|
import network.Connexion;
|
|
import network.protocol.packets.ConnexionInfoPacket;
|
|
import network.protocol.packets.DisconnectPacket;
|
|
import network.protocol.packets.KeepAlivePacket;
|
|
import network.protocol.packets.LoginPacket;
|
|
import network.protocol.packets.PlayerJoinPacket;
|
|
import network.protocol.packets.PlayerLeavePacket;
|
|
import network.protocol.packets.StartGamePacket;
|
|
import sudoku.io.SudokuSerializer;
|
|
|
|
public class ClientConnexion extends Connexion {
|
|
|
|
private final Client client;
|
|
private Player player = null;
|
|
|
|
public ClientConnexion(String address, short port, Client client) throws UnknownHostException, IOException {
|
|
super(new Socket(address, port));
|
|
this.client = client;
|
|
}
|
|
|
|
@Override
|
|
public void close() {
|
|
if (!this.isClosed()) {
|
|
super.close();
|
|
client.onDisconnect.emit();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void visitPacket(ConnexionInfoPacket packet) {
|
|
this.player = this.client.getGame().getPlayerById(packet.getConnectionId());
|
|
client.onConnect.emit();
|
|
}
|
|
|
|
@Override
|
|
public void visitPacket(KeepAlivePacket packet) {
|
|
// we just send the packet back to the server
|
|
sendPacket(packet);
|
|
}
|
|
|
|
@Override
|
|
public void visitPacket(DisconnectPacket packet) {
|
|
this.client.disconnectReason = packet.getReason();
|
|
close();
|
|
}
|
|
|
|
@Override
|
|
public void visitPacket(LoginPacket packet) {
|
|
throw new UnsupportedOperationException("Unimplemented method 'visitPacketLogin'");
|
|
}
|
|
|
|
@Override
|
|
public void visitPacket(PlayerJoinPacket packet) {
|
|
this.client.addPlayer(packet.getPlayer());
|
|
System.out.println("[Client] " + packet.getPlayer().getPseudo() + " joined the game !");
|
|
}
|
|
|
|
@Override
|
|
public void visitPacket(PlayerLeavePacket packet) {
|
|
this.client.getGame().removePlayer(packet.getPlayer());
|
|
}
|
|
|
|
@Override
|
|
public void visitPacket(StartGamePacket packet) {
|
|
this.client.getGame().startGame(SudokuSerializer.deserializeSudoku(packet.getSerializedSudoku()));
|
|
this.client.onGameStarted.emit();
|
|
}
|
|
|
|
}
|