From e5fe12a4f8a5591b02ebd80a348f4556e05c14cc Mon Sep 17 00:00:00 2001 From: ThatGamerBlue Date: Sun, 11 Aug 2019 21:29:34 +0100 Subject: [PATCH] remove flexo for splitting --- runelite-client/build.gradle | 1 - .../java/net/runelite/client/flexo/Flexo.java | 317 ----------------- .../net/runelite/client/flexo/FlexoMouse.java | 225 ------------ .../client/plugins/flexo/FlexoConfig.java | 271 -------------- .../client/plugins/flexo/FlexoOverlay.java | 99 ------ .../client/plugins/flexo/FlexoPlugin.java | 336 ------------------ 6 files changed, 1249 deletions(-) delete mode 100644 runelite-client/src/main/java/net/runelite/client/flexo/Flexo.java delete mode 100644 runelite-client/src/main/java/net/runelite/client/flexo/FlexoMouse.java delete mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/flexo/FlexoConfig.java delete mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/flexo/FlexoOverlay.java delete mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/flexo/FlexoPlugin.java diff --git a/runelite-client/build.gradle b/runelite-client/build.gradle index fc03e951ec..8ae48ebe95 100644 --- a/runelite-client/build.gradle +++ b/runelite-client/build.gradle @@ -31,7 +31,6 @@ dependencies { implementation group: 'org.javassist', name: 'javassist', version: '3.25.0-GA' implementation group: 'org.xeustechnologies', name: 'jcl-core', version: '2.8' implementation group: 'org.jetbrains', name: 'annotations', version: '17.0.0' - implementation group: 'com.github.joonasvali.naturalmouse', name: 'naturalmouse', version: '[1.0.0,)' implementation group: 'org.ow2.asm', name: 'asm-all', version: '6.0_BETA' implementation group: 'org.codehaus.plexus', name: 'plexus-utils', version: '3.2.1' implementation group: 'org.apache.httpcomponents', name: 'httpcore', version: '4.4.11' diff --git a/runelite-client/src/main/java/net/runelite/client/flexo/Flexo.java b/runelite-client/src/main/java/net/runelite/client/flexo/Flexo.java deleted file mode 100644 index 45e9d29b50..0000000000 --- a/runelite-client/src/main/java/net/runelite/client/flexo/Flexo.java +++ /dev/null @@ -1,317 +0,0 @@ -/* - * - * Copyright (c) 2019, Zeruth - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -/* -Modified java.awt.Robot for use with RuneLitePlus. Hopefully we can make it stand far apart. -Uses -https://github.com/JoonasVali/NaturalMouseMotion -for mouse motion. - */ - -package net.runelite.client.flexo; - -import com.github.joonasvali.naturalmouse.api.MouseMotionFactory; -import java.awt.AWTException; -import java.awt.Color; -import java.awt.GraphicsDevice; -import java.awt.GraphicsEnvironment; -import java.awt.Point; -import java.awt.Robot; -import java.awt.event.InputEvent; -import java.awt.event.KeyEvent; -import java.util.Random; -import java.util.logging.Logger; -import net.runelite.api.Client; -import net.runelite.api.Constants; -import net.runelite.client.ui.ClientUI; - -public class Flexo extends Robot -{ - public ThreadGroup flexoThreads = new ThreadGroup("flexo"); - public static boolean isActive; - public static double scale; - public static Client client; - public static ClientUI clientUI; - public static final int fixedWidth = Constants.GAME_FIXED_WIDTH; - public static final int fixedHeight = Constants.GAME_FIXED_HEIGHT; - public static boolean isStretched; - public static int minDelay = 45; - public static MouseMotionFactory currentMouseMotionFactory; - public boolean pausedIndefinitely = false; - private Robot peer; - - public Flexo() throws AWTException - { - if (GraphicsEnvironment.isHeadless()) - { - throw new AWTException("headless environment"); - } - init(GraphicsEnvironment.getLocalGraphicsEnvironment() - .getDefaultScreenDevice()); - } - - private void init(GraphicsDevice screen) throws AWTException - { - try - { - peer = new Robot(); - } - catch (Exception e) - { - client.getLogger().error("Flexo not supported on this system configuration."); - } - } - - private transient Object anchor = new Object(); - - private void pauseMS(int delayMS) - { - long initialMS = System.currentTimeMillis(); - while (System.currentTimeMillis() < initialMS + delayMS) - { - try - { - Thread.sleep(10); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - isActive = false; - } - - @Override - public synchronized void mouseMove(int x, int y) - { - try - { - //TODO: Must be better way to determine titlebar width - currentMouseMotionFactory.build(ClientUI.frame.getX() + x + determineHorizontalOffset(), ClientUI.frame.getY() + y + determineVerticalOffset()).move(); - this.delay(getMinDelay()); - } - catch (InterruptedException e) - { - e.printStackTrace(); - } - } - - public synchronized void mouseMove(Point p) - { - mouseMove((int) p.getX(), (int) p.getY()); - try - { - Thread.sleep(150); - } - catch (InterruptedException e) - { - e.printStackTrace(); - } - } - - @Override - public synchronized void mousePress(int buttonID) - { - if (buttonID < 1 || buttonID > 5) - { - Logger.getAnonymousLogger().warning("Invalid mouse button ID. please use 1-5."); - return; - } - peer.mousePress(InputEvent.getMaskForButton(buttonID)); - this.delay(getMinDelay()); - } - - public synchronized void mousePressAndRelease(int buttonID) - { - if (buttonID < 1 || buttonID > 5) - { - Logger.getAnonymousLogger().warning("Invalid mouse button ID. please use 1-5."); - return; - } - peer.mousePress(InputEvent.getMaskForButton(buttonID)); - this.delay(getMinDelay()); - peer.mouseRelease(InputEvent.getMaskForButton(buttonID)); - this.delay(getMinDelay()); - } - - //TODO: Symbols are nut supported at this time - public synchronized void typeMessage(String message) - { - - Random r = new Random(); - char[] charArray = message.toCharArray(); - for (char c : charArray) - { - keyPress(KeyEvent.getExtendedKeyCodeForChar(c)); - this.delay(93 + r.nextInt(getMinDelay())); - } - keyPress(KeyEvent.VK_ENTER); - this.delay(93 + r.nextInt(getMinDelay())); - ClientUI.allowInput = true; - } - - - @Override - public synchronized void mouseRelease(int buttonID) - { - if (buttonID < 1 || buttonID > 5) - { - Logger.getAnonymousLogger().warning("Invalid mouse button ID. please use 1-5."); - return; - } - peer.mouseRelease(InputEvent.getMaskForButton(buttonID)); - this.delay(getMinDelay()); - } - - private int getMinDelay() - { - Random random = new Random(); - int random1 = random.nextInt(minDelay); - if (random1 < minDelay / 2) - { - random1 = random.nextInt(minDelay / 2) + minDelay / 2 + random.nextInt(minDelay / 2); - } - return random1; - } - - private int getWheelDelay() - { - Random random = new Random(); - int random1 = random.nextInt(minDelay); - if (random1 < minDelay / 2) - { - random1 = random.nextInt(minDelay / 2) + minDelay / 2 + random.nextInt(minDelay / 2); - } - return random1; - } - - /** - * Rotates the scroll wheel on wheel-equipped mice. - * - * @param wheelAmt number of "notches" to move the mouse wheel - * Negative values indicate movement up/away from the user, - * positive values indicate movement down/towards the user. - * @since 1.4 - */ - @Override - public synchronized void mouseWheel(int wheelAmt) - { - for (int i : new int[wheelAmt]) - { - peer.mouseWheel(wheelAmt); - this.delay(getWheelDelay()); - } - } - - /** - * Presses a given key. The key should be released using the - * keyRelease method. - *

- * Key codes that have more than one physical key associated with them - * (e.g. KeyEvent.VK_SHIFT could mean either the - * left or right shift key) will map to the left key. - * - * @param keycode Key to press (e.g. KeyEvent.VK_A) - * @throws IllegalArgumentException if keycode is not - * a valid key - * @see #keyRelease(int) - * @see java.awt.event.KeyEvent - */ - @Override - public synchronized void keyPress(int keycode) - { - peer.keyPress(keycode); - this.delay(getMinDelay()); - } - - @Override - public synchronized void keyRelease(int keycode) - { - peer.keyRelease(keycode); - this.delay(getMinDelay()); - } - - public synchronized void holdKey(int keycode, int timeMS) - { - new Thread(() -> - { - peer.keyPress(keycode); - long startTime = System.currentTimeMillis(); - while ((startTime + timeMS) > System.currentTimeMillis()) - { - } - peer.keyRelease(keycode); - this.delay(getMinDelay()); - }).start(); - } - - public synchronized void holdKeyIndefinitely(int keycode) - { - Thread holdKeyThread = new Thread(() -> - { - pausedIndefinitely = true; - peer.keyPress(keycode); - while (pausedIndefinitely) - { - try - { - Thread.sleep(10); - } - catch (InterruptedException e) - { - e.printStackTrace(); - } - } - peer.keyRelease(keycode); - this.delay(getMinDelay()); - }); - holdKeyThread.start(); - - } - - public Color getPixelColor(int x, int y) - { - return peer.getPixelColor(x, y); - } - - @Override - public void delay(int ms) - { - pauseMS(ms); - } - - public int determineHorizontalOffset() - { - return clientUI.getCanvasOffset().getX(); - } - - public int determineVerticalOffset() - { - return clientUI.getCanvasOffset().getY(); - } - -} diff --git a/runelite-client/src/main/java/net/runelite/client/flexo/FlexoMouse.java b/runelite-client/src/main/java/net/runelite/client/flexo/FlexoMouse.java deleted file mode 100644 index 76e1545250..0000000000 --- a/runelite-client/src/main/java/net/runelite/client/flexo/FlexoMouse.java +++ /dev/null @@ -1,225 +0,0 @@ - -/* - * - * Copyright (c) 2019, Zeruth - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -package net.runelite.client.flexo; - -import java.awt.Point; -import java.awt.Rectangle; -import java.util.Random; -import java.util.logging.Logger; -import net.runelite.api.Constants; -import net.runelite.client.ui.ClientUI; - -public class FlexoMouse -{ - - /* - Should pass unstretched coords, handles all conversions here. - */ - public static Point getClickPoint(Rectangle rect) - { - if (rect != null) - { - Random r = new Random(); - int x = -1; - int y = -1; - x = rect.x + r.nextInt(rect.width); - y = rect.y + r.nextInt(rect.height); - - if (Flexo.isStretched) - { - double wScale; - double hScale; - - if (Flexo.client.isResized()) - { - wScale = (Flexo.client.getStretchedDimensions().width / (double) Flexo.client.getRealDimensions().width); - hScale = (Flexo.client.getStretchedDimensions().height / (double) Flexo.client.getRealDimensions().height); - int newX = (int) (x * wScale); - int newY = (int) (y * hScale); - if (newX > 0 && newX < ClientUI.frame.getWidth()) - { - if (newY > 0 && newY < ClientUI.frame.getHeight()) - { - return new Point(newX, newY); - } - } - Logger.getAnonymousLogger().warning("[RuneLit]Flexo - Off screen point attempted. Split the step, or rotate the screen."); - return null; - } - else - { - if (x > 0 && x < ClientUI.frame.getWidth()) - { - if (y > 0 && y < ClientUI.frame.getHeight()) - { - return new Point(x, y); - } - } - Logger.getAnonymousLogger().warning("[RuneLit]Flexo - Off screen point attempted. Split the step, or rotate the screen."); - return null; - } - - } - else if (!Flexo.client.isResized()) - { - final int fixedWidth = Constants.GAME_FIXED_WIDTH; - int widthDif = ClientUI.frame.getWidth(); - - if (ClientUI.pluginToolbar.isVisible()) - { - widthDif -= ClientUI.pluginToolbar.getWidth(); - } - if (ClientUI.pluginPanel != null) - { - widthDif -= ClientUI.pluginPanel.getWidth(); - } - - widthDif -= fixedWidth; - if (x + (widthDif / 2) > 0 && x + (widthDif / 2) < ClientUI.frame.getWidth()) - { - if (y > 0 && y < ClientUI.frame.getHeight()) - { - return new Point(x, y); - } - } - Logger.getAnonymousLogger().warning("[RuneLit]Flexo - Off screen point attempted. Split the step, or rotate the screen."); - return null; - } - else - { - if (x > 0 && x < ClientUI.frame.getWidth()) - { - if (y > 0 && y < ClientUI.frame.getHeight()) - { - return new Point(x, y); - } - } - Logger.getAnonymousLogger().warning("[RuneLit]Flexo - Off screen point attempted. Split the step, or rotate the screen."); - return null; - } - } - return null; - } - - public static Rectangle getClickArea(Rectangle rect) - { - if (Flexo.isStretched) - { - double wScale; - double hScale; - - if (Flexo.client.isResized()) - { - wScale = (Flexo.client.getStretchedDimensions().width / (double) Flexo.client.getRealDimensions().width); - hScale = (Flexo.client.getStretchedDimensions().height / (double) Flexo.client.getRealDimensions().height); - } - else - { - wScale = (Flexo.client.getStretchedDimensions().width) / (double) Flexo.fixedWidth; - hScale = (Flexo.client.getStretchedDimensions().height) / (double) Flexo.fixedHeight; - } - - int xPadding = (int) rect.getWidth() / 5; - int yPadding = (int) rect.getHeight() / 5; - Random r = new Random(); - Rectangle clickRect = new Rectangle(); - clickRect.width = rect.width - xPadding * 2; - clickRect.height = rect.height - yPadding * 2; - clickRect.x = rect.x + xPadding; - clickRect.y = rect.y + yPadding; - if (clickRect.width > 0 && clickRect.height > 0) - { - int x = clickRect.x + r.nextInt(clickRect.width); - int y = clickRect.y + r.nextInt(clickRect.height); - double tScale = 1 + (Flexo.scale / 100); - - if (Flexo.client.isResized()) - { - return new Rectangle((int) (clickRect.x * wScale), (int) (clickRect.y * wScale), (int) (clickRect.width * wScale), (int) (clickRect.getHeight() * hScale)); - } - else - { - return new Rectangle(clickRect.x, clickRect.y, clickRect.width, (int) (clickRect.getHeight())); - } - } - - } - //Fixed, not stretched - else if (!Flexo.client.isResized()) - { - int fixedWidth = 765; - int widthDif = ClientUI.frame.getWidth(); - - if (ClientUI.pluginToolbar.isVisible()) - { - widthDif -= ClientUI.pluginToolbar.getWidth(); - } - if (ClientUI.pluginPanel != null) - { - widthDif -= ClientUI.pluginPanel.getWidth(); - } - - widthDif -= fixedWidth; - int xPadding = (int) rect.getWidth() / 5; - int yPadding = (int) rect.getHeight() / 5; - Random r = new Random(); - Rectangle clickRect = new Rectangle(); - clickRect.width = rect.width - xPadding; - clickRect.height = rect.height - yPadding; - clickRect.x = rect.x + xPadding; - clickRect.y = rect.y + yPadding; - if (clickRect.height > 0 && clickRect.width > 0) - { - int x = clickRect.x + r.nextInt(clickRect.width); - int y = clickRect.y + r.nextInt(clickRect.height); - return new Rectangle(clickRect.x, clickRect.y, clickRect.width, (int) (clickRect.getHeight())); - } - } - //Resizable, not stretched - else - { - int xPadding = (int) rect.getWidth() / 5; - int yPadding = (int) rect.getHeight() / 5; - Random r = new Random(); - Rectangle clickRect = new Rectangle(); - clickRect.width = rect.width - xPadding * 2; - clickRect.height = rect.height - yPadding * 2; - clickRect.x = rect.x + xPadding; - clickRect.y = rect.y + yPadding; - if (clickRect.height > 0 && clickRect.width > 0) - { - int x = clickRect.x + r.nextInt(clickRect.width); - int y = clickRect.y + r.nextInt(clickRect.height); - return new Rectangle(clickRect.x, clickRect.y, clickRect.width, (int) (clickRect.getHeight())); - } - } - - return null; - } -} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/flexo/FlexoConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/flexo/FlexoConfig.java deleted file mode 100644 index 35cef785ba..0000000000 --- a/runelite-client/src/main/java/net/runelite/client/plugins/flexo/FlexoConfig.java +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.client.plugins.flexo; - -import net.runelite.client.config.Config; -import net.runelite.client.config.ConfigGroup; -import net.runelite.client.config.ConfigItem; -import net.runelite.client.config.Stub; - -@ConfigGroup("flexo") -public interface FlexoConfig extends Config -{ - @ConfigItem( - keyName = "overlayStub", - name = "Overlay", - description = "", - position = 1 - ) - default Stub overlayStub() - { - return new Stub(); - } - - @ConfigItem( - position = 2, - keyName = "overlayEnabled", - name = "Overlay Enabled", - description = "Shows clicking area and points etc.", - parent = "overlayStub" - ) - default boolean overlayEnabled() - { - return true; - } - - @ConfigItem( - position = 3, - keyName = "debugNPCs", - name = "Debug NPCs", - description = "Draws clickArea and clickPoints across all visible npcs", - parent = "overlayStub", - hidden = true, - unhide = "overlayEnabled" - ) - default boolean getDebugNPCs() - { - return false; - } - - @ConfigItem( - position = 4, - keyName = "debugPlayers", - name = "Debug Players", - description = "Draws clickArea and clickPoints across all visible players", - parent = "overlayStub", - hidden = true, - unhide = "overlayEnabled" - ) - default boolean getDebugPlayers() - { - return false; - } - - @ConfigItem( - position = 5, - keyName = "debugGroundItems", - name = "Debug Ground Items", - description = "Draws clickArea and clickPoints across all visible ground items", - parent = "overlayStub", - hidden = true, - unhide = "overlayEnabled" - ) - default boolean getDebugGroundItems() - { - return false; - } - - @ConfigItem( - keyName = "mouseStub", - name = "Mouse", - description = "", - position = 6 - ) - default Stub mouseStub() - { - return new Stub(); - } - - @ConfigItem( - position = 7, - keyName = "minDelayAmount", - name = "Min Delay", - description = "Minimum delay that is applied to every action at the end (ms)", - parent = "mouseStub" - ) - default int minDelayAmt() - { - return 45; - } - - - @ConfigItem( - position = 8, - keyName = "reactionTime", - name = "Reaction Time", - description = "The base time between actions (ms)", - parent = "mouseStub" - ) - default int getReactionTimeVariation() - { - return 80; - } - - @ConfigItem( - position = 9, - keyName = "mouseDragSpeed", - name = "Mouse drag speed", - description = "The speed at which steps are executed. Keep at 49? cuz jagex mouse recorder?", - parent = "mouseStub" - ) - default int getMouseDragSpeed() - { - return 49; - } - - - @ConfigItem( - position = 10, - keyName = "overshoots", - name = "Overshoots", - description = "Higher number = more overshoots", - parent = "mouseStub" - ) - default int getOvershoots() - { - return 4; - } - - @ConfigItem( - position = 11, - keyName = "variatingFlow", - name = "Flow - Variating", - description = "", - parent = "mouseStub" - ) - default boolean getVariatingFlow() - { - return true; - } - - @ConfigItem( - position = 12, - keyName = "slowStartupFlow", - name = "Flow - Slow startup", - description = "", - parent = "mouseStub" - ) - default boolean getSlowStartupFlow() - { - return true; - } - - - @ConfigItem( - position = 13, - keyName = "slowStartup2Flow", - name = "Flow - Slow startup 2", - description = "", - parent = "mouseStub" - ) - default boolean getSlowStartup2Flow() - { - return true; - } - - @ConfigItem( - position = 14, - keyName = "jaggedFlow", - name = "Flow - Jagged", - description = "", - parent = "mouseStub" - ) - default boolean getJaggedFlow() - { - return true; - } - - @ConfigItem( - position = 15, - keyName = "interruptedFlow", - name = "Flow - Interrupted", - description = "", - parent = "mouseStub" - ) - default boolean getInterruptedFlow() - { - return false; - } - - - @ConfigItem( - position = 16, - keyName = "interruptedFlow2", - name = "Flow - Interrupted 2", - description = "", - parent = "mouseStub" - ) - default boolean getInterruptedFlow2() - { - return false; - } - - @ConfigItem( - position = 17, - keyName = "stoppingFlow", - name = "Flow - Stopping", - description = "", - parent = "mouseStub" - ) - default boolean getStoppingFlow() - { - return false; - } - - @ConfigItem( - position = 18, - keyName = "deviationSlopeDivider", - name = "Deviation slope divider", - description = "", - parent = "mouseStub" - ) - default int getDeviationSlope() - { - return 10; - } - - - @ConfigItem( - position = 19, - keyName = "noisinessDivider", - name = "Noisiness divider", - description = "", - parent = "mouseStub" - ) - default String getNoisinessDivider() - { - return "2.0D"; - } -} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/flexo/FlexoOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/flexo/FlexoOverlay.java deleted file mode 100644 index 3ead0d19d9..0000000000 --- a/runelite-client/src/main/java/net/runelite/client/plugins/flexo/FlexoOverlay.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * - * Copyright (c) 2019, Zeruth - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -package net.runelite.client.plugins.flexo; - -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Graphics2D; -import java.awt.Point; -import java.awt.Rectangle; -import java.awt.geom.Line2D; -import java.util.List; -import javax.inject.Inject; -import javax.inject.Singleton; -import net.runelite.client.ui.overlay.Overlay; -import net.runelite.client.ui.overlay.OverlayLayer; -import net.runelite.client.ui.overlay.OverlayPosition; - -@Singleton -public class FlexoOverlay extends Overlay -{ - @Inject - private FlexoPlugin plugin; - - @Inject - public FlexoOverlay(final FlexoPlugin plugin) - { - setPosition(OverlayPosition.DYNAMIC); - setLayer(OverlayLayer.ABOVE_WIDGETS); - this.plugin = plugin; - } - - - @Override - public Dimension render(Graphics2D graphics) - { - if (!plugin.isOverlayEnabled()) - { - return null; - } - - if (plugin.isDebugNPCs() || plugin.isDebugGroundItems() || plugin.isDebugPlayers()) - { - List clickAreas = plugin.getClickAreas(); - if (clickAreas != null) - { - for (Rectangle clickArea : clickAreas) - { - if (clickArea != null) - { - graphics.draw(clickArea); - } - } - } - - List clickPoints = plugin.getClickPoints(); - if (clickPoints != null) - { - for (Point p : clickPoints) - { - if (p != null) - { - graphics.setColor(Color.MAGENTA); - graphics.draw(new Line2D.Double(p.x, p.y, p.x, p.y)); - graphics.draw(new Line2D.Double(p.x - 1, p.y - 1, p.x - 1, p.y - 1)); - graphics.draw(new Line2D.Double(p.x + 1, p.y + 1, p.x + 1, p.y + 1)); - graphics.draw(new Line2D.Double(p.x - 1, p.y + 1, p.x - 1, p.y + 1)); - graphics.draw(new Line2D.Double(p.x + 1, p.y - 1, p.x + 1, p.y - 1)); - } - } - } - } - return null; - } -} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/flexo/FlexoPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/flexo/FlexoPlugin.java deleted file mode 100644 index 38a38b2255..0000000000 --- a/runelite-client/src/main/java/net/runelite/client/plugins/flexo/FlexoPlugin.java +++ /dev/null @@ -1,336 +0,0 @@ -/* - * - * Copyright (c) 2019, Zeruth - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -package net.runelite.client.plugins.flexo; - -import com.github.joonasvali.naturalmouse.api.MouseMotionFactory; -import com.github.joonasvali.naturalmouse.support.DefaultNoiseProvider; -import com.github.joonasvali.naturalmouse.support.DefaultOvershootManager; -import com.github.joonasvali.naturalmouse.support.DefaultSpeedManager; -import com.github.joonasvali.naturalmouse.support.Flow; -import com.github.joonasvali.naturalmouse.support.SinusoidalDeviationProvider; -import com.github.joonasvali.naturalmouse.util.FlowTemplates; -import com.google.inject.Provides; -import java.awt.AWTException; -import java.awt.Point; -import java.awt.Rectangle; -import java.util.ArrayList; -import java.util.List; -import javax.inject.Inject; -import lombok.AccessLevel; -import lombok.Getter; -import net.runelite.api.Client; -import net.runelite.api.NPC; -import net.runelite.api.Perspective; -import net.runelite.api.Player; -import net.runelite.api.coords.LocalPoint; -import net.runelite.api.events.BeforeRender; -import net.runelite.api.events.ConfigChanged; -import net.runelite.client.config.ConfigManager; -import net.runelite.client.eventbus.EventBus; -import net.runelite.client.flexo.Flexo; -import net.runelite.client.flexo.FlexoMouse; -import net.runelite.client.plugins.Plugin; -import net.runelite.client.plugins.PluginDescriptor; -import net.runelite.client.plugins.PluginType; -import net.runelite.client.plugins.grounditems.GroundItem; -import net.runelite.client.plugins.grounditems.GroundItemsPlugin; -import net.runelite.client.plugins.stretchedmode.StretchedModeConfig; -import net.runelite.client.ui.ClientUI; -import net.runelite.client.ui.overlay.OverlayManager; - -@PluginDescriptor( - name = "Flexo Config", - description = "Customizes the flexo api", - tags = {"flexo", "null"}, - type = PluginType.EXTERNAL, - enabledByDefault = false -) - -public class FlexoPlugin extends Plugin -{ - private Flexo flexo; - - { - try - { - flexo = new Flexo(); - } - catch (AWTException e) - { - e.printStackTrace(); - } - } - - @Inject - private Client client; - - @Inject - private ClientUI clientUI; - - @Inject - private ConfigManager configManager; - - @Inject - private OverlayManager overlayManager; - - @Inject - private FlexoOverlay overlay; - - @Inject - private FlexoConfig config; - - @Inject - private EventBus eventBus; - - @Provides - FlexoConfig getConfig(ConfigManager configManager) - { - return configManager.getConfig(FlexoConfig.class); - } - - @Getter(AccessLevel.PACKAGE) - private boolean overlayEnabled; - @Getter(AccessLevel.PACKAGE) - private boolean debugNPCs; - @Getter(AccessLevel.PACKAGE) - private boolean debugPlayers; - @Getter(AccessLevel.PACKAGE) - private boolean debugGroundItems; - private int minDelayAmt; - private int getReactionTimeVariation; - private int getMouseDragSpeed; - private int getOvershoots; - private boolean getVariatingFlow; - private boolean getSlowStartupFlow; - private boolean getSlowStartup2Flow; - private boolean getJaggedFlow; - private boolean getInterruptedFlow; - private boolean getInterruptedFlow2; - private boolean getStoppingFlow; - private int getDeviationSlope; - private String getNoisinessDivider; - private int scalingFactor; - - @Getter(AccessLevel.PACKAGE) - private List clickAreas = new ArrayList<>(); - @Getter(AccessLevel.PACKAGE) - private List clickPoints = new ArrayList<>(); - - private void onConfigChanged(ConfigChanged event) - { - if (event.getGroup().equals("flexo") || event.getGroup().equals("stretchedmode")) - { - updateConfig(); - updateMouseMotionFactory(); - } - } - - private void onBeforeRender(BeforeRender event) - { - if (Flexo.client == null) - { - Flexo.client = client; - } - if (Flexo.clientUI == null) - { - Flexo.clientUI = clientUI; - } - this.clickAreas = new ArrayList<>(); - this.clickPoints = new ArrayList<>(); - if (this.debugNPCs) - { - Flexo.isStretched = client.isStretchedEnabled(); - Flexo.scale = this.scalingFactor; - if (flexo != null) - { - for (NPC npc : client.getNpcs()) - { - if (npc != null && npc.getConvexHull() != null) - { - Rectangle r = FlexoMouse.getClickArea(npc.getConvexHull().getBounds()); - this.clickAreas.add(r); - java.awt.Point p = FlexoMouse.getClickPoint(r); - this.clickPoints.add(p); - } - } - } - } - - if (this.debugPlayers) - { - Flexo.isStretched = client.isStretchedEnabled(); - Flexo.scale = this.scalingFactor; - if (flexo != null) - { - for (Player player : client.getPlayers()) - { - if (player != null && player.getConvexHull() != null) - { - Rectangle r = FlexoMouse.getClickArea(player.getConvexHull().getBounds()); - this.clickAreas.add(r); - java.awt.Point p = FlexoMouse.getClickPoint(r); - this.clickPoints.add(p); - } - } - } - } - - // Could still use some improvement - if (this.debugGroundItems) - { - Flexo.isStretched = client.isStretchedEnabled(); - Flexo.scale = this.scalingFactor; - - if (flexo != null && GroundItemsPlugin.getCollectedGroundItems() != null) - { - for (GroundItem gi : GroundItemsPlugin.getCollectedGroundItems().values()) - { - if (gi != null) - { - LocalPoint lp = LocalPoint.fromWorld(client, gi.getLocation()); - if (lp != null && Perspective.getCanvasTilePoly(client, lp) != null) - { - Rectangle r1 = FlexoMouse.getClickArea(Perspective.getCanvasTilePoly(client, lp).getBounds()); - Rectangle r2 = FlexoMouse.getClickArea(r1); - Rectangle r3 = FlexoMouse.getClickArea(r2); - this.clickAreas.add(r3); - java.awt.Point p = FlexoMouse.getClickPoint(r3); - this.clickPoints.add(p); - } - } - } - } - } - } - - private void updateMouseMotionFactory() - { - Flexo.minDelay = this.minDelayAmt; - MouseMotionFactory factory = new MouseMotionFactory(); - // TODO:Add Options for various flows to allow more personalization - List flows = new ArrayList<>(); - - // Always add random - flows.add(new Flow(FlowTemplates.random())); - - if (this.getVariatingFlow) - { - flows.add(new Flow(FlowTemplates.variatingFlow())); - } - - if (this.getSlowStartupFlow) - { - flows.add(new Flow(FlowTemplates.slowStartupFlow())); - } - - if (this.getSlowStartup2Flow) - { - flows.add(new Flow(FlowTemplates.slowStartup2Flow())); - } - - if (this.getJaggedFlow) - { - flows.add(new Flow(FlowTemplates.jaggedFlow())); - } - - if (this.getInterruptedFlow) - { - flows.add(new Flow(FlowTemplates.interruptedFlow())); - } - - if (this.getInterruptedFlow2) - { - flows.add(new Flow(FlowTemplates.interruptedFlow2())); - } - - if (this.getStoppingFlow) - { - flows.add(new Flow(FlowTemplates.stoppingFlow())); - } - - DefaultSpeedManager manager = new DefaultSpeedManager(flows); - //TODO:Add options for custom Deviation Provider and Noise Provider - factory.setDeviationProvider(new SinusoidalDeviationProvider(this.getDeviationSlope)); - factory.setNoiseProvider(new DefaultNoiseProvider(Double.valueOf(this.getNoisinessDivider))); - factory.getNature().setReactionTimeVariationMs(this.getReactionTimeVariation); - manager.setMouseMovementBaseTimeMs(this.getMouseDragSpeed); - - DefaultOvershootManager overshootManager = (DefaultOvershootManager) factory.getOvershootManager(); - overshootManager.setOvershoots(this.getOvershoots); - - factory.setSpeedManager(manager); - Flexo.currentMouseMotionFactory = factory; - } - - @Override - protected void startUp() throws Exception - { - updateConfig(); - addSubscriptions(); - - Flexo.isStretched = client.isStretchedEnabled(); - overlayManager.add(overlay); - updateMouseMotionFactory(); - } - - @Override - protected void shutDown() throws Exception - { - eventBus.unregister(this); - - overlayManager.remove(overlay); - } - - private void addSubscriptions() - { - eventBus.subscribe(ConfigChanged.class, this, this::onConfigChanged); - eventBus.subscribe(BeforeRender.class, this, this::onBeforeRender); - } - - private void updateConfig() - { - this.overlayEnabled = config.overlayEnabled(); - this.debugNPCs = config.getDebugNPCs(); - this.debugPlayers = config.getDebugPlayers(); - this.debugGroundItems = config.getDebugGroundItems(); - this.minDelayAmt = config.minDelayAmt(); - this.getReactionTimeVariation = config.getReactionTimeVariation(); - this.getMouseDragSpeed = config.getMouseDragSpeed(); - this.getOvershoots = config.getOvershoots(); - this.getVariatingFlow = config.getVariatingFlow(); - this.getSlowStartupFlow = config.getSlowStartupFlow(); - this.getSlowStartup2Flow = config.getSlowStartup2Flow(); - this.getJaggedFlow = config.getJaggedFlow(); - this.getInterruptedFlow = config.getInterruptedFlow(); - this.getInterruptedFlow2 = config.getInterruptedFlow2(); - this.getStoppingFlow = config.getStoppingFlow(); - this.getDeviationSlope = config.getDeviationSlope(); - this.getNoisinessDivider = config.getNoisinessDivider(); - this.scalingFactor = configManager.getConfig(StretchedModeConfig.class).scalingFactor(); - } -}