From ab40d5728b215ba7ab91268dee43ee3570ac1a87 Mon Sep 17 00:00:00 2001 From: thispixel Date: Thu, 12 Feb 2015 13:11:33 +0000 Subject: [PATCH 1/4] Fix confusion between mouse click and flagged mouse movement. --- ...ickMessage.java => FlaggedMouseEventMessage.java} | 4 ++-- ...der.java => FlaggedMouseEventMessageDecoder.java} | 12 ++++++------ src/org/apollo/net/release/r317/Release317.java | 2 +- ...der.java => FlaggedMouseEventMessageDecoder.java} | 12 ++++++------ src/org/apollo/net/release/r377/Release377.java | 2 +- 5 files changed, 16 insertions(+), 16 deletions(-) rename src/org/apollo/game/message/impl/{MouseClickMessage.java => FlaggedMouseEventMessage.java} (92%) rename src/org/apollo/net/release/r317/{MouseClickMessageDecoder.java => FlaggedMouseEventMessageDecoder.java} (63%) rename src/org/apollo/net/release/r377/{MouseClickMessageDecoder.java => FlaggedMouseEventMessageDecoder.java} (63%) diff --git a/src/org/apollo/game/message/impl/MouseClickMessage.java b/src/org/apollo/game/message/impl/FlaggedMouseEventMessage.java similarity index 92% rename from src/org/apollo/game/message/impl/MouseClickMessage.java rename to src/org/apollo/game/message/impl/FlaggedMouseEventMessage.java index 4af02429..9f427d19 100644 --- a/src/org/apollo/game/message/impl/MouseClickMessage.java +++ b/src/org/apollo/game/message/impl/FlaggedMouseEventMessage.java @@ -7,7 +7,7 @@ import org.apollo.game.message.Message; * * @author Major */ -public final class MouseClickMessage extends Message { +public final class FlaggedMouseEventMessage extends Message { /** * The number of clicks on this point (i.e. the point ({@link #x}, {@link #y})). @@ -38,7 +38,7 @@ public final class MouseClickMessage extends Message { * @param y The y coordinate of the mouse click. * @param delta If the coordinates represent a change in x/y, rather than the values themselves. */ - public MouseClickMessage(int clickCount, int x, int y, boolean delta) { + public FlaggedMouseEventMessage(int clickCount, int x, int y, boolean delta) { this.clickCount = clickCount; this.x = x; this.y = y; diff --git a/src/org/apollo/net/release/r317/MouseClickMessageDecoder.java b/src/org/apollo/net/release/r317/FlaggedMouseEventMessageDecoder.java similarity index 63% rename from src/org/apollo/net/release/r317/MouseClickMessageDecoder.java rename to src/org/apollo/net/release/r317/FlaggedMouseEventMessageDecoder.java index 717d3b70..4279ca05 100644 --- a/src/org/apollo/net/release/r317/MouseClickMessageDecoder.java +++ b/src/org/apollo/net/release/r317/FlaggedMouseEventMessageDecoder.java @@ -1,20 +1,20 @@ package org.apollo.net.release.r317; -import org.apollo.game.message.impl.MouseClickMessage; +import org.apollo.game.message.impl.FlaggedMouseEventMessage; 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.MessageDecoder; /** - * A {@link MessageDecoder} for the {@link MouseClickMessage}. + * A {@link MessageDecoder} for the {@link org.apollo.game.message.impl.FlaggedMouseEventMessage}. * * @author Major */ -public final class MouseClickMessageDecoder extends MessageDecoder { +public final class FlaggedMouseEventMessageDecoder extends MessageDecoder { @Override - public MouseClickMessage decode(GamePacket packet) { + public FlaggedMouseEventMessage decode(GamePacket packet) { GamePacketReader reader = new GamePacketReader(packet); int read; if (reader.getLength() == 2) { @@ -22,7 +22,7 @@ public final class MouseClickMessageDecoder extends MessageDecoder> 12); int dX = (read >> 6) & 0x3f; int dY = read & 0x3f; - return new MouseClickMessage(clicks, dX, dY, true); + return new FlaggedMouseEventMessage(clicks, dX, dY, true); } else if (reader.getLength() == 3) { read = (int) reader.getUnsigned(DataType.TRI_BYTE) & ~0x800000; } else { @@ -33,7 +33,7 @@ public final class MouseClickMessageDecoder extends MessageDecoder { +public final class FlaggedMouseEventMessageDecoder extends MessageDecoder { @Override - public MouseClickMessage decode(GamePacket packet) { + public FlaggedMouseEventMessage decode(GamePacket packet) { GamePacketReader reader = new GamePacketReader(packet); int read, clicks, x, y; @@ -23,7 +23,7 @@ public final class MouseClickMessageDecoder extends MessageDecoder> 12); x = (read >> 6) & 0x3f; y = read & 0x3f; - return new MouseClickMessage(clicks, x, y, true); + return new FlaggedMouseEventMessage(clicks, x, y, true); } else if (reader.getLength() == 3) { read = (int) reader.getUnsigned(DataType.TRI_BYTE) & ~0x800000; } else { @@ -33,7 +33,7 @@ public final class MouseClickMessageDecoder extends MessageDecoder> 19); x = (read & 0x7f) % 765; y = (read & 0x7f) / 765; - return new MouseClickMessage(clicks, x, y, false); + return new FlaggedMouseEventMessage(clicks, x, y, false); } } \ 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 303854f9..75bccec9 100644 --- a/src/org/apollo/net/release/r377/Release377.java +++ b/src/org/apollo/net/release/r377/Release377.java @@ -128,7 +128,7 @@ public final class Release377 extends Release { register(36, new MagicOnItemMessageDecoder()); register(187, new FocusUpdateMessageDecoder()); - register(19, new MouseClickMessageDecoder()); + register(19, new FlaggedMouseEventMessageDecoder()); register(140, new ArrowKeyMessageDecoder()); register(176, new PrivacyOptionMessageDecoder()); From 0cad0dedc5f280251525f9a5ec581b3ba9bebbc0 Mon Sep 17 00:00:00 2001 From: thispixel Date: Thu, 12 Feb 2015 14:30:27 +0000 Subject: [PATCH 2/4] Add mouse clicked message support and decoding. --- .../message/impl/MouseClickedMessage.java | 82 +++++++++++++++++++ .../r317/MouseClickedMessageDecoder.java | 32 ++++++++ .../apollo/net/release/r317/Release317.java | 1 + 3 files changed, 115 insertions(+) create mode 100644 src/org/apollo/game/message/impl/MouseClickedMessage.java create mode 100644 src/org/apollo/net/release/r317/MouseClickedMessageDecoder.java diff --git a/src/org/apollo/game/message/impl/MouseClickedMessage.java b/src/org/apollo/game/message/impl/MouseClickedMessage.java new file mode 100644 index 00000000..d7eab5d7 --- /dev/null +++ b/src/org/apollo/game/message/impl/MouseClickedMessage.java @@ -0,0 +1,82 @@ +package org.apollo.game.message.impl; + +import org.apollo.game.message.Message; + +/** + * A {@link Message} sent by the client to indicate when the mouse button/s have been clicked. This can be used in + * combination with {@link org.apollo.game.message.impl.FocusUpdateMessage} to work out if the player is clicking + * whilst the client is closed + * + * @author Stuart + */ +public final class MouseClickedMessage extends Message { + + /** + * Time in milliseconds since the last click + */ + private final long lastClickedDelay; + /** + * Right mouse button flag + */ + private final boolean rightMouseButton; + /** + * The y position of the cursor + */ + private final int x; + /** + * The x position of the cursor + */ + private final int y; + + /** + * Creates a new mouse clicked message + * + * @param lastClickedDelay The delay since the last click + * @param rightMouseButton Whether or not the right mouse button was used + * @param x The x cursor position when clicked + * @param y The y cursor position when clicked + */ + public MouseClickedMessage(long lastClickedDelay, boolean rightMouseButton, int x, int y) { + this.lastClickedDelay = lastClickedDelay; + this.rightMouseButton = rightMouseButton; + this.x = x; + this.y = y; + } + + /** + * Gets the time in milliseconds since the last click + * + * @return The time in milliseconds since the last click + */ + public long getLastClickedDelay() { + return lastClickedDelay; + } + + /** + * Gets whether the right mouse button was used or not + * + * @return If the mouse right button was used to click + */ + public boolean usingRightMouseButton() { + return rightMouseButton; + } + + /** + * Gets the x position of the cursor + * + * @return The x position of the cursor when clicked + */ + public int getX() { + return x; + } + + /** + * Gets the y position of the cursor + * + * @return The y position of the cursor when clicked + */ + public int getY() { + return y; + } + +} diff --git a/src/org/apollo/net/release/r317/MouseClickedMessageDecoder.java b/src/org/apollo/net/release/r317/MouseClickedMessageDecoder.java new file mode 100644 index 00000000..70d40c7c --- /dev/null +++ b/src/org/apollo/net/release/r317/MouseClickedMessageDecoder.java @@ -0,0 +1,32 @@ +package org.apollo.net.release.r317; + +import org.apollo.game.message.impl.MouseClickedMessage; +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.MessageDecoder; + +/** + * A {@link org.apollo.net.release.MessageDecoder} for the {@link org.apollo.game.message.impl.MouseClickedMessage} + * + * @author Stuart + */ +public final class MouseClickedMessageDecoder extends MessageDecoder { + + @Override + public MouseClickedMessage decode(GamePacket packet) { + GamePacketReader reader = new GamePacketReader(packet); + int value = (int)reader.getUnsigned(DataType.INT); + + long delay = (value >> 20) * 50; + + boolean rightMouseButton = ((value >> 19) & 0x1) == 1; + + int cords = (value & 0x3FFFF); + int x = cords % 765; + int y = cords / 765; + + return new MouseClickedMessage(delay, rightMouseButton, x, y); + } + +} \ 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 4c4c1e49..b8a37cab 100644 --- a/src/org/apollo/net/release/r317/Release317.java +++ b/src/org/apollo/net/release/r317/Release317.java @@ -129,6 +129,7 @@ public final class Release317 extends Release { register(3, new FocusUpdateMessageDecoder()); register(45, new FlaggedMouseEventMessageDecoder()); + register(241, new MouseClickedMessageDecoder()); register(86, new ArrowKeyMessageDecoder()); register(95, new PrivacyOptionMessageDecoder()); From 3606e449853d7f527985f7b16dc7339c276ff91b Mon Sep 17 00:00:00 2001 From: thispixel Date: Thu, 12 Feb 2015 14:36:51 +0000 Subject: [PATCH 3/4] Add mouse clicked decoder to 377 release. --- .../r377/MouseClickedMessageDecoder.java | 32 +++++++++++++++++++ .../apollo/net/release/r377/Release377.java | 3 +- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/org/apollo/net/release/r377/MouseClickedMessageDecoder.java diff --git a/src/org/apollo/net/release/r377/MouseClickedMessageDecoder.java b/src/org/apollo/net/release/r377/MouseClickedMessageDecoder.java new file mode 100644 index 00000000..5ee162ec --- /dev/null +++ b/src/org/apollo/net/release/r377/MouseClickedMessageDecoder.java @@ -0,0 +1,32 @@ +package org.apollo.net.release.r377; + +import org.apollo.game.message.impl.MouseClickedMessage; +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.MessageDecoder; + +/** + * A {@link org.apollo.net.release.MessageDecoder} for the {@link org.apollo.game.message.impl.MouseClickedMessage} + * + * @author Stuart + */ +public final class MouseClickedMessageDecoder extends MessageDecoder { + + @Override + public MouseClickedMessage decode(GamePacket packet) { + GamePacketReader reader = new GamePacketReader(packet); + int value = (int)reader.getUnsigned(DataType.INT); + + long delay = (value >> 20) * 50; + + boolean rightMouseButton = ((value >> 19) & 0x1) == 1; + + int cords = (value & 0x3FFFF); + int x = cords % 765; + int y = cords / 765; + + return new MouseClickedMessage(delay, rightMouseButton, x, y); + } + +} \ 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 75bccec9..f80d9d12 100644 --- a/src/org/apollo/net/release/r377/Release377.java +++ b/src/org/apollo/net/release/r377/Release377.java @@ -128,7 +128,8 @@ public final class Release377 extends Release { register(36, new MagicOnItemMessageDecoder()); register(187, new FocusUpdateMessageDecoder()); - register(19, new FlaggedMouseEventMessageDecoder()); + register(19, new MouseClickedMessageDecoder()); + register(171, new FlaggedMouseEventMessageDecoder()); register(140, new ArrowKeyMessageDecoder()); register(176, new PrivacyOptionMessageDecoder()); From 1f3f976b382e42e677b7638adef150a67db070fb Mon Sep 17 00:00:00 2001 From: thispixel Date: Thu, 12 Feb 2015 14:41:08 +0000 Subject: [PATCH 4/4] Refactored PrivateMessageMessageDecoder to PrivateChatMessageDecoder in 377 release. --- ...essageMessageDecoder.java => PrivateChatMessageDecoder.java} | 2 +- src/org/apollo/net/release/r377/Release377.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename src/org/apollo/net/release/r377/{PrivateMessageMessageDecoder.java => PrivateChatMessageDecoder.java} (92%) diff --git a/src/org/apollo/net/release/r377/PrivateMessageMessageDecoder.java b/src/org/apollo/net/release/r377/PrivateChatMessageDecoder.java similarity index 92% rename from src/org/apollo/net/release/r377/PrivateMessageMessageDecoder.java rename to src/org/apollo/net/release/r377/PrivateChatMessageDecoder.java index a39bde32..66725af1 100644 --- a/src/org/apollo/net/release/r377/PrivateMessageMessageDecoder.java +++ b/src/org/apollo/net/release/r377/PrivateChatMessageDecoder.java @@ -13,7 +13,7 @@ import org.apollo.util.TextUtil; * * @author Major */ -public final class PrivateMessageMessageDecoder extends MessageDecoder { +public final class PrivateChatMessageDecoder extends MessageDecoder { @Override public PrivateMessageMessage decode(GamePacket packet) { diff --git a/src/org/apollo/net/release/r377/Release377.java b/src/org/apollo/net/release/r377/Release377.java index f80d9d12..9b368738 100644 --- a/src/org/apollo/net/release/r377/Release377.java +++ b/src/org/apollo/net/release/r377/Release377.java @@ -153,7 +153,7 @@ public final class Release377 extends Release { register(217, new AddIgnoreMessageDecoder()); register(141, new RemoveFriendMessageDecoder()); register(160, new RemoveIgnoreMessageDecoder()); - register(227, new PrivateMessageMessageDecoder()); + register(227, new PrivateChatMessageDecoder()); // register encoders register(IdAssignmentMessage.class, new IdAssignmentMessageEncoder());