From 449c70cbf900a80042f70dd8929f302f0f0016d7 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Wed, 22 Jan 2025 04:11:41 +0500 Subject: feat: MULTIPLAYER!!!!!!!!!!!!!!! LETS FUCKING GOOOOOOOO!!!!! --- .../frogartha/domain/events/IdentifiedEvent.java | 25 +++++++++++ .../domain/events/PlayerJoinedRoomEvent.java | 35 +++++++++++++++ .../domain/events/PlayerLeftRoomEvent.java | 25 +++++++++++ .../domain/events/SenderJoinedRoomEvent.java | 51 ++++++++++++++++++++++ .../domain/events/SenderLeftRoomEvent.java | 25 +++++++++++ 5 files changed, 161 insertions(+) create mode 100644 shared/src/main/java/kz/ilotterytea/frogartha/domain/events/IdentifiedEvent.java create mode 100644 shared/src/main/java/kz/ilotterytea/frogartha/domain/events/PlayerJoinedRoomEvent.java create mode 100644 shared/src/main/java/kz/ilotterytea/frogartha/domain/events/PlayerLeftRoomEvent.java create mode 100644 shared/src/main/java/kz/ilotterytea/frogartha/domain/events/SenderJoinedRoomEvent.java create mode 100644 shared/src/main/java/kz/ilotterytea/frogartha/domain/events/SenderLeftRoomEvent.java (limited to 'shared/src/main/java/kz/ilotterytea/frogartha/domain/events') diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/IdentifiedEvent.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/IdentifiedEvent.java new file mode 100644 index 0000000..d2d9e1e --- /dev/null +++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/IdentifiedEvent.java @@ -0,0 +1,25 @@ +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; + +public class IdentifiedEvent extends Event implements Transferable { + public IdentifiedEvent() { + } + + public IdentifiedEvent(int playerId) { + this.playerId = playerId; + } + + @Override + public void serialize(Serializer serializer) throws SerializationException { + serializer.serializeInt(playerId); + } + + @Override + public IdentifiedEvent deserialize(Deserializer deserializer) throws SerializationException { + return new IdentifiedEvent(deserializer.deserializeInt()); + } +} diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/PlayerJoinedRoomEvent.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/PlayerJoinedRoomEvent.java new file mode 100644 index 0000000..f9389a3 --- /dev/null +++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/PlayerJoinedRoomEvent.java @@ -0,0 +1,35 @@ +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; + +public class PlayerJoinedRoomEvent extends Event implements Transferable { + private PlayerData data; + + public PlayerJoinedRoomEvent() { + } + + public PlayerJoinedRoomEvent(int playerId, PlayerData data) { + super(playerId); + this.data = data; + } + + public PlayerData getData() { + return data; + } + + @Override + public void serialize(Serializer serializer) throws SerializationException { + serializer + .serializeInt(playerId) + .serializeTransferable(data); + } + + @Override + public PlayerJoinedRoomEvent deserialize(Deserializer deserializer) throws SerializationException { + return new PlayerJoinedRoomEvent(deserializer.deserializeInt(), deserializer.deserializeTransferable(new PlayerData())); + } +} diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/PlayerLeftRoomEvent.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/PlayerLeftRoomEvent.java new file mode 100644 index 0000000..5472e95 --- /dev/null +++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/PlayerLeftRoomEvent.java @@ -0,0 +1,25 @@ +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; + +public class PlayerLeftRoomEvent extends Event implements Transferable { + public PlayerLeftRoomEvent() { + } + + public PlayerLeftRoomEvent(int playerId) { + super(playerId); + } + + @Override + public void serialize(Serializer serializer) throws SerializationException { + serializer.serializeInt(playerId); + } + + @Override + public PlayerLeftRoomEvent deserialize(Deserializer deserializer) throws SerializationException { + return new PlayerLeftRoomEvent(deserializer.deserializeInt()); + } +} 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 new file mode 100644 index 0000000..b032c47 --- /dev/null +++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/SenderJoinedRoomEvent.java @@ -0,0 +1,51 @@ +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; +import java.util.stream.Collectors; + +public class SenderJoinedRoomEvent extends Event implements Transferable { + private List ids; + private List players; + + public SenderJoinedRoomEvent() { + } + + public SenderJoinedRoomEvent(int playerId, List ids, List players) { + super(playerId); + this.ids = ids; + this.players = players; + } + + public List getIds() { + return ids; + } + + public List getPlayers() { + return players; + } + + @Override + public void serialize(Serializer serializer) throws SerializationException { + serializer.serializeInt(playerId) + .serializeIntArray(ids.stream().mapToInt(Integer::intValue).toArray()) + .serializeTransferableArray(players.toArray(new PlayerData[]{})); + } + + @Override + public SenderJoinedRoomEvent deserialize(Deserializer deserializer) throws SerializationException { + List ids = Arrays.stream(deserializer.deserializeIntArray()).boxed().collect(Collectors.toList()); + return new SenderJoinedRoomEvent( + deserializer.deserializeInt(), + new ArrayList<>(ids), + new ArrayList<>(Arrays.asList(deserializer.deserializeTransferableArray(new PlayerData(), size -> new PlayerData[ids.size()]))) + ); + } +} diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/SenderLeftRoomEvent.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/SenderLeftRoomEvent.java new file mode 100644 index 0000000..2c2b35b --- /dev/null +++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/SenderLeftRoomEvent.java @@ -0,0 +1,25 @@ +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; + +public class SenderLeftRoomEvent extends Event implements Transferable { + public SenderLeftRoomEvent() { + } + + public SenderLeftRoomEvent(int playerId) { + super(playerId); + } + + @Override + public void serialize(Serializer serializer) throws SerializationException { + serializer.serializeInt(playerId); + } + + @Override + public SenderLeftRoomEvent deserialize(Deserializer deserializer) throws SerializationException { + return new SenderLeftRoomEvent(deserializer.deserializeInt()); + } +} -- cgit v1.2.3