summaryrefslogtreecommitdiff
path: root/server/src/main/java/kz/ilotterytea/frogartha/server/ServerHandlers.java
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2025-01-23 00:55:33 +0500
committerilotterytea <iltsu@alright.party>2025-01-23 00:55:33 +0500
commit6bf7ee0b5f0c15fefa2a6cde4a17d8f6ade3f39b (patch)
treed085466f3d453a73322adc881296e6c8b30ba26e /server/src/main/java/kz/ilotterytea/frogartha/server/ServerHandlers.java
parent7757de487c909fe15e0ac0b5cbaa27f12109c66d (diff)
feat: chat !!!
Diffstat (limited to 'server/src/main/java/kz/ilotterytea/frogartha/server/ServerHandlers.java')
-rw-r--r--server/src/main/java/kz/ilotterytea/frogartha/server/ServerHandlers.java24
1 files changed, 20 insertions, 4 deletions
diff --git a/server/src/main/java/kz/ilotterytea/frogartha/server/ServerHandlers.java b/server/src/main/java/kz/ilotterytea/frogartha/server/ServerHandlers.java
index 6f16281..6891fef 100644
--- a/server/src/main/java/kz/ilotterytea/frogartha/server/ServerHandlers.java
+++ b/server/src/main/java/kz/ilotterytea/frogartha/server/ServerHandlers.java
@@ -5,11 +5,9 @@ import com.badlogic.gdx.math.Vector3;
import kz.ilotterytea.frogartha.FrogarthaConstants;
import kz.ilotterytea.frogartha.domain.Identity;
import kz.ilotterytea.frogartha.domain.PlayerState;
-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.ChangedDirectionEvent;
+import kz.ilotterytea.frogartha.domain.events.ChatMessageEvent;
import kz.ilotterytea.frogartha.domain.events.IdentifiedEvent;
import kz.ilotterytea.frogartha.domain.events.PlayerJumpEvent;
import kz.ilotterytea.frogartha.exceptions.PlayerKickException;
@@ -127,4 +125,22 @@ public class ServerHandlers {
log.log("{} left {}", player, room);
}
+
+ public static void handleChatMessageAction(PlayerConnection player, ChatMessageAction action) {
+ if (player.getRoom() == null) {
+ throw PlayerKickException.notInRoom();
+ }
+
+ long nowTimestamp = System.currentTimeMillis();
+
+ if (nowTimestamp - player.getState().getLastMessageTimestamp() < FrogarthaConstants.Chat.MESSAGE_PER_MS) {
+ throw PlayerKickException.messageSpam();
+ }
+
+ player.getState().setLastMessageTimestamp(nowTimestamp);
+
+ Room room = player.getRoom();
+ room.broadcast(new ChatMessageEvent(player.getId(), action.getMessage()));
+ log.log("{} sent a message: {}", player, action.getMessage());
+ }
}