diff options
| author | ilotterytea <iltsu@alright.party> | 2025-01-23 00:55:33 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2025-01-23 00:55:33 +0500 |
| commit | 6bf7ee0b5f0c15fefa2a6cde4a17d8f6ade3f39b (patch) | |
| tree | d085466f3d453a73322adc881296e6c8b30ba26e /server/src/main/java/kz/ilotterytea/frogartha/server/ServerHandlers.java | |
| parent | 7757de487c909fe15e0ac0b5cbaa27f12109c66d (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.java | 24 |
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()); + } } |
