|
|
@@ -4,28 +4,34 @@ import com.esotericsoftware.kryonet.Client;
|
|
|
import com.esotericsoftware.kryonet.Connection;
|
|
|
import com.esotericsoftware.kryonet.Listener;
|
|
|
import me.lethunderhawk.entity.Player;
|
|
|
+import me.lethunderhawk.network.packet.*;
|
|
|
+import me.lethunderhawk.network.packet.impl.PlayerLoginPacket;
|
|
|
+import me.lethunderhawk.network.packet.impl.PlayerMovePacket;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
|
|
-public class GameClient extends Listener {
|
|
|
+public class GameClient extends Listener implements EventListener {
|
|
|
|
|
|
private final Client client;
|
|
|
- private final Map<UUID, Player> otherPlayers = new ConcurrentHashMap<>();
|
|
|
+
|
|
|
private final Player player;
|
|
|
+ private final ClientPacketListener clientPacketListener;
|
|
|
|
|
|
public GameClient() {
|
|
|
this.player = new Player();
|
|
|
client = new Client();
|
|
|
|
|
|
client.start();
|
|
|
+ this.clientPacketListener = new ClientPacketListener();
|
|
|
+ PacketDispatcher.registerListener(clientPacketListener);
|
|
|
|
|
|
registerPackets();
|
|
|
}
|
|
|
|
|
|
private void registerPackets() {
|
|
|
- NetworkRegister.register(client.getKryo());
|
|
|
+ PacketRegistry.register(client.getKryo());
|
|
|
}
|
|
|
|
|
|
public void connect(String ip) throws IOException {
|
|
|
@@ -37,32 +43,26 @@ public class GameClient extends Listener {
|
|
|
54777
|
|
|
);
|
|
|
client.addListener(this);
|
|
|
+ PlayerLoginPacket loginPacket = new PlayerLoginPacket();
|
|
|
+ loginPacket.player = player;
|
|
|
+ send(loginPacket);
|
|
|
}
|
|
|
|
|
|
public void send(Object packet) {
|
|
|
-
|
|
|
client.sendUDP(packet);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void received (Connection connection, Object object) {
|
|
|
- if(object instanceof Packets.PlayerLoginPacket packet) {
|
|
|
- otherPlayers.put(packet.player.uuid, packet.player);
|
|
|
- }
|
|
|
-
|
|
|
- if(object instanceof Packets.PlayerPositionPacket packet) {
|
|
|
- handlePlayerPosition(packet);
|
|
|
+ if(object instanceof Packet packet){
|
|
|
+ PacketDispatcher.dispatchPacket(packet, connection);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void handlePlayerPosition(Packets.PlayerPositionPacket packet) {
|
|
|
- Player player = otherPlayers.computeIfAbsent(packet.player.uuid, uuid -> {
|
|
|
- Player p = new Player();
|
|
|
- p.uuid = uuid;
|
|
|
- return p;
|
|
|
- });
|
|
|
- player.x = packet.x;
|
|
|
- player.y = packet.y;
|
|
|
+
|
|
|
+
|
|
|
+ public void disconnect(){
|
|
|
+ client.stop();
|
|
|
}
|
|
|
|
|
|
public Player getPlayer() {
|
|
|
@@ -70,6 +70,6 @@ public class GameClient extends Listener {
|
|
|
}
|
|
|
|
|
|
public Map<UUID, Player> getOtherPlayers() {
|
|
|
- return otherPlayers;
|
|
|
+ return clientPacketListener.getOtherPlayers();
|
|
|
}
|
|
|
}
|