From 9d465e4885a85e2b2c50abf374be3058d3458a48 Mon Sep 17 00:00:00 2001 From: Major- Date: Fri, 11 Jul 2014 17:25:13 +0100 Subject: [PATCH] Add SendObjectEvent. --- .../game/event/impl/SendObjectEvent.java | 81 +++++++++++++++++++ .../release/r317/SendObjectEventEncoder.java | 27 +++++++ .../release/r377/SendObjectEventEncoder.java | 27 +++++++ 3 files changed, 135 insertions(+) create mode 100644 src/org/apollo/game/event/impl/SendObjectEvent.java create mode 100644 src/org/apollo/net/release/r317/SendObjectEventEncoder.java create mode 100644 src/org/apollo/net/release/r377/SendObjectEventEncoder.java diff --git a/src/org/apollo/game/event/impl/SendObjectEvent.java b/src/org/apollo/game/event/impl/SendObjectEvent.java new file mode 100644 index 00000000..4a8c64d9 --- /dev/null +++ b/src/org/apollo/game/event/impl/SendObjectEvent.java @@ -0,0 +1,81 @@ +package org.apollo.game.event.impl; + +import org.apollo.game.event.Event; +import org.apollo.game.model.entity.GameObject; + +/** + * An {@link Event} sent to the client to spawn an object. + * + * @author Major + */ +public final class SendObjectEvent extends Event { + + /** + * The id of the object. + */ + private final int id; + + /** + * The orientation of the object. + */ + private final int orientation; + + /** + * The position of the object. + */ + private final int positionOffset; + + /** + * The type of the object. + */ + private final int type; + + /** + * Creates the send object event. + * + * @param object The {@link GameObject} to send. + */ + public SendObjectEvent(GameObject object) { + this.id = object.getId(); + this.positionOffset = 0; + this.type = object.getType(); + this.orientation = object.getRotation(); + } + + /** + * Gets the id of the object. + * + * @return The id. + */ + public int getId() { + return id; + } + + /** + * Gets the orientation of the object. + * + * @return The orientation. + */ + public int getOrientation() { + return orientation; + } + + /** + * Gets the position offset of the object. + * + * @return The position offset. + */ + public int getPositionOffset() { + return positionOffset; + } + + /** + * Gets the orientation of the object. + * + * @return The type. + */ + public int getType() { + return type; + } + +} \ No newline at end of file diff --git a/src/org/apollo/net/release/r317/SendObjectEventEncoder.java b/src/org/apollo/net/release/r317/SendObjectEventEncoder.java new file mode 100644 index 00000000..07b773ec --- /dev/null +++ b/src/org/apollo/net/release/r317/SendObjectEventEncoder.java @@ -0,0 +1,27 @@ +package org.apollo.net.release.r317; + +import org.apollo.game.event.impl.SendObjectEvent; +import org.apollo.net.codec.game.DataOrder; +import org.apollo.net.codec.game.DataTransformation; +import org.apollo.net.codec.game.DataType; +import org.apollo.net.codec.game.GamePacket; +import org.apollo.net.codec.game.GamePacketBuilder; +import org.apollo.net.release.EventEncoder; + +/** + * An {@link EventEncoder} for the {@link SendObjectEvent}. + * + * @author Major + */ +public final class SendObjectEventEncoder extends EventEncoder { + + @Override + public GamePacket encode(SendObjectEvent event) { + GamePacketBuilder builder = new GamePacketBuilder(151); + builder.put(DataType.BYTE, DataTransformation.ADD, event.getPositionOffset()); + builder.put(DataType.SHORT, DataOrder.LITTLE, event.getId()); + builder.put(DataType.BYTE, DataTransformation.SUBTRACT, event.getType() << 2 + event.getOrientation()); + return builder.toGamePacket(); + } + +} \ No newline at end of file diff --git a/src/org/apollo/net/release/r377/SendObjectEventEncoder.java b/src/org/apollo/net/release/r377/SendObjectEventEncoder.java new file mode 100644 index 00000000..ac1b51cc --- /dev/null +++ b/src/org/apollo/net/release/r377/SendObjectEventEncoder.java @@ -0,0 +1,27 @@ +package org.apollo.net.release.r377; + +import org.apollo.game.event.impl.SendObjectEvent; +import org.apollo.net.codec.game.DataOrder; +import org.apollo.net.codec.game.DataTransformation; +import org.apollo.net.codec.game.DataType; +import org.apollo.net.codec.game.GamePacket; +import org.apollo.net.codec.game.GamePacketBuilder; +import org.apollo.net.release.EventEncoder; + +/** + * An {@link EventEncoder} for the {@link SendObjectEvent}. + * + * @author Major + */ +public final class SendObjectEventEncoder extends EventEncoder { + + @Override + public GamePacket encode(SendObjectEvent event) { + GamePacketBuilder builder = new GamePacketBuilder(152); + builder.put(DataType.BYTE, DataTransformation.NEGATE, event.getType() << 2 + event.getOrientation()); + builder.put(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD, event.getId()); + builder.put(DataType.BYTE, DataTransformation.ADD, event.getPositionOffset()); + return builder.toGamePacket(); + } + +} \ No newline at end of file