From a771a49ab2dc09f58ebf1f4c1987da2c39de7bc2 Mon Sep 17 00:00:00 2001 From: Sam Beresford Date: Mon, 17 Dec 2018 10:26:58 +0100 Subject: [PATCH] Add ability to hide all ground items on double tap of hotkey(ALT) (#6712) Closes #1781 --- .../grounditems/GroundItemInputListener.java | 24 ++++++++++++++++++- .../grounditems/GroundItemsConfig.java | 13 +++++++++- .../grounditems/GroundItemsOverlay.java | 2 +- .../grounditems/GroundItemsPlugin.java | 4 ++++ 4 files changed, 40 insertions(+), 3 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemInputListener.java b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemInputListener.java index 61c09a3c37..da6c3a80c5 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemInputListener.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemInputListener.java @@ -27,6 +27,8 @@ package net.runelite.client.plugins.grounditems; import java.awt.Point; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; +import java.time.Duration; +import java.time.Instant; import javax.inject.Inject; import javax.swing.SwingUtilities; import net.runelite.client.input.KeyListener; @@ -36,9 +38,14 @@ public class GroundItemInputListener extends MouseAdapter implements KeyListener { private static final int HOTKEY = KeyEvent.VK_ALT; + private Instant lastPress; + @Inject private GroundItemsPlugin plugin; + @Inject + private GroundItemsConfig config; + @Override public void keyTyped(KeyEvent e) { @@ -50,7 +57,22 @@ public class GroundItemInputListener extends MouseAdapter implements KeyListener { if (e.getKeyCode() == HOTKEY) { - plugin.setHotKeyPressed(true); + if (plugin.isHideAll()) + { + plugin.setHideAll(false); + plugin.setHotKeyPressed(true); + lastPress = null; + } + else if (lastPress != null && !plugin.isHotKeyPressed() && config.doubleTapDelay() > 0 && Duration.between(lastPress, Instant.now()).compareTo(Duration.ofMillis(config.doubleTapDelay())) < 0) + { + plugin.setHideAll(true); + lastPress = null; + } + else + { + plugin.setHotKeyPressed(true); + lastPress = Instant.now(); + } } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsConfig.java index 479f36fabe..71670b80ca 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsConfig.java @@ -302,7 +302,6 @@ public interface GroundItemsConfig extends Config { return Color.decode("#FF66B2"); } - @ConfigItem( keyName = "insaneValuePrice", name = "Insane value price", @@ -324,4 +323,16 @@ public interface GroundItemsConfig extends Config { return false; } + + @ConfigItem( + keyName = "doubleTapDelay", + name = "Delay for double-tap ALT to hide", + description = "Decrease this number if you accidentally hide ground items often. (0 = Disabled)", + position = 25 + ) + default int doubleTapDelay() + { + return 250; + } + } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java index 8d44c2e3ff..1406bb1747 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java @@ -88,7 +88,7 @@ public class GroundItemsOverlay extends Overlay @Override public Dimension render(Graphics2D graphics) { - final boolean dontShowOverlay = config.itemHighlightMode() == MENU && !plugin.isHotKeyPressed(); + final boolean dontShowOverlay = (config.itemHighlightMode() == MENU || plugin.isHideAll()) && !plugin.isHotKeyPressed(); if (dontShowOverlay && !config.highlightTiles()) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java index 947587623f..1313c32289 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java @@ -119,6 +119,10 @@ public class GroundItemsPlugin extends Plugin @Setter(AccessLevel.PACKAGE) private boolean hotKeyPressed; + @Getter(AccessLevel.PACKAGE) + @Setter(AccessLevel.PACKAGE) + private boolean hideAll; + private List hiddenItemList = new CopyOnWriteArrayList<>(); private List highlightedItemsList = new CopyOnWriteArrayList<>();