summaryrefslogtreecommitdiff
path: root/shared/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'shared/src/main')
-rw-r--r--shared/src/main/java/kz/ilotterytea/frogartha/FrogarthaConstants.java5
-rw-r--r--shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerState.java9
-rw-r--r--shared/src/main/java/kz/ilotterytea/frogartha/domain/actions/ChatMessageAction.java31
-rw-r--r--shared/src/main/java/kz/ilotterytea/frogartha/domain/events/ChatMessageEvent.java32
-rw-r--r--shared/src/main/java/kz/ilotterytea/frogartha/exceptions/PlayerKickException.java4
-rw-r--r--shared/src/main/java/kz/ilotterytea/frogartha/utils/SerializerUtils.java8
6 files changed, 85 insertions, 4 deletions
diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/FrogarthaConstants.java b/shared/src/main/java/kz/ilotterytea/frogartha/FrogarthaConstants.java
index 84dc6b0..e205bf5 100644
--- a/shared/src/main/java/kz/ilotterytea/frogartha/FrogarthaConstants.java
+++ b/shared/src/main/java/kz/ilotterytea/frogartha/FrogarthaConstants.java
@@ -14,4 +14,9 @@ public class FrogarthaConstants {
public static class Room {
public static final int MAX_PLAYERS = 30;
}
+
+ public static class Chat {
+ public static final int MAX_MESSAGE_LENGTH = 100;
+ public static final int MESSAGE_PER_MS = 500;
+ }
}
diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerState.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerState.java
index 0aa89c5..c3db5a8 100644
--- a/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerState.java
+++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerState.java
@@ -11,6 +11,7 @@ public class PlayerState implements Transferable<PlayerState> {
private final Vector3 position;
private final Vector2 direction;
private float nextJumpTimestamp;
+ private long lastMessageTimestamp;
public PlayerState() {
this(new Vector3(), new Vector2());
@@ -42,6 +43,14 @@ public class PlayerState implements Transferable<PlayerState> {
this.nextJumpTimestamp = nextJumpTimestamp;
}
+ public long getLastMessageTimestamp() {
+ return lastMessageTimestamp;
+ }
+
+ public void setLastMessageTimestamp(long lastMessageTimestamp) {
+ this.lastMessageTimestamp = lastMessageTimestamp;
+ }
+
public void setDirection(float x, float z) {
this.direction.set(x, z);
}
diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/actions/ChatMessageAction.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/actions/ChatMessageAction.java
new file mode 100644
index 0000000..465238a
--- /dev/null
+++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/actions/ChatMessageAction.java
@@ -0,0 +1,31 @@
+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 ChatMessageAction implements Transferable<ChatMessageAction> {
+ private String message;
+
+ public ChatMessageAction() {
+ }
+
+ public ChatMessageAction(String message) {
+ this.message = message;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ @Override
+ public void serialize(Serializer serializer) throws SerializationException {
+ serializer.serializeString(message);
+ }
+
+ @Override
+ public ChatMessageAction deserialize(Deserializer deserializer) throws SerializationException {
+ return new ChatMessageAction(deserializer.deserializeString());
+ }
+}
diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/ChatMessageEvent.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/ChatMessageEvent.java
new file mode 100644
index 0000000..7bd395e
--- /dev/null
+++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/ChatMessageEvent.java
@@ -0,0 +1,32 @@
+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 ChatMessageEvent extends Event implements Transferable<ChatMessageEvent> {
+ private String message;
+
+ public ChatMessageEvent() {
+ }
+
+ public ChatMessageEvent(int playerId, String message) {
+ super(playerId);
+ this.message = message;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ @Override
+ public void serialize(Serializer serializer) throws SerializationException {
+ serializer.serializeInt(playerId).serializeString(message);
+ }
+
+ @Override
+ public ChatMessageEvent deserialize(Deserializer deserializer) throws SerializationException {
+ return new ChatMessageEvent(deserializer.deserializeInt(), deserializer.deserializeString());
+ }
+}
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 ad9c408..e24c633 100644
--- a/shared/src/main/java/kz/ilotterytea/frogartha/exceptions/PlayerKickException.java
+++ b/shared/src/main/java/kz/ilotterytea/frogartha/exceptions/PlayerKickException.java
@@ -33,6 +33,10 @@ public class PlayerKickException extends RuntimeException implements Transferabl
return new PlayerKickException("You are not in room");
}
+ public static PlayerKickException messageSpam() {
+ return new PlayerKickException("Kicked for spamming");
+ }
+
@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 e005937..3529968 100644
--- a/shared/src/main/java/kz/ilotterytea/frogartha/utils/SerializerUtils.java
+++ b/shared/src/main/java/kz/ilotterytea/frogartha/utils/SerializerUtils.java
@@ -2,10 +2,7 @@ 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.actions.*;
import kz.ilotterytea.frogartha.domain.events.*;
import kz.ilotterytea.frogartha.exceptions.PlayerKickException;
@@ -26,5 +23,8 @@ public class SerializerUtils {
serializer.register(new LeaveRoomAction());
serializer.register(new PlayerLeftRoomEvent());
serializer.register(new SenderLeftRoomEvent());
+
+ serializer.register(new ChatMessageAction());
+ serializer.register(new ChatMessageEvent());
}
}