From a61b6e3845655d3057952210fca1ddb844e4b530 Mon Sep 17 00:00:00 2001 From: Major- Date: Sun, 3 Nov 2013 05:10:58 +0000 Subject: [PATCH] Complete set of item options and actions. --- data/events.xml | 2 +- .../event/handler/impl/EquipEventHandler.java | 9 +- .../apollo/game/event/impl/EquipEvent.java | 67 --------------- .../game/event/impl/FifthItemOptionEvent.java | 19 +++++ .../game/event/impl/FirstItemOptionEvent.java | 19 +++++ .../event/impl/FourthItemOptionEvent.java | 19 +++++ .../game/event/impl/InventoryItemEvent.java | 84 +++++++++++++++++++ .../game/event/impl/ItemActionEvent.java | 67 +-------------- .../game/event/impl/ItemOptionEvent.java | 22 +++++ .../event/impl/SecondItemOptionEvent.java | 19 +++++ .../game/event/impl/ThirdItemOptionEvent.java | 19 +++++ .../r317/FifthItemOptionEventDecoder.java | 27 ++++++ .../r317/FirstItemOptionEventDecoder.java | 24 ++++++ .../r317/FourthItemOptionEventDecoder.java | 24 ++++++ .../apollo/net/release/r317/Release317.java | 6 +- ...java => SecondItemOptionEventDecoder.java} | 11 ++- .../r317/ThirdItemOptionEventDecoder.java | 24 ++++++ .../net/release/r377/EquipEventDecoder.java | 27 ------ .../r377/FifthItemOptionEventDecoder.java | 24 ++++++ .../r377/FirstItemOptionEventDecoder.java | 24 ++++++ .../r377/FourthItemOptionEventDecoder.java | 24 ++++++ .../apollo/net/release/r377/Release377.java | 6 +- .../r377/SecondItemOptionEventDecoder.java | 24 ++++++ .../r377/ThirdItemOptionEventDecoder.java | 24 ++++++ 24 files changed, 445 insertions(+), 170 deletions(-) delete mode 100644 src/org/apollo/game/event/impl/EquipEvent.java create mode 100644 src/org/apollo/game/event/impl/FifthItemOptionEvent.java create mode 100644 src/org/apollo/game/event/impl/FirstItemOptionEvent.java create mode 100644 src/org/apollo/game/event/impl/FourthItemOptionEvent.java create mode 100644 src/org/apollo/game/event/impl/InventoryItemEvent.java create mode 100644 src/org/apollo/game/event/impl/ItemOptionEvent.java create mode 100644 src/org/apollo/game/event/impl/SecondItemOptionEvent.java create mode 100644 src/org/apollo/game/event/impl/ThirdItemOptionEvent.java create mode 100644 src/org/apollo/net/release/r317/FifthItemOptionEventDecoder.java create mode 100644 src/org/apollo/net/release/r317/FirstItemOptionEventDecoder.java create mode 100644 src/org/apollo/net/release/r317/FourthItemOptionEventDecoder.java rename src/org/apollo/net/release/r317/{EquipEventDecoder.java => SecondItemOptionEventDecoder.java} (64%) create mode 100644 src/org/apollo/net/release/r317/ThirdItemOptionEventDecoder.java delete mode 100644 src/org/apollo/net/release/r377/EquipEventDecoder.java create mode 100644 src/org/apollo/net/release/r377/FifthItemOptionEventDecoder.java create mode 100644 src/org/apollo/net/release/r377/FirstItemOptionEventDecoder.java create mode 100644 src/org/apollo/net/release/r377/FourthItemOptionEventDecoder.java create mode 100644 src/org/apollo/net/release/r377/SecondItemOptionEventDecoder.java create mode 100644 src/org/apollo/net/release/r377/ThirdItemOptionEventDecoder.java diff --git a/data/events.xml b/data/events.xml index ef524fd3..58a458ff 100644 --- a/data/events.xml +++ b/data/events.xml @@ -46,7 +46,7 @@ - org.apollo.game.event.impl.EquipEvent + org.apollo.game.event.impl.ItemOptionEvent org.apollo.game.event.handler.impl.EquipEventHandler diff --git a/src/org/apollo/game/event/handler/impl/EquipEventHandler.java b/src/org/apollo/game/event/handler/impl/EquipEventHandler.java index 7e50cfba..f15e60f9 100644 --- a/src/org/apollo/game/event/handler/impl/EquipEventHandler.java +++ b/src/org/apollo/game/event/handler/impl/EquipEventHandler.java @@ -2,7 +2,7 @@ package org.apollo.game.event.handler.impl; import org.apollo.game.event.handler.EventHandler; import org.apollo.game.event.handler.EventHandlerContext; -import org.apollo.game.event.impl.EquipEvent; +import org.apollo.game.event.impl.ItemOptionEvent; import org.apollo.game.model.EquipmentConstants; import org.apollo.game.model.Inventory; import org.apollo.game.model.Item; @@ -15,13 +15,14 @@ import org.apollo.util.LanguageUtil; /** * An event handler which equips items. * + * @author Major * @author Graham */ -public final class EquipEventHandler extends EventHandler { +public final class EquipEventHandler extends EventHandler { @Override - public void handle(EventHandlerContext ctx, Player player, EquipEvent event) { - if (event.getInterfaceId() == SynchronizationInventoryListener.INVENTORY_ID) { + public void handle(EventHandlerContext ctx, Player player, ItemOptionEvent event) { + if (event.getOption() == 2 && event.getInterfaceId() == SynchronizationInventoryListener.INVENTORY_ID) { int inventorySlot = event.getSlot(); Item equipping = player.getInventory().get(inventorySlot); int equippingId = equipping.getId(); diff --git a/src/org/apollo/game/event/impl/EquipEvent.java b/src/org/apollo/game/event/impl/EquipEvent.java deleted file mode 100644 index 7c6a2274..00000000 --- a/src/org/apollo/game/event/impl/EquipEvent.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.apollo.game.event.impl; - -import org.apollo.game.event.Event; - -/** - * An event sent by the client to request that an item is equipped. - * - * @author Graham - */ -public final class EquipEvent extends Event { - - /** - * The interface id. - */ - private final int interfaceId; - - /** - * The item id. - */ - private final int id; - - /** - * The item's slot. - */ - private final int slot; - - /** - * Creates the equip event. - * - * @param interfaceId The interface id. - * @param id The id. - * @param slot The slot. - */ - public EquipEvent(int interfaceId, int id, int slot) { - this.interfaceId = interfaceId; - this.id = id; - this.slot = slot; - } - - /** - * Gets the item id. - * - * @return The item id. - */ - public int getId() { - return id; - } - - /** - * Gets the interface id. - * - * @return The interface id. - */ - public int getInterfaceId() { - return interfaceId; - } - - /** - * Gets the slot. - * - * @return The slot. - */ - public int getSlot() { - return slot; - } - -} diff --git a/src/org/apollo/game/event/impl/FifthItemOptionEvent.java b/src/org/apollo/game/event/impl/FifthItemOptionEvent.java new file mode 100644 index 00000000..70d46c8b --- /dev/null +++ b/src/org/apollo/game/event/impl/FifthItemOptionEvent.java @@ -0,0 +1,19 @@ +package org.apollo.game.event.impl; + +/** + * The fifth {@link ItemOptionEvent}, used mainly for dropping items. + * @author Chris Fletcher + */ +public final class FifthItemOptionEvent extends ItemOptionEvent { + + /** + * Creates the fifth item option event. + * @param interfaceId The interface id. + * @param id The id. + * @param slot The slot. + */ + public FifthItemOptionEvent(int interfaceId, int id, int slot) { + super(5, interfaceId, id, slot); + } + +} diff --git a/src/org/apollo/game/event/impl/FirstItemOptionEvent.java b/src/org/apollo/game/event/impl/FirstItemOptionEvent.java new file mode 100644 index 00000000..76d514cb --- /dev/null +++ b/src/org/apollo/game/event/impl/FirstItemOptionEvent.java @@ -0,0 +1,19 @@ +package org.apollo.game.event.impl; + +/** + * The first {@link ItemOptionEvent}, used for eating food or identifying herbs (amongst others). + * @author Chris Fletcher + */ +public final class FirstItemOptionEvent extends ItemOptionEvent { + + /** + * Creates the first item option event. + * @param interfaceId The interface id. + * @param id The id. + * @param slot The slot. + */ + public FirstItemOptionEvent(int interfaceId, int id, int slot) { + super(1, interfaceId, id, slot); + } + +} diff --git a/src/org/apollo/game/event/impl/FourthItemOptionEvent.java b/src/org/apollo/game/event/impl/FourthItemOptionEvent.java new file mode 100644 index 00000000..847e7cfb --- /dev/null +++ b/src/org/apollo/game/event/impl/FourthItemOptionEvent.java @@ -0,0 +1,19 @@ +package org.apollo.game.event.impl; + +/** + * The fourth {@link ItemOptionEvent}. + * @author Chris Fletcher + */ +public final class FourthItemOptionEvent extends ItemOptionEvent { + + /** + * Creates the fourth item option event. + * @param interfaceId The interface id. + * @param id The id. + * @param slot The slot. + */ + public FourthItemOptionEvent(int interfaceId, int id, int slot) { + super(4, interfaceId, id, slot); + } + +} diff --git a/src/org/apollo/game/event/impl/InventoryItemEvent.java b/src/org/apollo/game/event/impl/InventoryItemEvent.java new file mode 100644 index 00000000..a8fccb2b --- /dev/null +++ b/src/org/apollo/game/event/impl/InventoryItemEvent.java @@ -0,0 +1,84 @@ +package org.apollo.game.event.impl; + +import org.apollo.game.event.Event; + +/** + * An {@link Event} which represents some sort of action on an item in an inventory. Note that this is the parent of + * both the item option and action event classes, and so cannot be used to determine when one of those events is fired. + * + * @author Chris Fletcher + */ +public abstract class InventoryItemEvent extends Event { + + /** + * The option number (1-5). + */ + private final int option; + + /** + * The interface id. + */ + private final int interfaceId; + + /** + * The item id. + */ + private final int id; + + /** + * The item's slot. + */ + private final int slot; + + /** + * Creates the item action event. + * + * @param option The option number. + * @param interfaceId The interface id. + * @param id The id. + * @param slot The slot. + */ + protected InventoryItemEvent(int option, int interfaceId, int id, int slot) { + this.option = option; + this.interfaceId = interfaceId; + this.id = id; + this.slot = slot; + } + + /** + * Gets the option number. + * + * @return The option number. + */ + public final int getOption() { + return option; + } + + /** + * Gets the interface id. + * + * @return The interface id. + */ + public final int getInterfaceId() { + return interfaceId; + } + + /** + * Gets the item id. + * + * @return The item id. + */ + public final int getId() { + return id; + } + + /** + * Gets the slot. + * + * @return The slot. + */ + public final int getSlot() { + return slot; + } + +} \ No newline at end of file diff --git a/src/org/apollo/game/event/impl/ItemActionEvent.java b/src/org/apollo/game/event/impl/ItemActionEvent.java index 7510004d..edc4b49b 100644 --- a/src/org/apollo/game/event/impl/ItemActionEvent.java +++ b/src/org/apollo/game/event/impl/ItemActionEvent.java @@ -5,29 +5,9 @@ import org.apollo.game.event.Event; /** * An {@link Event} which represents some sort of action on an item. * - * @author Graham + * @author Chris Fletcher */ -public abstract class ItemActionEvent extends Event { - - /** - * The option number (1-5). - */ - private final int option; - - /** - * The interface id. - */ - private final int interfaceId; - - /** - * The item id. - */ - private final int id; - - /** - * The item's slot. - */ - private final int slot; +public abstract class ItemActionEvent extends InventoryItemEvent { /** * Creates the item action event. @@ -38,46 +18,7 @@ public abstract class ItemActionEvent extends Event { * @param slot The slot. */ public ItemActionEvent(int option, int interfaceId, int id, int slot) { - this.option = option; - this.interfaceId = interfaceId; - this.id = id; - this.slot = slot; + super(option, interfaceId, id, slot); } - /** - * Gets the item id. - * - * @return The item id. - */ - public int getId() { - return id; - } - - /** - * Gets the interface id. - * - * @return The interface id. - */ - public int getInterfaceId() { - return interfaceId; - } - - /** - * Gets the option number. - * - * @return The option number. - */ - public int getOption() { - return option; - } - - /** - * Gets the slot. - * - * @return The slot. - */ - public int getSlot() { - return slot; - } - -} +} \ No newline at end of file diff --git a/src/org/apollo/game/event/impl/ItemOptionEvent.java b/src/org/apollo/game/event/impl/ItemOptionEvent.java new file mode 100644 index 00000000..e455cce8 --- /dev/null +++ b/src/org/apollo/game/event/impl/ItemOptionEvent.java @@ -0,0 +1,22 @@ +package org.apollo.game.event.impl; + +/** + * An {@link InventoryItemEvent} which is sent by the client when an item's option is clicked (e.g. equip, + * eat, drink, etc). + * @author Chris Fletcher + */ +public abstract class ItemOptionEvent extends InventoryItemEvent { + + /** + * Creates the item option event. + * + * @param option The option number. + * @param interfaceId The interface id. + * @param id The id. + * @param slot The slot. + */ + public ItemOptionEvent(int option, int interfaceId, int id, int slot) { + super(option, interfaceId, id, slot); + } + +} \ No newline at end of file diff --git a/src/org/apollo/game/event/impl/SecondItemOptionEvent.java b/src/org/apollo/game/event/impl/SecondItemOptionEvent.java new file mode 100644 index 00000000..353a96cd --- /dev/null +++ b/src/org/apollo/game/event/impl/SecondItemOptionEvent.java @@ -0,0 +1,19 @@ +package org.apollo.game.event.impl; + +/** + * The second {@link ItemOptionEvent}, used for equipping an item (amongst others?). + * @author Chris Fletcher + */ +public final class SecondItemOptionEvent extends ItemOptionEvent { + + /** + * Creates the second item option event. + * @param interfaceId The interface id. + * @param id The id. + * @param slot The slot. + */ + public SecondItemOptionEvent(int interfaceId, int id, int slot) { + super(2, interfaceId, id, slot); + } + +} diff --git a/src/org/apollo/game/event/impl/ThirdItemOptionEvent.java b/src/org/apollo/game/event/impl/ThirdItemOptionEvent.java new file mode 100644 index 00000000..6d21d338 --- /dev/null +++ b/src/org/apollo/game/event/impl/ThirdItemOptionEvent.java @@ -0,0 +1,19 @@ +package org.apollo.game.event.impl; + +/** + * The third {@link ItemOptionEvent}. + * @author Chris Fletcher + */ +public final class ThirdItemOptionEvent extends ItemOptionEvent { + + /** + * Creates the third item option event. + * @param interfaceId The interface id. + * @param id The id. + * @param slot The slot. + */ + public ThirdItemOptionEvent(int interfaceId, int id, int slot) { + super(3, interfaceId, id, slot); + } + +} diff --git a/src/org/apollo/net/release/r317/FifthItemOptionEventDecoder.java b/src/org/apollo/net/release/r317/FifthItemOptionEventDecoder.java new file mode 100644 index 00000000..0d2b875f --- /dev/null +++ b/src/org/apollo/net/release/r317/FifthItemOptionEventDecoder.java @@ -0,0 +1,27 @@ +package org.apollo.net.release.r317; + +import org.apollo.game.event.impl.FifthItemOptionEvent; +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.GamePacketReader; +import org.apollo.net.release.EventDecoder; + +/** + * An {@link EventDecoder} for the {@link FifthItemOptionEvent}. + * @author Chris Fletcher + */ +final class FifthItemOptionEventDecoder extends EventDecoder { + + @Override + public FifthItemOptionEvent decode(GamePacket packet) { + GamePacketReader reader = new GamePacketReader(packet); + + int id = (int) reader.getUnsigned(DataType.SHORT, DataTransformation.ADD); + int interfaceId = (int) reader.getUnsigned(DataType.SHORT); + int slot = (int) reader.getUnsigned(DataType.SHORT, DataTransformation.ADD); + + return new FifthItemOptionEvent(interfaceId, id, slot); + } + +} diff --git a/src/org/apollo/net/release/r317/FirstItemOptionEventDecoder.java b/src/org/apollo/net/release/r317/FirstItemOptionEventDecoder.java new file mode 100644 index 00000000..45a0ac1f --- /dev/null +++ b/src/org/apollo/net/release/r317/FirstItemOptionEventDecoder.java @@ -0,0 +1,24 @@ +package org.apollo.net.release.r317; + +import org.apollo.game.event.impl.FirstItemOptionEvent; +import org.apollo.net.codec.game.*; +import org.apollo.net.release.EventDecoder; + +/** + * An {@link EventDecoder} for the {@link FirstItemOptionEvent}. + * @author Graham + */ +final class FirstItemOptionEventDecoder extends EventDecoder { + + @Override + public FirstItemOptionEvent decode(GamePacket packet) { + GamePacketReader reader = new GamePacketReader(packet); + + int interfaceId = (int) reader.getSigned(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD); + int slot = (int) reader.getUnsigned(DataType.SHORT, DataTransformation.ADD); + int id = (int) reader.getSigned(DataType.SHORT, DataOrder.LITTLE); + + return new FirstItemOptionEvent(interfaceId, id, slot); + } + +} diff --git a/src/org/apollo/net/release/r317/FourthItemOptionEventDecoder.java b/src/org/apollo/net/release/r317/FourthItemOptionEventDecoder.java new file mode 100644 index 00000000..a9134518 --- /dev/null +++ b/src/org/apollo/net/release/r317/FourthItemOptionEventDecoder.java @@ -0,0 +1,24 @@ +package org.apollo.net.release.r317; + +import org.apollo.game.event.impl.FourthItemOptionEvent; +import org.apollo.net.codec.game.*; +import org.apollo.net.release.EventDecoder; + +/** + * An {@link EventDecoder} for the {@link FourthItemOptionEvent}. + * @author Chris Fletcher + */ +final class FourthItemOptionEventDecoder extends EventDecoder { + + @Override + public FourthItemOptionEvent decode(GamePacket packet) { + GamePacketReader reader = new GamePacketReader(packet); + + int interfaceId = (int) reader.getSigned(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD); + int slot = (int) reader.getSigned(DataType.SHORT, DataOrder.LITTLE); + int id = (int) reader.getUnsigned(DataType.SHORT, DataTransformation.ADD); + + return new FourthItemOptionEvent(interfaceId, id, slot); + } + +} diff --git a/src/org/apollo/net/release/r317/Release317.java b/src/org/apollo/net/release/r317/Release317.java index 55f11bd7..5bf4b5db 100644 --- a/src/org/apollo/net/release/r317/Release317.java +++ b/src/org/apollo/net/release/r317/Release317.java @@ -82,7 +82,11 @@ public final class Release317 extends Release { register(132, new FirstObjectActionEventDecoder()); register(252, new SecondObjectActionEventDecoder()); register(70, new ThirdObjectActionEventDecoder()); - register(41, new EquipEventDecoder()); + register(122, new FirstItemOptionEventDecoder()); + register(41, new SecondItemOptionEventDecoder()); + register(16, new ThirdItemOptionEventDecoder()); + register(75, new FourthItemOptionEventDecoder()); + register(87, new FifthItemOptionEventDecoder()); register(145, new FirstItemActionEventDecoder()); register(117, new SecondItemActionEventDecoder()); register(43, new ThirdItemActionEventDecoder()); diff --git a/src/org/apollo/net/release/r317/EquipEventDecoder.java b/src/org/apollo/net/release/r317/SecondItemOptionEventDecoder.java similarity index 64% rename from src/org/apollo/net/release/r317/EquipEventDecoder.java rename to src/org/apollo/net/release/r317/SecondItemOptionEventDecoder.java index e890c009..2c54717f 100644 --- a/src/org/apollo/net/release/r317/EquipEventDecoder.java +++ b/src/org/apollo/net/release/r317/SecondItemOptionEventDecoder.java @@ -1,6 +1,6 @@ package org.apollo.net.release.r317; -import org.apollo.game.event.impl.EquipEvent; +import org.apollo.game.event.impl.SecondItemOptionEvent; import org.apollo.net.codec.game.DataTransformation; import org.apollo.net.codec.game.DataType; import org.apollo.net.codec.game.GamePacket; @@ -8,19 +8,18 @@ import org.apollo.net.codec.game.GamePacketReader; import org.apollo.net.release.EventDecoder; /** - * An {@link EventDecoder} for the {@link EquipEvent}. - * + * An {@link EventDecoder} for the {@link SecondItemOptionEvent}. * @author Graham */ -public final class EquipEventDecoder extends EventDecoder { +final class SecondItemOptionEventDecoder extends EventDecoder { @Override - public EquipEvent decode(GamePacket packet) { + public SecondItemOptionEvent decode(GamePacket packet) { GamePacketReader reader = new GamePacketReader(packet); int id = (int) reader.getUnsigned(DataType.SHORT); int slot = (int) reader.getUnsigned(DataType.SHORT, DataTransformation.ADD); int interfaceId = (int) reader.getUnsigned(DataType.SHORT, DataTransformation.ADD); - return new EquipEvent(interfaceId, id, slot); + return new SecondItemOptionEvent(interfaceId, id, slot); } } diff --git a/src/org/apollo/net/release/r317/ThirdItemOptionEventDecoder.java b/src/org/apollo/net/release/r317/ThirdItemOptionEventDecoder.java new file mode 100644 index 00000000..7a89c35f --- /dev/null +++ b/src/org/apollo/net/release/r317/ThirdItemOptionEventDecoder.java @@ -0,0 +1,24 @@ +package org.apollo.net.release.r317; + +import org.apollo.game.event.impl.ThirdItemOptionEvent; +import org.apollo.net.codec.game.*; +import org.apollo.net.release.EventDecoder; + +/** + * An {@link EventDecoder} for the {@link ThirdItemOptionEvent}. + * @author Chris Fletcher + */ +final class ThirdItemOptionEventDecoder extends EventDecoder { + + @Override + public ThirdItemOptionEvent decode(GamePacket packet) { + GamePacketReader reader = new GamePacketReader(packet); + + int id = (int) reader.getUnsigned(DataType.SHORT, DataTransformation.ADD); + int slot = (int) reader.getSigned(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD); + int interfaceId = (int) reader.getSigned(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD); + + return new ThirdItemOptionEvent(interfaceId, id, slot); + } + +} diff --git a/src/org/apollo/net/release/r377/EquipEventDecoder.java b/src/org/apollo/net/release/r377/EquipEventDecoder.java deleted file mode 100644 index 6211a52d..00000000 --- a/src/org/apollo/net/release/r377/EquipEventDecoder.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.apollo.net.release.r377; - -import org.apollo.game.event.impl.EquipEvent; -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.GamePacketReader; -import org.apollo.net.release.EventDecoder; - -/** - * An {@link EventDecoder} for the {@link EquipEvent}. - * - * @author Graham - */ -public final class EquipEventDecoder extends EventDecoder { - - @Override - public EquipEvent decode(GamePacket packet) { - GamePacketReader reader = new GamePacketReader(packet); - int interfaceId = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE); - int id = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE); - int slot = (int) reader.getUnsigned(DataType.SHORT, DataTransformation.ADD); - return new EquipEvent(interfaceId, id, slot); - } - -} diff --git a/src/org/apollo/net/release/r377/FifthItemOptionEventDecoder.java b/src/org/apollo/net/release/r377/FifthItemOptionEventDecoder.java new file mode 100644 index 00000000..d30b9b5c --- /dev/null +++ b/src/org/apollo/net/release/r377/FifthItemOptionEventDecoder.java @@ -0,0 +1,24 @@ +package org.apollo.net.release.r377; + +import org.apollo.game.event.impl.FifthItemOptionEvent; +import org.apollo.net.codec.game.*; +import org.apollo.net.release.EventDecoder; + +/** + * An {@link EventDecoder} for the {@link FifthItemOptionEvent}. + * @author Chris Fletcher + */ +final class FifthItemOptionEventDecoder extends EventDecoder { + + @Override + public FifthItemOptionEvent decode(GamePacket packet) { + GamePacketReader reader = new GamePacketReader(packet); + + int slot = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE); + int id = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD); + int interfaceId = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD); + + return new FifthItemOptionEvent(interfaceId, id, slot); + } + +} diff --git a/src/org/apollo/net/release/r377/FirstItemOptionEventDecoder.java b/src/org/apollo/net/release/r377/FirstItemOptionEventDecoder.java new file mode 100644 index 00000000..99cd1577 --- /dev/null +++ b/src/org/apollo/net/release/r377/FirstItemOptionEventDecoder.java @@ -0,0 +1,24 @@ +package org.apollo.net.release.r377; + +import org.apollo.game.event.impl.FirstItemOptionEvent; +import org.apollo.net.codec.game.*; +import org.apollo.net.release.EventDecoder; + +/** + * An {@link EventDecoder} for the {@link FirstItemOptionEvent}. + * @author Chris Fletcher + */ +final class FirstItemOptionEventDecoder extends EventDecoder { + + @Override + public FirstItemOptionEvent decode(GamePacket packet) { + GamePacketReader reader = new GamePacketReader(packet); + + int interfaceId = (int) reader.getUnsigned(DataType.SHORT, DataTransformation.ADD); + int slot = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE); + int id = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE); + + return new FirstItemOptionEvent(interfaceId, id, slot); + } + +} diff --git a/src/org/apollo/net/release/r377/FourthItemOptionEventDecoder.java b/src/org/apollo/net/release/r377/FourthItemOptionEventDecoder.java new file mode 100644 index 00000000..99935ae8 --- /dev/null +++ b/src/org/apollo/net/release/r377/FourthItemOptionEventDecoder.java @@ -0,0 +1,24 @@ +package org.apollo.net.release.r377; + +import org.apollo.game.event.impl.FourthItemOptionEvent; +import org.apollo.net.codec.game.*; +import org.apollo.net.release.EventDecoder; + +/** + * An {@link EventDecoder} for the {@link FourthItemOptionEvent}. + * @author Chris Fletcher + */ +final class FourthItemOptionEventDecoder extends EventDecoder { + + @Override + public FourthItemOptionEvent decode(GamePacket packet) { + GamePacketReader reader = new GamePacketReader(packet); + + int slot = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE); + int id = (int) reader.getUnsigned(DataType.SHORT, DataTransformation.ADD); + int interfaceId = (int) reader.getUnsigned(DataType.SHORT); + + return new FourthItemOptionEvent(interfaceId, id, slot); + } + +} diff --git a/src/org/apollo/net/release/r377/Release377.java b/src/org/apollo/net/release/r377/Release377.java index 9b70a264..47ac4fab 100644 --- a/src/org/apollo/net/release/r377/Release377.java +++ b/src/org/apollo/net/release/r377/Release377.java @@ -82,7 +82,11 @@ public final class Release377 extends Release { register(181, new FirstObjectActionEventDecoder()); register(241, new SecondObjectActionEventDecoder()); register(50, new ThirdObjectActionEventDecoder()); - register(24, new EquipEventDecoder()); + register(203, new FirstItemOptionEventDecoder()); + register(24, new SecondItemOptionEventDecoder()); + register(161, new ThirdItemOptionEventDecoder()); + register(228, new FourthItemOptionEventDecoder()); + register(4, new FifthItemOptionEventDecoder()); register(3, new FirstItemActionEventDecoder()); register(177, new SecondItemActionEventDecoder()); register(91, new ThirdItemActionEventDecoder()); diff --git a/src/org/apollo/net/release/r377/SecondItemOptionEventDecoder.java b/src/org/apollo/net/release/r377/SecondItemOptionEventDecoder.java new file mode 100644 index 00000000..af2ae574 --- /dev/null +++ b/src/org/apollo/net/release/r377/SecondItemOptionEventDecoder.java @@ -0,0 +1,24 @@ +package org.apollo.net.release.r377; + +import org.apollo.game.event.impl.SecondItemOptionEvent; +import org.apollo.net.codec.game.*; +import org.apollo.net.release.EventDecoder; + +/** + * An {@link EventDecoder} for the {@link SecondItemOptionEvent}. + * @author Graham + */ +final class SecondItemOptionEventDecoder extends EventDecoder { + + @Override + public SecondItemOptionEvent decode(GamePacket packet) { + GamePacketReader reader = new GamePacketReader(packet); + + int interfaceId = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE); + int id = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE); + int slot = (int) reader.getUnsigned(DataType.SHORT, DataTransformation.ADD); + + return new SecondItemOptionEvent(interfaceId, id, slot); + } + +} diff --git a/src/org/apollo/net/release/r377/ThirdItemOptionEventDecoder.java b/src/org/apollo/net/release/r377/ThirdItemOptionEventDecoder.java new file mode 100644 index 00000000..b1b22559 --- /dev/null +++ b/src/org/apollo/net/release/r377/ThirdItemOptionEventDecoder.java @@ -0,0 +1,24 @@ +package org.apollo.net.release.r377; + +import org.apollo.game.event.impl.ThirdItemOptionEvent; +import org.apollo.net.codec.game.*; +import org.apollo.net.release.EventDecoder; + +/** + * An {@link EventDecoder} for the {@link ThirdItemOptionEvent}. + * @author Chris Fletcher + */ +final class ThirdItemOptionEventDecoder extends EventDecoder { + + @Override + public ThirdItemOptionEvent decode(GamePacket packet) { + GamePacketReader reader = new GamePacketReader(packet); + + int slot = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD); + int id = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD); + int interfaceId = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE); + + return new ThirdItemOptionEvent(interfaceId, id, slot); + } + +}