From b3739521c1dcaed9bd451e00067b7d304521745f Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Wed, 22 Jan 2025 01:00:49 +0500 Subject: feat: player direction is now calculated by server --- .../ilotterytea/frogartha/domain/PlayerState.java | 2 +- .../domain/client/ChangedDirectionAction.java | 32 ++++++++++++++++++++ .../frogartha/events/ChangedDirectionEvent.java | 35 ++++++++++++++++++++++ .../frogartha/utils/SerializerUtils.java | 4 +++ 4 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 shared/src/main/java/kz/ilotterytea/frogartha/domain/client/ChangedDirectionAction.java create mode 100644 shared/src/main/java/kz/ilotterytea/frogartha/events/ChangedDirectionEvent.java (limited to 'shared') 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 15ba015..d3bd18c 100644 --- a/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerState.java +++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerState.java @@ -37,6 +37,6 @@ public class PlayerState { } public void setDirection(float x, float y, float z) { - this.position.set(x, y, z); + this.direction.set(x, y, z); } } diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/client/ChangedDirectionAction.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/client/ChangedDirectionAction.java new file mode 100644 index 0000000..9c64c56 --- /dev/null +++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/client/ChangedDirectionAction.java @@ -0,0 +1,32 @@ +package kz.ilotterytea.frogartha.domain.client; + +import com.badlogic.gdx.math.Vector3; +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 ChangedDirectionAction implements Transferable { + private Vector3 direction; + + public ChangedDirectionAction() { + } + + public ChangedDirectionAction(Vector3 direction) { + this.direction = direction; + } + + public Vector3 getDirection() { + return direction; + } + + @Override + public void serialize(Serializer serializer) throws SerializationException { + serializer.serializeFloatArray(new float[]{direction.x, direction.y, direction.z}); + } + + @Override + public ChangedDirectionAction deserialize(Deserializer deserializer) throws SerializationException { + return new ChangedDirectionAction(new Vector3(deserializer.deserializeFloatArray())); + } +} diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/events/ChangedDirectionEvent.java b/shared/src/main/java/kz/ilotterytea/frogartha/events/ChangedDirectionEvent.java new file mode 100644 index 0000000..eefe20a --- /dev/null +++ b/shared/src/main/java/kz/ilotterytea/frogartha/events/ChangedDirectionEvent.java @@ -0,0 +1,35 @@ +package kz.ilotterytea.frogartha.events; + +import com.badlogic.gdx.math.Vector3; +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 ChangedDirectionEvent extends Event implements Transferable { + private Vector3 direction; + + public ChangedDirectionEvent() { + } + + public ChangedDirectionEvent(int playerId, Vector3 direction) { + super(playerId); + this.direction = direction; + } + + public Vector3 getDirection() { + return direction; + } + + @Override + public void serialize(Serializer serializer) throws SerializationException { + serializer + .serializeInt(playerId) + .serializeFloatArray(new float[]{direction.x, direction.y, direction.z}); + } + + @Override + public ChangedDirectionEvent deserialize(Deserializer deserializer) throws SerializationException { + return new ChangedDirectionEvent(deserializer.deserializeInt(), new Vector3(deserializer.deserializeFloatArray())); + } +} 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 1c62e0d..a00c0ff 100644 --- a/shared/src/main/java/kz/ilotterytea/frogartha/utils/SerializerUtils.java +++ b/shared/src/main/java/kz/ilotterytea/frogartha/utils/SerializerUtils.java @@ -2,8 +2,10 @@ package kz.ilotterytea.frogartha.utils; import com.github.czyzby.websocket.serialization.impl.ManualSerializer; import kz.ilotterytea.frogartha.domain.Identity; +import kz.ilotterytea.frogartha.domain.client.ChangedDirectionAction; import kz.ilotterytea.frogartha.domain.client.PlayerJumpAction; import kz.ilotterytea.frogartha.domain.server.Acknowledge; +import kz.ilotterytea.frogartha.events.ChangedDirectionEvent; import kz.ilotterytea.frogartha.events.PlayerJumpEvent; import kz.ilotterytea.frogartha.exceptions.PlayerKickException; @@ -14,5 +16,7 @@ public class SerializerUtils { serializer.register(new PlayerKickException()); serializer.register(new PlayerJumpAction()); serializer.register(new PlayerJumpEvent()); + serializer.register(new ChangedDirectionAction()); + serializer.register(new ChangedDirectionEvent()); } } -- cgit v1.2.3