This commit is contained in:
@@ -3,20 +3,45 @@ package network.client;
|
||||
import java.io.IOException;
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
import common.Signal;
|
||||
import game.Game;
|
||||
import game.Player;
|
||||
import network.protocol.packets.LoginPacket;
|
||||
|
||||
public class Client {
|
||||
private final ClientConnexion clientConnection;
|
||||
private final Game game;
|
||||
|
||||
public final Signal onConnect = new Signal();
|
||||
public final Signal onDisconnect = new Signal();
|
||||
public final Signal onClosed = new Signal();
|
||||
|
||||
public Client(String address, short port) throws UnknownHostException, IOException {
|
||||
this.clientConnection = new ClientConnexion(address, port, this);
|
||||
this.game = new Game();
|
||||
login("Player2" + Math.random());
|
||||
}
|
||||
|
||||
public void login(String pseudo) {
|
||||
System.out.println("Logging in with pseudo " + pseudo + " ...");
|
||||
this.clientConnection.sendPacket(new LoginPacket(pseudo));
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
this.clientConnection.close();
|
||||
}
|
||||
|
||||
public void onDisconnect() {
|
||||
// do some stuff
|
||||
System.out.println("OSEKOUR");
|
||||
public void addPlayer(Player player) {
|
||||
this.game.addPlayer(player);
|
||||
}
|
||||
|
||||
|
||||
public Game getGame() {
|
||||
return game;
|
||||
}
|
||||
|
||||
public void forceDisconnect() {
|
||||
this.onClosed.emit();
|
||||
stop();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,14 +4,19 @@ 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;
|
||||
|
||||
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));
|
||||
@@ -20,13 +25,16 @@ public class ClientConnexion extends Connexion {
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
super.close();
|
||||
client.onDisconnect();
|
||||
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
|
||||
@@ -40,4 +48,20 @@ public class ClientConnexion extends Connexion {
|
||||
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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user