From 5fe5aa394096606f95ceeee5936d254d0b6e1c14 Mon Sep 17 00:00:00 2001 From: Major- Date: Thu, 26 Feb 2015 21:23:37 +0000 Subject: [PATCH] Add support for simple overlay interfaces. --- ....java => OpenInterfaceOverlayMessage.java} | 24 ++++++------- .../game/message/impl/OpenOverlayMessage.java | 35 +++++++++++++++++++ .../apollo/game/model/inter/InterfaceSet.java | 32 +++++++++++++++-- ...> OpenInterfaceOverlayMessageEncoder.java} | 10 +++--- .../r317/OpenOverlayMessageEncoder.java | 24 +++++++++++++ .../apollo/net/release/r317/Release317.java | 6 ++-- ...> OpenInterfaceOverlayMessageEncoder.java} | 10 +++--- .../r377/OpenOverlayMessageEncoder.java | 25 +++++++++++++ .../apollo/net/release/r377/Release377.java | 7 ++-- 9 files changed, 144 insertions(+), 29 deletions(-) rename src/org/apollo/game/message/impl/{OpenInterfaceSidebarMessage.java => OpenInterfaceOverlayMessage.java} (54%) create mode 100644 src/org/apollo/game/message/impl/OpenOverlayMessage.java rename src/org/apollo/net/release/r317/{OpenInterfaceSidebarMessageEncoder.java => OpenInterfaceOverlayMessageEncoder.java} (58%) create mode 100644 src/org/apollo/net/release/r317/OpenOverlayMessageEncoder.java rename src/org/apollo/net/release/r377/{OpenInterfaceSidebarMessageEncoder.java => OpenInterfaceOverlayMessageEncoder.java} (64%) create mode 100644 src/org/apollo/net/release/r377/OpenOverlayMessageEncoder.java diff --git a/src/org/apollo/game/message/impl/OpenInterfaceSidebarMessage.java b/src/org/apollo/game/message/impl/OpenInterfaceOverlayMessage.java similarity index 54% rename from src/org/apollo/game/message/impl/OpenInterfaceSidebarMessage.java rename to src/org/apollo/game/message/impl/OpenInterfaceOverlayMessage.java index 276047e6..1d34521d 100644 --- a/src/org/apollo/game/message/impl/OpenInterfaceSidebarMessage.java +++ b/src/org/apollo/game/message/impl/OpenInterfaceOverlayMessage.java @@ -3,11 +3,11 @@ package org.apollo.game.message.impl; import org.apollo.game.message.Message; /** - * A {@link Message} sent to the client to open an interface and temporary sidebar overlay. + * A {@link Message} sent to the client to open an interface and temporary overlay. * * @author Graham */ -public final class OpenInterfaceSidebarMessage extends Message { +public final class OpenInterfaceOverlayMessage extends Message { /** * The interface id. @@ -15,19 +15,19 @@ public final class OpenInterfaceSidebarMessage extends Message { private final int interfaceId; /** - * The sidebar id. + * The overlay id. */ - private final int sidebarId; + private final int overlayId; /** - * Creates the open interface sidebar message. + * Creates the open interface overlay message. * * @param interfaceId The interface id. - * @param sidebarId The sidebar id. + * @param overlayId The overlay id. */ - public OpenInterfaceSidebarMessage(int interfaceId, int sidebarId) { + public OpenInterfaceOverlayMessage(int interfaceId, int overlayId) { this.interfaceId = interfaceId; - this.sidebarId = sidebarId; + this.overlayId = overlayId; } /** @@ -40,12 +40,12 @@ public final class OpenInterfaceSidebarMessage extends Message { } /** - * Gets the sidebar id. + * Gets the overlay id. * - * @return The sidebar id. + * @return The overlay id. */ - public int getSidebarId() { - return sidebarId; + public int getOverlayId() { + return overlayId; } } \ No newline at end of file diff --git a/src/org/apollo/game/message/impl/OpenOverlayMessage.java b/src/org/apollo/game/message/impl/OpenOverlayMessage.java new file mode 100644 index 00000000..90ad7dbc --- /dev/null +++ b/src/org/apollo/game/message/impl/OpenOverlayMessage.java @@ -0,0 +1,35 @@ +package org.apollo.game.message.impl; + +import org.apollo.game.message.Message; + +/** + * A {@link Message} sent to the client to open an overlay interface. + * + * @author Major + */ +public final class OpenOverlayMessage extends Message { + + /** + * The overlay id. + */ + private final int overlayId; + + /** + * Creates the open interface overlay message. + * + * @param overlayId The overlay id. + */ + public OpenOverlayMessage(int overlayId) { + this.overlayId = overlayId; + } + + /** + * Gets the overlay id. + * + * @return The overlay id. + */ + public int getOverlayId() { + return overlayId; + } + +} \ No newline at end of file diff --git a/src/org/apollo/game/model/inter/InterfaceSet.java b/src/org/apollo/game/model/inter/InterfaceSet.java index 72835dac..b2178eac 100644 --- a/src/org/apollo/game/model/inter/InterfaceSet.java +++ b/src/org/apollo/game/model/inter/InterfaceSet.java @@ -8,9 +8,11 @@ import org.apollo.game.message.impl.CloseInterfaceMessage; import org.apollo.game.message.impl.EnterAmountMessage; import org.apollo.game.message.impl.OpenDialogueInterfaceMessage; import org.apollo.game.message.impl.OpenInterfaceMessage; -import org.apollo.game.message.impl.OpenInterfaceSidebarMessage; +import org.apollo.game.message.impl.OpenInterfaceOverlayMessage; +import org.apollo.game.message.impl.OpenOverlayMessage; import org.apollo.game.model.entity.Player; import org.apollo.game.model.inter.dialogue.DialogueListener; +import org.apollo.game.model.inv.InventoryListener; /** * Represents the set of interfaces the player has open. @@ -217,7 +219,33 @@ public final class InterfaceSet { interfaces.put(InterfaceType.WINDOW, windowId); interfaces.put(InterfaceType.SIDEBAR, sidebarId); - player.send(new OpenInterfaceSidebarMessage(windowId, sidebarId)); + player.send(new OpenInterfaceOverlayMessage(windowId, sidebarId)); + } + + /** + * Opens an overlay interface. + * + * @param overlay The overlay id. + */ + public void openOverlay(int overlay) { + closeAndNotify(); + interfaces.put(InterfaceType.OVERLAY, overlay); + + player.send(new OpenOverlayMessage(overlay)); + } + + /** + * Opens an overlay interface with the specified {@link InventoryListener}. + * + * @param listener The listener. + * @param overlay The overlay id. + */ + public void openOverlay(InterfaceListener listener, int overlay) { + closeAndNotify(); + this.listener = Optional.ofNullable(listener); + interfaces.put(InterfaceType.OVERLAY, overlay); + + player.send(new OpenOverlayMessage(overlay)); } /** diff --git a/src/org/apollo/net/release/r317/OpenInterfaceSidebarMessageEncoder.java b/src/org/apollo/net/release/r317/OpenInterfaceOverlayMessageEncoder.java similarity index 58% rename from src/org/apollo/net/release/r317/OpenInterfaceSidebarMessageEncoder.java rename to src/org/apollo/net/release/r317/OpenInterfaceOverlayMessageEncoder.java index a13edd65..1a1d18c9 100644 --- a/src/org/apollo/net/release/r317/OpenInterfaceSidebarMessageEncoder.java +++ b/src/org/apollo/net/release/r317/OpenInterfaceOverlayMessageEncoder.java @@ -1,6 +1,6 @@ package org.apollo.net.release.r317; -import org.apollo.game.message.impl.OpenInterfaceSidebarMessage; +import org.apollo.game.message.impl.OpenInterfaceOverlayMessage; import org.apollo.net.codec.game.DataTransformation; import org.apollo.net.codec.game.DataType; import org.apollo.net.codec.game.GamePacket; @@ -8,17 +8,17 @@ import org.apollo.net.codec.game.GamePacketBuilder; import org.apollo.net.release.MessageEncoder; /** - * A {@link MessageEncoder} for the {@link OpenInterfaceSidebarMessage}. + * A {@link MessageEncoder} for the {@link OpenInterfaceOverlayMessage}. * * @author Graham */ -public final class OpenInterfaceSidebarMessageEncoder extends MessageEncoder { +public final class OpenInterfaceOverlayMessageEncoder extends MessageEncoder { @Override - public GamePacket encode(OpenInterfaceSidebarMessage message) { + public GamePacket encode(OpenInterfaceOverlayMessage message) { GamePacketBuilder builder = new GamePacketBuilder(248); builder.put(DataType.SHORT, DataTransformation.ADD, message.getInterfaceId()); - builder.put(DataType.SHORT, message.getSidebarId()); + builder.put(DataType.SHORT, message.getOverlayId()); return builder.toGamePacket(); } diff --git a/src/org/apollo/net/release/r317/OpenOverlayMessageEncoder.java b/src/org/apollo/net/release/r317/OpenOverlayMessageEncoder.java new file mode 100644 index 00000000..f9ff4a8c --- /dev/null +++ b/src/org/apollo/net/release/r317/OpenOverlayMessageEncoder.java @@ -0,0 +1,24 @@ +package org.apollo.net.release.r317; + +import org.apollo.game.message.impl.OpenOverlayMessage; +import org.apollo.net.codec.game.DataOrder; +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.MessageEncoder; + +/** + * A {@link MessageEncoder} for the {@link OpenOverlayMessage}. + * + * @author Major + */ +public final class OpenOverlayMessageEncoder extends MessageEncoder { + + @Override + public GamePacket encode(OpenOverlayMessage message) { + GamePacketBuilder builder = new GamePacketBuilder(142); + builder.put(DataType.SHORT, DataOrder.LITTLE, message.getOverlayId()); + 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 e011e1d8..e57d1d9e 100644 --- a/src/org/apollo/net/release/r317/Release317.java +++ b/src/org/apollo/net/release/r317/Release317.java @@ -17,7 +17,8 @@ import org.apollo.game.message.impl.LogoutMessage; import org.apollo.game.message.impl.NpcSynchronizationMessage; import org.apollo.game.message.impl.OpenDialogueInterfaceMessage; import org.apollo.game.message.impl.OpenInterfaceMessage; -import org.apollo.game.message.impl.OpenInterfaceSidebarMessage; +import org.apollo.game.message.impl.OpenInterfaceOverlayMessage; +import org.apollo.game.message.impl.OpenOverlayMessage; import org.apollo.game.message.impl.PlayerSynchronizationMessage; import org.apollo.game.message.impl.PositionMessage; import org.apollo.game.message.impl.PrivacyOptionMessage; @@ -178,7 +179,7 @@ public final class Release317 extends Release { register(UpdateItemsMessage.class, new UpdateItemsMessageEncoder()); register(UpdateSlottedItemsMessage.class, new UpdateSlottedItemsMessageEncoder()); register(UpdateSkillMessage.class, new UpdateSkillMessageEncoder()); - register(OpenInterfaceSidebarMessage.class, new OpenInterfaceSidebarMessageEncoder()); + register(OpenInterfaceOverlayMessage.class, new OpenInterfaceOverlayMessageEncoder()); register(EnterAmountMessage.class, new EnterAmountMessageEncoder()); register(SetWidgetTextMessage.class, new SetWidgetTextMessageEncoder()); register(NpcSynchronizationMessage.class, new NpcSynchronizationMessageEncoder()); @@ -209,5 +210,6 @@ public final class Release317 extends Release { register(SendFriendMessage.class, new SendFriendMessageEncoder()); register(HintIconMessage.class, new HintIconMessageEncoder()); register(FlashTabInterfaceMessage.class, new FlashTabInterfaceMessageEncoder()); + register(OpenOverlayMessage.class, new OpenOverlayMessageEncoder()); } } \ No newline at end of file diff --git a/src/org/apollo/net/release/r377/OpenInterfaceSidebarMessageEncoder.java b/src/org/apollo/net/release/r377/OpenInterfaceOverlayMessageEncoder.java similarity index 64% rename from src/org/apollo/net/release/r377/OpenInterfaceSidebarMessageEncoder.java rename to src/org/apollo/net/release/r377/OpenInterfaceOverlayMessageEncoder.java index 543c509a..2a83cc8c 100644 --- a/src/org/apollo/net/release/r377/OpenInterfaceSidebarMessageEncoder.java +++ b/src/org/apollo/net/release/r377/OpenInterfaceOverlayMessageEncoder.java @@ -1,6 +1,6 @@ package org.apollo.net.release.r377; -import org.apollo.game.message.impl.OpenInterfaceSidebarMessage; +import org.apollo.game.message.impl.OpenInterfaceOverlayMessage; import org.apollo.net.codec.game.DataOrder; import org.apollo.net.codec.game.DataTransformation; import org.apollo.net.codec.game.DataType; @@ -9,17 +9,17 @@ import org.apollo.net.codec.game.GamePacketBuilder; import org.apollo.net.release.MessageEncoder; /** - * A {@link MessageEncoder} for the {@link OpenInterfaceSidebarMessage}. + * A {@link MessageEncoder} for the {@link OpenInterfaceOverlayMessage}. * * @author Graham */ -public final class OpenInterfaceSidebarMessageEncoder extends MessageEncoder { +public final class OpenInterfaceOverlayMessageEncoder extends MessageEncoder { @Override - public GamePacket encode(OpenInterfaceSidebarMessage message) { + public GamePacket encode(OpenInterfaceOverlayMessage message) { GamePacketBuilder builder = new GamePacketBuilder(128); builder.put(DataType.SHORT, DataTransformation.ADD, message.getInterfaceId()); - builder.put(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD, message.getSidebarId()); + builder.put(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD, message.getOverlayId()); return builder.toGamePacket(); } diff --git a/src/org/apollo/net/release/r377/OpenOverlayMessageEncoder.java b/src/org/apollo/net/release/r377/OpenOverlayMessageEncoder.java new file mode 100644 index 00000000..e3364138 --- /dev/null +++ b/src/org/apollo/net/release/r377/OpenOverlayMessageEncoder.java @@ -0,0 +1,25 @@ +package org.apollo.net.release.r377; + +import org.apollo.game.message.impl.OpenOverlayMessage; +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.MessageEncoder; + +/** + * A {@link MessageEncoder} for the {@link OpenOverlayMessage}. + * + * @author Major + */ +public final class OpenOverlayMessageEncoder extends MessageEncoder { + + @Override + public GamePacket encode(OpenOverlayMessage message) { + GamePacketBuilder builder = new GamePacketBuilder(246); + builder.put(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD, message.getOverlayId()); + 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 d943f6bd..9cee1c14 100644 --- a/src/org/apollo/net/release/r377/Release377.java +++ b/src/org/apollo/net/release/r377/Release377.java @@ -17,7 +17,8 @@ import org.apollo.game.message.impl.LogoutMessage; import org.apollo.game.message.impl.NpcSynchronizationMessage; import org.apollo.game.message.impl.OpenDialogueInterfaceMessage; import org.apollo.game.message.impl.OpenInterfaceMessage; -import org.apollo.game.message.impl.OpenInterfaceSidebarMessage; +import org.apollo.game.message.impl.OpenInterfaceOverlayMessage; +import org.apollo.game.message.impl.OpenOverlayMessage; import org.apollo.game.message.impl.PlayerSynchronizationMessage; import org.apollo.game.message.impl.PositionMessage; import org.apollo.game.message.impl.PrivacyOptionMessage; @@ -42,7 +43,6 @@ import org.apollo.game.message.impl.UpdateTileItemMessage; import org.apollo.game.message.impl.UpdateWeightMessage; import org.apollo.net.meta.PacketMetaDataGroup; import org.apollo.net.release.Release; -import org.apollo.net.release.r317.FlashTabInterfaceMessageEncoder; /** * A {@link Release} implementation for the 377 protocol. @@ -175,7 +175,7 @@ public final class Release377 extends Release { register(UpdateItemsMessage.class, new UpdateItemsMessageEncoder()); register(UpdateSlottedItemsMessage.class, new UpdateSlottedItemsMessageEncoder()); register(UpdateSkillMessage.class, new UpdateSkillMessageEncoder()); - register(OpenInterfaceSidebarMessage.class, new OpenInterfaceSidebarMessageEncoder()); + register(OpenInterfaceOverlayMessage.class, new OpenInterfaceOverlayMessageEncoder()); register(EnterAmountMessage.class, new EnterAmountMessageEncoder()); register(SetWidgetTextMessage.class, new SetWidgetTexMessageEncoder()); register(NpcSynchronizationMessage.class, new NpcSynchronizationMessageEncoder()); @@ -206,6 +206,7 @@ public final class Release377 extends Release { register(SendFriendMessage.class, new SendFriendMessageEncoder()); register(HintIconMessage.class, new HintIconMessageEncoder()); register(FlashTabInterfaceMessage.class, new FlashTabInterfaceMessageEncoder()); + register(OpenOverlayMessage.class, new OpenOverlayMessageEncoder()); } } \ No newline at end of file