mirror of
https://github.com/2006-Scape/apollo.git
synced 2026-07-07 16:49:12 +00:00
Merge pull request #52 from thispixel/master.
Fix confusion between mouse click and flagged mouse movement.
This commit is contained in:
+2
-2
@@ -7,7 +7,7 @@ import org.apollo.game.message.Message;
|
|||||||
*
|
*
|
||||||
* @author Major
|
* @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})).
|
* 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 y The y coordinate of the mouse click.
|
||||||
* @param delta If the coordinates represent a change in x/y, rather than the values themselves.
|
* @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.clickCount = clickCount;
|
||||||
this.x = x;
|
this.x = x;
|
||||||
this.y = y;
|
this.y = y;
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+6
-6
@@ -1,20 +1,20 @@
|
|||||||
package org.apollo.net.release.r317;
|
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.DataType;
|
||||||
import org.apollo.net.codec.game.GamePacket;
|
import org.apollo.net.codec.game.GamePacket;
|
||||||
import org.apollo.net.codec.game.GamePacketReader;
|
import org.apollo.net.codec.game.GamePacketReader;
|
||||||
import org.apollo.net.release.MessageDecoder;
|
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
|
* @author Major
|
||||||
*/
|
*/
|
||||||
public final class MouseClickMessageDecoder extends MessageDecoder<MouseClickMessage> {
|
public final class FlaggedMouseEventMessageDecoder extends MessageDecoder<FlaggedMouseEventMessage> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MouseClickMessage decode(GamePacket packet) {
|
public FlaggedMouseEventMessage decode(GamePacket packet) {
|
||||||
GamePacketReader reader = new GamePacketReader(packet);
|
GamePacketReader reader = new GamePacketReader(packet);
|
||||||
int read;
|
int read;
|
||||||
if (reader.getLength() == 2) {
|
if (reader.getLength() == 2) {
|
||||||
@@ -22,7 +22,7 @@ public final class MouseClickMessageDecoder extends MessageDecoder<MouseClickMes
|
|||||||
int clicks = (read >> 12);
|
int clicks = (read >> 12);
|
||||||
int dX = (read >> 6) & 0x3f;
|
int dX = (read >> 6) & 0x3f;
|
||||||
int dY = read & 0x3f;
|
int dY = read & 0x3f;
|
||||||
return new MouseClickMessage(clicks, dX, dY, true);
|
return new FlaggedMouseEventMessage(clicks, dX, dY, true);
|
||||||
} else if (reader.getLength() == 3) {
|
} else if (reader.getLength() == 3) {
|
||||||
read = (int) reader.getUnsigned(DataType.TRI_BYTE) & ~0x800000;
|
read = (int) reader.getUnsigned(DataType.TRI_BYTE) & ~0x800000;
|
||||||
} else {
|
} else {
|
||||||
@@ -33,7 +33,7 @@ public final class MouseClickMessageDecoder extends MessageDecoder<MouseClickMes
|
|||||||
int x = (read & 0x7f) % 765;
|
int x = (read & 0x7f) % 765;
|
||||||
int y = (read & 0x7f) / 765;
|
int y = (read & 0x7f) / 765;
|
||||||
|
|
||||||
return new MouseClickMessage(clicks, x, y, false);
|
return new FlaggedMouseEventMessage(clicks, x, y, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -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<MouseClickedMessage> {
|
||||||
|
|
||||||
|
@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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -128,7 +128,8 @@ public final class Release317 extends Release {
|
|||||||
register(237, new MagicOnItemMessageDecoder());
|
register(237, new MagicOnItemMessageDecoder());
|
||||||
|
|
||||||
register(3, new FocusUpdateMessageDecoder());
|
register(3, new FocusUpdateMessageDecoder());
|
||||||
register(45, new MouseClickMessageDecoder());
|
register(45, new FlaggedMouseEventMessageDecoder());
|
||||||
|
register(241, new MouseClickedMessageDecoder());
|
||||||
register(86, new ArrowKeyMessageDecoder());
|
register(86, new ArrowKeyMessageDecoder());
|
||||||
register(95, new PrivacyOptionMessageDecoder());
|
register(95, new PrivacyOptionMessageDecoder());
|
||||||
|
|
||||||
|
|||||||
+6
-6
@@ -1,20 +1,20 @@
|
|||||||
package org.apollo.net.release.r377;
|
package org.apollo.net.release.r377;
|
||||||
|
|
||||||
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.DataType;
|
||||||
import org.apollo.net.codec.game.GamePacket;
|
import org.apollo.net.codec.game.GamePacket;
|
||||||
import org.apollo.net.codec.game.GamePacketReader;
|
import org.apollo.net.codec.game.GamePacketReader;
|
||||||
import org.apollo.net.release.MessageDecoder;
|
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
|
* @author Major
|
||||||
*/
|
*/
|
||||||
public final class MouseClickMessageDecoder extends MessageDecoder<MouseClickMessage> {
|
public final class FlaggedMouseEventMessageDecoder extends MessageDecoder<FlaggedMouseEventMessage> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MouseClickMessage decode(GamePacket packet) {
|
public FlaggedMouseEventMessage decode(GamePacket packet) {
|
||||||
GamePacketReader reader = new GamePacketReader(packet);
|
GamePacketReader reader = new GamePacketReader(packet);
|
||||||
int read, clicks, x, y;
|
int read, clicks, x, y;
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ public final class MouseClickMessageDecoder extends MessageDecoder<MouseClickMes
|
|||||||
clicks = (read >> 12);
|
clicks = (read >> 12);
|
||||||
x = (read >> 6) & 0x3f;
|
x = (read >> 6) & 0x3f;
|
||||||
y = read & 0x3f;
|
y = read & 0x3f;
|
||||||
return new MouseClickMessage(clicks, x, y, true);
|
return new FlaggedMouseEventMessage(clicks, x, y, true);
|
||||||
} else if (reader.getLength() == 3) {
|
} else if (reader.getLength() == 3) {
|
||||||
read = (int) reader.getUnsigned(DataType.TRI_BYTE) & ~0x800000;
|
read = (int) reader.getUnsigned(DataType.TRI_BYTE) & ~0x800000;
|
||||||
} else {
|
} else {
|
||||||
@@ -33,7 +33,7 @@ public final class MouseClickMessageDecoder extends MessageDecoder<MouseClickMes
|
|||||||
clicks = (read >> 19);
|
clicks = (read >> 19);
|
||||||
x = (read & 0x7f) % 765;
|
x = (read & 0x7f) % 765;
|
||||||
y = (read & 0x7f) / 765;
|
y = (read & 0x7f) / 765;
|
||||||
return new MouseClickMessage(clicks, x, y, false);
|
return new FlaggedMouseEventMessage(clicks, x, y, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -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<MouseClickedMessage> {
|
||||||
|
|
||||||
|
@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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+1
-1
@@ -13,7 +13,7 @@ import org.apollo.util.TextUtil;
|
|||||||
*
|
*
|
||||||
* @author Major
|
* @author Major
|
||||||
*/
|
*/
|
||||||
public final class PrivateMessageMessageDecoder extends MessageDecoder<PrivateMessageMessage> {
|
public final class PrivateChatMessageDecoder extends MessageDecoder<PrivateMessageMessage> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PrivateMessageMessage decode(GamePacket packet) {
|
public PrivateMessageMessage decode(GamePacket packet) {
|
||||||
@@ -128,7 +128,8 @@ public final class Release377 extends Release {
|
|||||||
register(36, new MagicOnItemMessageDecoder());
|
register(36, new MagicOnItemMessageDecoder());
|
||||||
|
|
||||||
register(187, new FocusUpdateMessageDecoder());
|
register(187, new FocusUpdateMessageDecoder());
|
||||||
register(19, new MouseClickMessageDecoder());
|
register(19, new MouseClickedMessageDecoder());
|
||||||
|
register(171, new FlaggedMouseEventMessageDecoder());
|
||||||
register(140, new ArrowKeyMessageDecoder());
|
register(140, new ArrowKeyMessageDecoder());
|
||||||
register(176, new PrivacyOptionMessageDecoder());
|
register(176, new PrivacyOptionMessageDecoder());
|
||||||
|
|
||||||
@@ -152,7 +153,7 @@ public final class Release377 extends Release {
|
|||||||
register(217, new AddIgnoreMessageDecoder());
|
register(217, new AddIgnoreMessageDecoder());
|
||||||
register(141, new RemoveFriendMessageDecoder());
|
register(141, new RemoveFriendMessageDecoder());
|
||||||
register(160, new RemoveIgnoreMessageDecoder());
|
register(160, new RemoveIgnoreMessageDecoder());
|
||||||
register(227, new PrivateMessageMessageDecoder());
|
register(227, new PrivateChatMessageDecoder());
|
||||||
|
|
||||||
// register encoders
|
// register encoders
|
||||||
register(IdAssignmentMessage.class, new IdAssignmentMessageEncoder());
|
register(IdAssignmentMessage.class, new IdAssignmentMessageEncoder());
|
||||||
|
|||||||
Reference in New Issue
Block a user