diff --git a/client/src/main/java/rt4/Camera.java b/client/src/main/java/rt4/Camera.java index d969af49..00a5b4ab 100644 --- a/client/src/main/java/rt4/Camera.java +++ b/client/src/main/java/rt4/Camera.java @@ -68,6 +68,7 @@ public class Camera { public static boolean aBoolean205 = false; @OriginalMember(owner = "client!gk", name = "d", descriptor = "F") public static float aFloat10; + public static int ZOOM = 600; public static double mod(double a, double b) { return ((a % b) + b) % b; diff --git a/client/src/main/java/rt4/JavaMouseWheel.java b/client/src/main/java/rt4/JavaMouseWheel.java index 83a5e35e..5a8478bd 100644 --- a/client/src/main/java/rt4/JavaMouseWheel.java +++ b/client/src/main/java/rt4/JavaMouseWheel.java @@ -8,6 +8,8 @@ import org.openrs2.deob.annotation.OriginalClass; import org.openrs2.deob.annotation.OriginalMember; import org.openrs2.deob.annotation.Pc; +import static rt4.MathUtils.clamp; + @OriginalClass("client!o") public final class JavaMouseWheel extends MouseWheel implements MouseWheelListener { @@ -31,7 +33,13 @@ public final class JavaMouseWheel extends MouseWheel implements MouseWheelListen @OriginalMember(owner = "client!o", name = "mouseWheelMoved", descriptor = "(Ljava/awt/event/MouseWheelEvent;)V") @Override public final synchronized void mouseWheelMoved(@OriginalArg(0) MouseWheelEvent arg0) { + int previous = this.anInt4233; this.anInt4233 += arg0.getWheelRotation(); + int diff = this.anInt4233 - previous; + + if (Keyboard.instance.isShiftPressed()) { + Camera.ZOOM = clamp(200, 1200, Camera.ZOOM + (diff >= 0 ? 50: -50)); + } } @OriginalMember(owner = "client!o", name = "a", descriptor = "(Ljava/awt/Component;I)V") diff --git a/client/src/main/java/rt4/Keyboard.java b/client/src/main/java/rt4/Keyboard.java index 5c4e5c44..3c1e0542 100644 --- a/client/src/main/java/rt4/Keyboard.java +++ b/client/src/main/java/rt4/Keyboard.java @@ -337,6 +337,19 @@ public final class Keyboard implements KeyListener, FocusListener { } } + public boolean isShiftPressed() { + //I did this the Jagex(TM) way just for you Pazaz xoxo + boolean isPressed = false; + for (int keyCode : eventQueue) { + if (keyCode == 81) + isPressed = true; + else if (keyCode == ~(81 & 0xFFFFFF7F)) + isPressed = false; + } + + return isPressed; + } + @OriginalMember(owner = "client!uf", name = "keyTyped", descriptor = "(Ljava/awt/event/KeyEvent;)V") @Override public final void keyTyped(@OriginalArg(0) KeyEvent event) { diff --git a/client/src/main/java/rt4/MathUtils.java b/client/src/main/java/rt4/MathUtils.java index 0f4cbbd9..d95678db 100644 --- a/client/src/main/java/rt4/MathUtils.java +++ b/client/src/main/java/rt4/MathUtils.java @@ -32,4 +32,8 @@ public final class MathUtils { cos[i] = (int) (Math.cos((double) i * 0.0030679615D) * 65536.0D); } } + + public static int clamp(int min, int max, int value) { + return Math.max(min, Math.min(max, value)); + } } diff --git a/client/src/main/java/rt4/Static253.java b/client/src/main/java/rt4/Static253.java index 94d017a9..0d4b41b2 100644 --- a/client/src/main/java/rt4/Static253.java +++ b/client/src/main/java/rt4/Static253.java @@ -55,7 +55,7 @@ public final class Static253 { if (Static176.customCameraActive[4] && Camera.cameraAmplitude[4] + 128 > local59) { local59 = Camera.cameraAmplitude[4] + 128; } - Static18.method555(Camera.cameraX, arg0, SceneGraph.getTileHeight(Player.level, PlayerList.self.xFine, PlayerList.self.zFine) - 50, 600 - -(local59 * 3), local57, Camera.cameraZ, local59); + Static18.method555(Camera.cameraX, arg0, SceneGraph.getTileHeight(Player.level, PlayerList.self.xFine, PlayerList.self.zFine) - 50, Camera.ZOOM - -(local59 * 3), local57, Camera.cameraZ, local59); } local57 = Static5.anInt40; local59 = Camera.renderX;