diff options
Diffstat (limited to 'shared/src/main/java')
12 files changed, 242 insertions, 46 deletions
diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/FrogarthaConstants.java b/shared/src/main/java/kz/ilotterytea/frogartha/FrogarthaConstants.java index d5cdb06..84dc6b0 100644 --- a/shared/src/main/java/kz/ilotterytea/frogartha/FrogarthaConstants.java +++ b/shared/src/main/java/kz/ilotterytea/frogartha/FrogarthaConstants.java @@ -10,4 +10,8 @@ public class FrogarthaConstants { public static final float MAX_JUMP_HEIGHT = 2f; public static final float JUMP_SPEED = 10f; } + + public static class Room { + public static final int MAX_PLAYERS = 30; + } } diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/RoomTopic.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/RoomTopic.java new file mode 100644 index 0000000..5b2f47e --- /dev/null +++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/RoomTopic.java @@ -0,0 +1,5 @@ +package kz.ilotterytea.frogartha.domain; + +public enum RoomTopic { + POND +} diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/actions/JoinRoomAction.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/actions/JoinRoomAction.java new file mode 100644 index 0000000..fa19d27 --- /dev/null +++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/actions/JoinRoomAction.java @@ -0,0 +1,32 @@ +package kz.ilotterytea.frogartha.domain.actions; + +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.RoomTopic; + +public class JoinRoomAction implements Transferable<JoinRoomAction> { + private RoomTopic topic; + + public JoinRoomAction() { + } + + public JoinRoomAction(RoomTopic topic) { + this.topic = topic; + } + + public RoomTopic getTopic() { + return topic; + } + + @Override + public void serialize(Serializer serializer) throws SerializationException { + serializer.serializeInt(topic.ordinal()); + } + + @Override + public JoinRoomAction deserialize(Deserializer deserializer) throws SerializationException { + return new JoinRoomAction(RoomTopic.values()[deserializer.deserializeInt()]); + } +} diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/actions/LeaveRoomAction.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/actions/LeaveRoomAction.java new file mode 100644 index 0000000..2ae304a --- /dev/null +++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/actions/LeaveRoomAction.java @@ -0,0 +1,20 @@ +package kz.ilotterytea.frogartha.domain.actions; + +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 LeaveRoomAction implements Transferable<LeaveRoomAction> { + public LeaveRoomAction() { + } + + @Override + public void serialize(Serializer serializer) throws SerializationException { + } + + @Override + public LeaveRoomAction deserialize(Deserializer deserializer) throws SerializationException { + return new LeaveRoomAction(); + } +} 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<IdentifiedEvent> { + 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<PlayerJoinedRoomEvent> { + 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<PlayerLeftRoomEvent> { + 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<SenderJoinedRoomEvent> { + private List<Integer> ids; + private List<PlayerData> players; + + public SenderJoinedRoomEvent() { + } + + public SenderJoinedRoomEvent(int playerId, List<Integer> ids, List<PlayerData> players) { + super(playerId); + this.ids = ids; + this.players = players; + } + + public List<Integer> getIds() { + return ids; + } + + public List<PlayerData> 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<Integer> 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<SenderLeftRoomEvent> { + 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()); + } +} diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/server/Acknowledge.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/server/Acknowledge.java deleted file mode 100644 index 8ca0f66..0000000 --- a/shared/src/main/java/kz/ilotterytea/frogartha/domain/server/Acknowledge.java +++ /dev/null @@ -1,42 +0,0 @@ -package kz.ilotterytea.frogartha.domain.server; - -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 Acknowledge implements Transferable<Acknowledge> { - public enum AcknowledgeCode { - IDENTIFIED - } - - private AcknowledgeCode code; - - public Acknowledge() { - } - - public Acknowledge(AcknowledgeCode code) { - this.code = code; - } - - public AcknowledgeCode getCode() { - return code; - } - - @Override - public String toString() { - return "Acknowledge{" + - "code=" + code.toString() + - '}'; - } - - @Override - public void serialize(Serializer serializer) throws SerializationException { - serializer.serializeInt(code.ordinal()); - } - - @Override - public Acknowledge deserialize(Deserializer deserializer) throws SerializationException { - return new Acknowledge(AcknowledgeCode.values()[deserializer.deserializeInt()]); - } -} diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/exceptions/PlayerKickException.java b/shared/src/main/java/kz/ilotterytea/frogartha/exceptions/PlayerKickException.java index ec0deb4..ad9c408 100644 --- a/shared/src/main/java/kz/ilotterytea/frogartha/exceptions/PlayerKickException.java +++ b/shared/src/main/java/kz/ilotterytea/frogartha/exceptions/PlayerKickException.java @@ -25,6 +25,14 @@ public class PlayerKickException extends RuntimeException implements Transferabl return new PlayerKickException("Kicked for jump spamming"); } + public static PlayerKickException illegalOperation() { + return new PlayerKickException("Illegal operation"); + } + + public static PlayerKickException notInRoom() { + return new PlayerKickException("You are not in room"); + } + @Override public void serialize(Serializer serializer) throws SerializationException { serializer.serializeString(getMessage()); diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/utils/SerializerUtils.java b/shared/src/main/java/kz/ilotterytea/frogartha/utils/SerializerUtils.java index 2df2acf..e005937 100644 --- a/shared/src/main/java/kz/ilotterytea/frogartha/utils/SerializerUtils.java +++ b/shared/src/main/java/kz/ilotterytea/frogartha/utils/SerializerUtils.java @@ -3,20 +3,28 @@ package kz.ilotterytea.frogartha.utils; import com.github.czyzby.websocket.serialization.impl.ManualSerializer; import kz.ilotterytea.frogartha.domain.Identity; import kz.ilotterytea.frogartha.domain.actions.ChangedDirectionAction; +import kz.ilotterytea.frogartha.domain.actions.JoinRoomAction; +import kz.ilotterytea.frogartha.domain.actions.LeaveRoomAction; import kz.ilotterytea.frogartha.domain.actions.PlayerJumpAction; -import kz.ilotterytea.frogartha.domain.events.ChangedDirectionEvent; -import kz.ilotterytea.frogartha.domain.events.PlayerJumpEvent; -import kz.ilotterytea.frogartha.domain.server.Acknowledge; +import kz.ilotterytea.frogartha.domain.events.*; import kz.ilotterytea.frogartha.exceptions.PlayerKickException; public class SerializerUtils { public static void registerTypes(ManualSerializer serializer) { - serializer.register(new Acknowledge()); serializer.register(new Identity()); serializer.register(new PlayerKickException()); serializer.register(new PlayerJumpAction()); serializer.register(new PlayerJumpEvent()); serializer.register(new ChangedDirectionAction()); serializer.register(new ChangedDirectionEvent()); + serializer.register(new IdentifiedEvent()); + + serializer.register(new JoinRoomAction()); + serializer.register(new PlayerJoinedRoomEvent()); + serializer.register(new SenderJoinedRoomEvent()); + + serializer.register(new LeaveRoomAction()); + serializer.register(new PlayerLeftRoomEvent()); + serializer.register(new SenderLeftRoomEvent()); } } |
