From 4fef4c7328976a812a2b03eb508c0fc808df55cf Mon Sep 17 00:00:00 2001 From: GROUNDBOI Date: Thu, 30 May 2019 01:07:22 -0400 Subject: [PATCH] Tooltip Hider (#440) * Tooltip Hider Adds options for hiding certain tooltips to the mouse highlight plugin --- .../net/runelite/api/widgets/WidgetID.java | 3 + .../net/runelite/api/widgets/WidgetInfo.java | 3 +- .../mousehighlight/MouseHighlightConfig.java | 12 +++ .../mousehighlight/MouseHighlightPlugin.java | 93 ++++++++++++++++++- 4 files changed, 109 insertions(+), 2 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java index 42f9583bda..c160e0996f 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java @@ -561,6 +561,7 @@ public class WidgetID static final int SPELL_TEXT = 28; static final int AUTO_RETALIATE = 29; static final int SPECIAL_ATTACK_BAR = 34; + static final int TOOLTIP = 41; } static class VolcanicMine @@ -886,6 +887,8 @@ public class WidgetID static final int ANNAKARL_TELEPORT = 96; static final int GHORROCK_TELEPORT = 97; static final int EDGEVILLE_HOME_TELEPORT = 98; + static final int TOOLTIP = 188; + // LUNAR SPELLS static final int LUNAR_HOME_TELEPORT = 99; diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java index 1275c9acc5..40652fb88e 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java @@ -324,6 +324,7 @@ public enum WidgetInfo COMBAT_SPELL_TEXT(WidgetID.COMBAT_GROUP_ID, WidgetID.Combat.SPELL_TEXT), COMBAT_AUTO_RETALIATE(WidgetID.COMBAT_GROUP_ID, WidgetID.Combat.AUTO_RETALIATE), COMBAT_SPECIAL_ATTACK(WidgetID.COMBAT_GROUP_ID, WidgetID.Combat.SPECIAL_ATTACK_BAR), + COMBAT_TOOLTIP(WidgetID.COMBAT_GROUP_ID, WidgetID.Combat.TOOLTIP), DIALOG_OPTION(WidgetID.DIALOG_OPTION_GROUP_ID, 0), @@ -653,7 +654,7 @@ public enum WidgetInfo SPELL_SPIN_FLAX(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.SPIN_FLAX), SPELL_OURANIA_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.OURANIA_TELEPORT), /* END OF LUNAR SPELL BOOK WIDGETS*/ - + SPELL_TOOLTIP(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TOOLTIP), /* ARCEUUS SPELL BOOK WIDGETS*/ SPELL_ARCEUUS_HOME_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.ARCEUUS_HOME_TELEPORT), /* END OF ARCEUUS SPELL BOOK WIDGETS*/ diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/mousehighlight/MouseHighlightConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/mousehighlight/MouseHighlightConfig.java index 1c23e334cd..9b9d19b750 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/mousehighlight/MouseHighlightConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/mousehighlight/MouseHighlightConfig.java @@ -52,4 +52,16 @@ public interface MouseHighlightConfig extends Config { return true; } + + @ConfigItem(position = 2, keyName = "hideSpells", name = "Spellbook", description = "Hides vanilla client tooltips in the spellbook") + default boolean shouldHideSpells() + { + return false; + } + + @ConfigItem(position = 3, keyName = "hideCombat", name = "Combat", description = "Hides vanilla client tooltips in the combat menu") + default boolean shouldHideCombat() + { + return false; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/mousehighlight/MouseHighlightPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/mousehighlight/MouseHighlightPlugin.java index 8881b92d93..85f95aa6bd 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/mousehighlight/MouseHighlightPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/mousehighlight/MouseHighlightPlugin.java @@ -26,7 +26,16 @@ package net.runelite.client.plugins.mousehighlight; import com.google.inject.Provides; import javax.inject.Inject; +import net.runelite.api.Client; +import net.runelite.api.GameState; +import net.runelite.api.events.GameStateChanged; +import net.runelite.api.events.GameTick; +import net.runelite.api.events.WidgetLoaded; +import net.runelite.api.widgets.Widget; +import net.runelite.api.widgets.WidgetID; +import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.config.ConfigManager; +import net.runelite.client.eventbus.Subscribe; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.ui.overlay.OverlayManager; @@ -34,10 +43,15 @@ import net.runelite.client.ui.overlay.OverlayManager; @PluginDescriptor( name = "Mouse Tooltips", description = "Render default actions as a tooltip", - tags = {"actions", "overlay"} + tags = {"actions", "overlay", "tooltip", "hide"} ) public class MouseHighlightPlugin extends Plugin { + @Inject + MouseHighlightConfig config; + @Inject + private Client client; + @Inject private OverlayManager overlayManager; @@ -53,12 +67,89 @@ public class MouseHighlightPlugin extends Plugin @Override protected void startUp() throws Exception { + adjustTips(); overlayManager.add(overlay); } @Override protected void shutDown() throws Exception { + resetTips(); overlayManager.remove(overlay); } + + @Subscribe + public void onGameStateChanged(GameStateChanged event) + { + if (event.getGameState() == GameState.LOGGED_IN) + { + adjustTips(); + } + } + + @Subscribe + public void onWidgetLoaded(WidgetLoaded event) + { + if (event.getGroupId() == WidgetID.SPELLBOOK_GROUP_ID || event.getGroupId() == WidgetID.COMBAT_GROUP_ID) + { + adjustTips(); + } + } + + @Subscribe + public void onGameTick(GameTick event) + { + adjustTips(); + } + + private void adjustTips() + { + if (client.getGameState() != GameState.LOGGED_IN) + { + return; + } + + try + { + setTipHidden(WidgetInfo.SPELL_TOOLTIP, config.shouldHideSpells()); + setTipHidden(WidgetInfo.COMBAT_TOOLTIP, config.shouldHideCombat()); + } + catch (Exception e) + { + //swallow + } + + + } + + private void resetTips() + { + if (client.getGameState() != GameState.LOGGED_IN) + { + return; + } + + try + { + setTipHidden(WidgetInfo.SPELL_TOOLTIP, false); + setTipHidden(WidgetInfo.COMBAT_TOOLTIP, false); + } + catch (Exception e) + { + //swallow + } + } + + private void setTipHidden(WidgetInfo widgetInfo, boolean hidden) + { + Widget widget = client.getWidget(widgetInfo); + + if (widget == null) + { + return; + } + + widget.setHidden(hidden); + } + }