package kz.ilotterytea.frogartha.domain.events; import com.github.czyzby.websocket.serialization.SerializationException; import com.github.czyzby.websocket.serialization.Transferable; import com.github.czyzby.websocket.serialization.impl.Deserializer; import com.github.czyzby.websocket.serialization.impl.Serializer; import kz.ilotterytea.frogartha.domain.PlayerData; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class SenderJoinedRoomEvent extends Event implements Transferable { private List players; private int playerCount; public SenderJoinedRoomEvent() { } public SenderJoinedRoomEvent(int playerId, List players) { super(playerId); this.players = players; this.playerCount = players.size(); } public List getPlayers() { return players; } @Override public void serialize(Serializer serializer) throws SerializationException { serializer.serializeInt(playerId) .serializeInt(playerCount) .serializeTransferableArray(players.toArray(new PlayerData[]{})); } @Override public SenderJoinedRoomEvent deserialize(Deserializer deserializer) throws SerializationException { int id = deserializer.deserializeInt(); int playerCount = deserializer.deserializeInt(); return new SenderJoinedRoomEvent( id, new ArrayList<>(Arrays.asList(deserializer.deserializeTransferableArray(new PlayerData(), size -> new PlayerData[playerCount]))) ); } }