From 9f1e7c6eaecc3f9c97b77163c5e2ba7a2cfde081 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Wed, 22 Jan 2025 18:08:38 +0500 Subject: upd: pass id in PlayerData + other way to send an array of players --- .../frogartha/sessions/SessionHandlers.java | 3 +-- .../frogartha/server/PlayerConnection.java | 5 ----- .../java/kz/ilotterytea/frogartha/server/Room.java | 1 - .../kz/ilotterytea/frogartha/domain/PlayerData.java | 18 ++++++++++++++---- .../domain/events/SenderJoinedRoomEvent.java | 21 ++++++++------------- 5 files changed, 23 insertions(+), 25 deletions(-) diff --git a/core/src/main/java/kz/ilotterytea/frogartha/sessions/SessionHandlers.java b/core/src/main/java/kz/ilotterytea/frogartha/sessions/SessionHandlers.java index c7abe3e..6fddee9 100644 --- a/core/src/main/java/kz/ilotterytea/frogartha/sessions/SessionHandlers.java +++ b/core/src/main/java/kz/ilotterytea/frogartha/sessions/SessionHandlers.java @@ -95,9 +95,8 @@ public class SessionHandlers { HashMap map = new HashMap<>(); for (int i = 0; i < event.getPlayers().size(); i++) { - Integer id = event.getIds().get(i); PlayerData data = event.getPlayers().get(i); - map.put(id, data); + map.put(data.getId(), data); } client.getPlayerDataMap().putAll(map); diff --git a/server/src/main/java/kz/ilotterytea/frogartha/server/PlayerConnection.java b/server/src/main/java/kz/ilotterytea/frogartha/server/PlayerConnection.java index 56dd695..f1d0a3b 100644 --- a/server/src/main/java/kz/ilotterytea/frogartha/server/PlayerConnection.java +++ b/server/src/main/java/kz/ilotterytea/frogartha/server/PlayerConnection.java @@ -8,7 +8,6 @@ import java.sql.Timestamp; public class PlayerConnection extends PlayerData { private static int TOTAL_CONNECTION_IDS = 0; - private final int id; private final WebSocket connection; private Room room; @@ -32,10 +31,6 @@ public class PlayerConnection extends PlayerData { } } - public int getId() { - return id; - } - public WebSocket getConnection() { return connection; } diff --git a/server/src/main/java/kz/ilotterytea/frogartha/server/Room.java b/server/src/main/java/kz/ilotterytea/frogartha/server/Room.java index 1c76a45..75b739d 100644 --- a/server/src/main/java/kz/ilotterytea/frogartha/server/Room.java +++ b/server/src/main/java/kz/ilotterytea/frogartha/server/Room.java @@ -38,7 +38,6 @@ public class Room { broadcast(new PlayerJoinedRoomEvent(player.getId(), player)); player.send(new SenderJoinedRoomEvent( player.getId(), - this.players.stream().map(PlayerConnection::getId).collect(Collectors.toList()), this.players.stream().map((x) -> (PlayerData) x).collect(Collectors.toList()) )); player.setRoom(this); diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerData.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerData.java index 2054e68..f30f0c2 100644 --- a/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerData.java +++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerData.java @@ -6,17 +6,23 @@ import com.github.czyzby.websocket.serialization.impl.Deserializer; import com.github.czyzby.websocket.serialization.impl.Serializer; public class PlayerData implements Transferable { - private Identity identity; - private PlayerState state; + protected int id; + protected Identity identity; + protected PlayerState state; public PlayerData() { } - public PlayerData(Identity identity, PlayerState state) { + public PlayerData(int id, Identity identity, PlayerState state) { + this.id = id; this.identity = identity; this.state = state; } + public int getId() { + return id; + } + public Identity getIdentity() { return identity; } @@ -32,12 +38,16 @@ public class PlayerData implements Transferable { @Override public void serialize(Serializer serializer) throws SerializationException { - serializer.serializeTransferable(identity).serializeTransferable(state); + serializer + .serializeInt(id) + .serializeTransferable(identity) + .serializeTransferable(state); } @Override public PlayerData deserialize(Deserializer deserializer) throws SerializationException { return new PlayerData( + deserializer.deserializeInt(), deserializer.deserializeTransferable(new Identity()), deserializer.deserializeTransferable(new PlayerState()) ); diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/SenderJoinedRoomEvent.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/SenderJoinedRoomEvent.java index b032c47..93caea0 100644 --- a/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/SenderJoinedRoomEvent.java +++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/SenderJoinedRoomEvent.java @@ -9,23 +9,18 @@ import kz.ilotterytea.frogartha.domain.PlayerData; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.stream.Collectors; public class SenderJoinedRoomEvent extends Event implements Transferable { - private List ids; private List players; + private int playerCount; public SenderJoinedRoomEvent() { } - public SenderJoinedRoomEvent(int playerId, List ids, List players) { + public SenderJoinedRoomEvent(int playerId, List players) { super(playerId); - this.ids = ids; this.players = players; - } - - public List getIds() { - return ids; + this.playerCount = players.size(); } public List getPlayers() { @@ -35,17 +30,17 @@ public class SenderJoinedRoomEvent extends Event implements Transferable ids = Arrays.stream(deserializer.deserializeIntArray()).boxed().collect(Collectors.toList()); + int id = deserializer.deserializeInt(); + int playerCount = deserializer.deserializeInt(); return new SenderJoinedRoomEvent( - deserializer.deserializeInt(), - new ArrayList<>(ids), - new ArrayList<>(Arrays.asList(deserializer.deserializeTransferableArray(new PlayerData(), size -> new PlayerData[ids.size()]))) + id, + new ArrayList<>(Arrays.asList(deserializer.deserializeTransferableArray(new PlayerData(), size -> new PlayerData[playerCount]))) ); } } -- cgit v1.2.3