diff options
| author | ilotterytea <iltsu@alright.party> | 2025-01-22 01:54:58 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2025-01-22 01:54:58 +0500 |
| commit | 86e91616e8585e05656bac7be356f342be006952 (patch) | |
| tree | f38417e3b1ed5dc4650374cbe9dabcc74807c0bd /shared/src | |
| parent | c1450d4840c69a130b9f6346ca1ea35dee0b2299 (diff) | |
feat: PlayerState and PlayerData are now Transferable
Diffstat (limited to 'shared/src')
| -rw-r--r-- | shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerData.java | 20 | ||||
| -rw-r--r-- | shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerState.java | 21 |
2 files changed, 39 insertions, 2 deletions
diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerData.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerData.java index ec6e1cd..2054e68 100644 --- a/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerData.java +++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerData.java @@ -1,6 +1,11 @@ package kz.ilotterytea.frogartha.domain; -public class PlayerData { +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 PlayerData implements Transferable<PlayerData> { private Identity identity; private PlayerState state; @@ -24,4 +29,17 @@ public class PlayerData { public PlayerState getState() { return state; } + + @Override + public void serialize(Serializer serializer) throws SerializationException { + serializer.serializeTransferable(identity).serializeTransferable(state); + } + + @Override + public PlayerData deserialize(Deserializer deserializer) throws SerializationException { + return new PlayerData( + deserializer.deserializeTransferable(new Identity()), + deserializer.deserializeTransferable(new PlayerState()) + ); + } } 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 d3bd18c..d745822 100644 --- a/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerState.java +++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/PlayerState.java @@ -1,8 +1,12 @@ package kz.ilotterytea.frogartha.domain; 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 PlayerState { +public class PlayerState implements Transferable<PlayerState> { private final Vector3 position, direction; private float nextJumpTimestamp; @@ -39,4 +43,19 @@ public class PlayerState { public void setDirection(float x, float y, float z) { this.direction.set(x, y, z); } + + @Override + public void serialize(Serializer serializer) throws SerializationException { + serializer + .serializeFloatArray(new float[]{position.x, position.y, position.z}) + .serializeFloatArray(new float[]{direction.x, direction.y, direction.z}); + } + + @Override + public PlayerState deserialize(Deserializer deserializer) throws SerializationException { + return new PlayerState( + new Vector3(deserializer.deserializeFloatArray()), + new Vector3(deserializer.deserializeFloatArray()) + ); + } } |
