From ca8f78281dd236a22907203df4436a5d7f2b8fdc Mon Sep 17 00:00:00 2001 From: Matthew C Date: Thu, 1 Oct 2020 07:23:42 +0900 Subject: [PATCH] inventoryviewer: Add a keybind toggle to hide the overlay. --- .../InventoryViewerConfig.java | 58 +++++++++++++++++++ .../InventoryViewerOverlay.java | 14 ++++- .../InventoryViewerPlugin.java | 27 +++++++++ 3 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerConfig.java diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerConfig.java new file mode 100644 index 0000000000..2c3dc07102 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerConfig.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2020, Matthew C + * 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.inventoryviewer; + +import net.runelite.client.config.Config; +import net.runelite.client.config.ConfigGroup; +import net.runelite.client.config.ConfigItem; +import net.runelite.client.config.Keybind; + +@ConfigGroup(InventoryViewerConfig.GROUP) +public interface InventoryViewerConfig extends Config +{ + String GROUP = "inventoryViewer"; + + @ConfigItem( + keyName = "toggleKeybind", + name = "Toggle Overlay", + description = "Binds a key (combination) to toggle the overlay.", + position = 0 + ) + default Keybind toggleKeybind() + { + return Keybind.NOT_SET; + } + + @ConfigItem( + keyName = "hiddenDefault", + name = "Hidden by default", + description = "Whether or not the overlay is hidden by default.", + position = 1 + ) + default boolean hiddenDefault() + { + return false; + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerOverlay.java index e69f29be98..2896a9cf65 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerOverlay.java @@ -49,9 +49,10 @@ class InventoryViewerOverlay extends OverlayPanel private final Client client; private final ItemManager itemManager; + private boolean hidden; @Inject - private InventoryViewerOverlay(Client client, ItemManager itemManager) + private InventoryViewerOverlay(Client client, ItemManager itemManager, InventoryViewerConfig config) { setPosition(OverlayPosition.BOTTOM_RIGHT); panelComponent.setWrap(true); @@ -60,11 +61,17 @@ class InventoryViewerOverlay extends OverlayPanel panelComponent.setOrientation(ComponentOrientation.HORIZONTAL); this.itemManager = itemManager; this.client = client; + this.hidden = config.hiddenDefault(); } @Override public Dimension render(Graphics2D graphics) { + if (hidden) + { + return null; + } + final ItemContainer itemContainer = client.getItemContainer(InventoryID.INVENTORY); if (itemContainer == null) @@ -102,4 +109,9 @@ class InventoryViewerOverlay extends OverlayPanel ItemComposition itemComposition = itemManager.getItemComposition(item.getId()); return itemManager.getImage(item.getId(), item.getQuantity(), itemComposition.isStackable()); } + + protected void toggle() + { + hidden = !hidden; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerPlugin.java index a9aa9f6453..434821522e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerPlugin.java @@ -24,10 +24,14 @@ */ package net.runelite.client.plugins.inventoryviewer; +import com.google.inject.Provides; import javax.inject.Inject; +import net.runelite.client.config.ConfigManager; +import net.runelite.client.input.KeyManager; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.ui.overlay.OverlayManager; +import net.runelite.client.util.HotkeyListener; @PluginDescriptor( name = "Inventory Viewer", @@ -37,21 +41,44 @@ import net.runelite.client.ui.overlay.OverlayManager; ) public class InventoryViewerPlugin extends Plugin { + @Inject + private InventoryViewerConfig config; + @Inject private InventoryViewerOverlay overlay; @Inject private OverlayManager overlayManager; + @Inject + private KeyManager keyManager; + + @Provides + InventoryViewerConfig getConfig(ConfigManager configManager) + { + return configManager.getConfig(InventoryViewerConfig.class); + } + @Override public void startUp() { overlayManager.add(overlay); + keyManager.registerKeyListener(hotkeyListener); } @Override public void shutDown() { overlayManager.remove(overlay); + keyManager.unregisterKeyListener(hotkeyListener); } + + private final HotkeyListener hotkeyListener = new HotkeyListener(() -> config.toggleKeybind()) + { + @Override + public void hotkeyPressed() + { + overlay.toggle(); + } + }; } \ No newline at end of file