diff --git a/src/org/apollo/game/event/impl/AddGlobalTileItemEvent.java b/src/org/apollo/game/event/impl/AddGlobalTileItemEvent.java new file mode 100644 index 00000000..8f5b73d4 --- /dev/null +++ b/src/org/apollo/game/event/impl/AddGlobalTileItemEvent.java @@ -0,0 +1,82 @@ +package org.apollo.game.event.impl; + +import org.apollo.game.event.Event; +import org.apollo.game.model.Item; + +public final class AddGlobalTileItemEvent extends Event { + + /** + * The item to add to the tile. + */ + private final Item item; + + /** + * The position offset + */ + private final int positionOffset; + + /** + * The index of the player who dropped the item. + */ + private final int index; + + /** + * Creates the add global tile item event. + * + * @param item The item to add to the tile. + * @param index The index of the player who dropped the item. + */ + public AddGlobalTileItemEvent(Item item, int index) { + this(item, index, 0); + } + + /** + * Creates the add global tile item event. + * + * @param item The item to add to the tile. + * @param index The index of the player who dropped the item. + * @param positionOffset The offset from the 'base' position. + */ + public AddGlobalTileItemEvent(Item item, int index, int positionOffset) { + this.item = item; + this.index = index; + this.positionOffset = positionOffset; + } + + /** + * Gets the id of the item. + * + * @return The id. + */ + public int getId() { + return item.getId(); + } + + /** + * Gets the amount of the item. + * + * @return The amount. + */ + public int getAmount() { + return item.getAmount(); + } + + /** + * Gets the index of the player who dropped the item. + * + * @return The index. + */ + public int getIndex() { + return index; + } + + /** + * Gets the offset from the 'base' position. + * + * @return The offset. + */ + public int getPositionOffset() { + return positionOffset; + } + +} \ No newline at end of file diff --git a/src/org/apollo/net/release/r317/AddGlobalTileItemEventEncoder.java b/src/org/apollo/net/release/r317/AddGlobalTileItemEventEncoder.java new file mode 100644 index 00000000..e43f6d39 --- /dev/null +++ b/src/org/apollo/net/release/r317/AddGlobalTileItemEventEncoder.java @@ -0,0 +1,27 @@ +package org.apollo.net.release.r317; + +import org.apollo.game.event.impl.AddGlobalTileItemEvent; +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 AddGlobalTileItemEvent}. + * + * @author Major + */ +public final class AddGlobalTileItemEventEncoder extends EventEncoder { + + @Override + public GamePacket encode(AddGlobalTileItemEvent event) { + GamePacketBuilder builder = new GamePacketBuilder(215); + builder.put(DataType.SHORT, DataTransformation.ADD, event.getId()); + builder.put(DataType.BYTE, DataTransformation.SUBTRACT, event.getPositionOffset()); + builder.put(DataType.SHORT, DataTransformation.ADD, event.getIndex()); + builder.put(DataType.SHORT, event.getAmount()); + return builder.toGamePacket(); + } + +} \ No newline at end of file diff --git a/src/org/apollo/net/release/r317/Release317.java b/src/org/apollo/net/release/r317/Release317.java index ad201c3c..407b9314 100644 --- a/src/org/apollo/net/release/r317/Release317.java +++ b/src/org/apollo/net/release/r317/Release317.java @@ -1,5 +1,6 @@ package org.apollo.net.release.r317; +import org.apollo.game.event.impl.AddGlobalTileItemEvent; import org.apollo.game.event.impl.AddTileItemEvent; import org.apollo.game.event.impl.CloseInterfaceEvent; import org.apollo.game.event.impl.ConfigEvent; @@ -174,6 +175,7 @@ public final class Release317 extends Release { register(PrivacyOptionEvent.class, new PrivacyOptionEventEncoder()); register(OpenDialogueInterfaceEvent.class, new OpenDialogueInterfaceEventEncoder()); register(UpdateWeightEvent.class, new UpdateWeightEventEncoder()); + register(AddGlobalTileItemEvent.class, new AddGlobalTileItemEventEncoder()); register(AddTileItemEvent.class, new AddTileItemEventEncoder()); register(UpdateTileItemEvent.class, new UpdateTileItemEventEncoder()); diff --git a/src/org/apollo/net/release/r377/AddGlobalTileItemEventEncoder.java b/src/org/apollo/net/release/r377/AddGlobalTileItemEventEncoder.java new file mode 100644 index 00000000..4737b912 --- /dev/null +++ b/src/org/apollo/net/release/r377/AddGlobalTileItemEventEncoder.java @@ -0,0 +1,28 @@ +package org.apollo.net.release.r377; + +import org.apollo.game.event.impl.AddGlobalTileItemEvent; +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 AddGlobalTileItemEvent}. + * + * @author Major + */ +public final class AddGlobalTileItemEventEncoder extends EventEncoder { + + @Override + public GamePacket encode(AddGlobalTileItemEvent event) { + GamePacketBuilder builder = new GamePacketBuilder(106); + builder.put(DataType.BYTE, DataTransformation.ADD, event.getPositionOffset()); + builder.put(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD, event.getAmount()); + builder.put(DataType.SHORT, DataTransformation.ADD, event.getId()); + builder.put(DataType.SHORT, DataTransformation.ADD, event.getIndex()); + return builder.toGamePacket(); + } + +} \ No newline at end of file diff --git a/src/org/apollo/net/release/r377/Release377.java b/src/org/apollo/net/release/r377/Release377.java index 44f655f8..0493431f 100644 --- a/src/org/apollo/net/release/r377/Release377.java +++ b/src/org/apollo/net/release/r377/Release377.java @@ -1,5 +1,6 @@ package org.apollo.net.release.r377; +import org.apollo.game.event.impl.AddGlobalTileItemEvent; import org.apollo.game.event.impl.AddTileItemEvent; import org.apollo.game.event.impl.CloseInterfaceEvent; import org.apollo.game.event.impl.ConfigEvent; @@ -171,6 +172,7 @@ public final class Release377 extends Release { register(PrivacyOptionEvent.class, new PrivacyOptionEventEncoder()); register(OpenDialogueInterfaceEvent.class, new OpenDialogueInterfaceEventEncoder()); register(UpdateWeightEvent.class, new UpdateWeightEventEncoder()); + register(AddGlobalTileItemEvent.class, new AddGlobalTileItemEventEncoder()); register(AddTileItemEvent.class, new AddTileItemEventEncoder()); register(UpdateTileItemEvent.class, new UpdateTileItemEventEncoder());