From 7f7656112d07007bcb6958814723d7328ac91152 Mon Sep 17 00:00:00 2001 From: Major- Date: Fri, 27 Feb 2015 17:45:03 +0000 Subject: [PATCH] Rename 'OpenDialogueOverlayInterfaceMessage' to 'OpenDialogueOverlayMessage'. --- .../game/message/impl/HintIconMessage.java | 20 ++++++++++- .../impl/OpenDialogueOverlayMessage.java | 35 ++++++++++++++++++ .../apollo/game/model/inter/InterfaceSet.java | 36 ++++++++++++++++--- .../OpenDialogueOverlayMessageEncoder.java | 25 +++++++++++++ .../apollo/net/release/r317/Release317.java | 3 ++ .../OpenDialogueOverlayMessageEncoder.java | 24 +++++++++++++ .../apollo/net/release/r377/Release377.java | 2 ++ 7 files changed, 139 insertions(+), 6 deletions(-) create mode 100644 src/org/apollo/game/message/impl/OpenDialogueOverlayMessage.java create mode 100644 src/org/apollo/net/release/r317/OpenDialogueOverlayMessageEncoder.java create mode 100644 src/org/apollo/net/release/r377/OpenDialogueOverlayMessageEncoder.java diff --git a/src/org/apollo/game/message/impl/HintIconMessage.java b/src/org/apollo/game/message/impl/HintIconMessage.java index cbd2167b..6a9757ac 100644 --- a/src/org/apollo/game/message/impl/HintIconMessage.java +++ b/src/org/apollo/game/message/impl/HintIconMessage.java @@ -13,7 +13,7 @@ import org.apollo.game.model.Position; */ public final class HintIconMessage extends Message { - // TODO identify the other types and use an enum. + // TODO identify the other types. /** * The type of a HintIcon. @@ -75,6 +75,24 @@ public final class HintIconMessage extends Message { return new HintIconMessage(Type.PLAYER, Optional.of(index), Optional.empty()); } + /** + * Creates a HintIconMessage that removes the current Npc hint icon. + * + * @return The HintIconMessage. + */ + public static HintIconMessage resetNpc() { + return forNpc(-1); + } + + /** + * Creates a HintIconMessage that removes the current Player hint icon. + * + * @return The HintIconMessage. + */ + public static HintIconMessage resetPlayer() { + return forPlayer(-1); + } + /** * The index of the Mob, if applicable. */ diff --git a/src/org/apollo/game/message/impl/OpenDialogueOverlayMessage.java b/src/org/apollo/game/message/impl/OpenDialogueOverlayMessage.java new file mode 100644 index 00000000..b785f569 --- /dev/null +++ b/src/org/apollo/game/message/impl/OpenDialogueOverlayMessage.java @@ -0,0 +1,35 @@ +package org.apollo.game.message.impl; + +import org.apollo.game.message.Message; + +/** + * A {@link Message} sent to the client that opens a dialogue interface (an interface that appears in the chat box). + * + * @author Chris Fletcher + */ +public final class OpenDialogueOverlayMessage extends Message { + + /** + * The interface id. + */ + private final int interfaceId; + + /** + * Creates a new message with the specified interface id. + * + * @param interfaceId The interface id. + */ + public OpenDialogueOverlayMessage(int interfaceId) { + this.interfaceId = interfaceId; + } + + /** + * Gets the interface id. + * + * @return The interface id. + */ + public int getInterfaceId() { + return interfaceId; + } + +} \ 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 5743a956..3e77387e 100644 --- a/src/org/apollo/game/model/inter/InterfaceSet.java +++ b/src/org/apollo/game/model/inter/InterfaceSet.java @@ -7,6 +7,7 @@ import java.util.Optional; 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.OpenDialogueOverlayMessage; import org.apollo.game.message.impl.OpenInterfaceMessage; import org.apollo.game.message.impl.OpenInterfaceSidebarMessage; import org.apollo.game.message.impl.OpenOverlayMessage; @@ -144,10 +145,10 @@ public final class InterfaceSet { } /** - * Opens a chat box dialogue. + * Opens a dialogue interface. * - * @param listener The listener for the dialogue. - * @param dialogueId The dialogue's id. + * @param listener The {@link DialogueListener}. + * @param dialogueId The dialogue id. */ public void openDialogue(DialogueListener listener, int dialogueId) { closeAndNotify(); @@ -160,14 +161,39 @@ public final class InterfaceSet { } /** - * Opens a chat box dialogue. + * Opens a dialogue. * - * @param dialogueId The dialogue's id. + * @param dialogueId The dialogue id. */ public void openDialogue(int dialogueId) { openDialogue(null, dialogueId); } + /** + * Opens a dialogue overlay interface. + * + * @param listener The {@link DialogueListener}. + * @param dialogueId The dialogue id. + */ + public void openDialogueOverlay(DialogueListener listener, int dialogueId) { + closeAndNotify(); + + this.dialogueListener = Optional.ofNullable(listener); + this.listener = Optional.ofNullable(listener); + + interfaces.put(InterfaceType.DIALOGUE, dialogueId); + player.send(new OpenDialogueOverlayMessage(dialogueId)); + } + + /** + * Opens a dialogue overlay. + * + * @param dialogueId The dialogue id. + */ + public void openDialogueOverlay(int dialogueId) { + openDialogueOverlay(null, dialogueId); + } + /** * Opens the enter amount dialogue. * diff --git a/src/org/apollo/net/release/r317/OpenDialogueOverlayMessageEncoder.java b/src/org/apollo/net/release/r317/OpenDialogueOverlayMessageEncoder.java new file mode 100644 index 00000000..a53afa78 --- /dev/null +++ b/src/org/apollo/net/release/r317/OpenDialogueOverlayMessageEncoder.java @@ -0,0 +1,25 @@ +package org.apollo.net.release.r317; + +import org.apollo.game.message.impl.OpenDialogueOverlayMessage; +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 OpenDialogueOverlayMessage}. + * + * @author Major + */ +public final class OpenDialogueOverlayMessageEncoder extends MessageEncoder { + + @Override + public GamePacket encode(OpenDialogueOverlayMessage message) { + GamePacketBuilder builder = new GamePacketBuilder(218); + builder.put(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD, message.getInterfaceId()); + 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 78a0489f..39c77ab4 100644 --- a/src/org/apollo/net/release/r317/Release317.java +++ b/src/org/apollo/net/release/r317/Release317.java @@ -16,6 +16,7 @@ import org.apollo.game.message.impl.IgnoreListMessage; 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.OpenDialogueOverlayMessage; import org.apollo.game.message.impl.OpenInterfaceMessage; import org.apollo.game.message.impl.OpenInterfaceSidebarMessage; import org.apollo.game.message.impl.OpenOverlayMessage; @@ -214,5 +215,7 @@ public final class Release317 extends Release { register(FlashTabInterfaceMessage.class, new FlashTabInterfaceMessageEncoder()); register(OpenSidebarMessage.class, new OpenSidebarMessageEncoder()); register(OpenOverlayMessage.class, new OpenOverlayMessageEncoder()); + register(OpenDialogueOverlayMessage.class, new OpenDialogueOverlayMessageEncoder()); } + } \ No newline at end of file diff --git a/src/org/apollo/net/release/r377/OpenDialogueOverlayMessageEncoder.java b/src/org/apollo/net/release/r377/OpenDialogueOverlayMessageEncoder.java new file mode 100644 index 00000000..1f7f3ea6 --- /dev/null +++ b/src/org/apollo/net/release/r377/OpenDialogueOverlayMessageEncoder.java @@ -0,0 +1,24 @@ +package org.apollo.net.release.r377; + +import org.apollo.game.message.impl.OpenDialogueOverlayMessage; +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 OpenDialogueOverlayMessage}. + * + * @author Major + */ +public final class OpenDialogueOverlayMessageEncoder extends MessageEncoder { + + @Override + public GamePacket encode(OpenDialogueOverlayMessage message) { + GamePacketBuilder builder = new GamePacketBuilder(154); + builder.put(DataType.SHORT, DataOrder.LITTLE, message.getInterfaceId()); + 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 4903d61d..01b663db 100644 --- a/src/org/apollo/net/release/r377/Release377.java +++ b/src/org/apollo/net/release/r377/Release377.java @@ -16,6 +16,7 @@ import org.apollo.game.message.impl.IgnoreListMessage; 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.OpenDialogueOverlayMessage; import org.apollo.game.message.impl.OpenInterfaceMessage; import org.apollo.game.message.impl.OpenInterfaceSidebarMessage; import org.apollo.game.message.impl.OpenOverlayMessage; @@ -210,6 +211,7 @@ public final class Release377 extends Release { register(FlashTabInterfaceMessage.class, new FlashTabInterfaceMessageEncoder()); register(OpenSidebarMessage.class, new OpenSidebarMessageEncoder()); register(OpenOverlayMessage.class, new OpenOverlayMessageEncoder()); + register(OpenDialogueOverlayMessage.class, new OpenDialogueOverlayMessageEncoder()); } } \ No newline at end of file