npcindicators: Add option to highlight NPC name in right click menu

Co-authored-by: beaumitch <bmitchell48@gatech.edu>
This commit is contained in:
Adam
2019-05-02 18:27:08 -04:00
parent c0a72da84a
commit 0bf202a9ef
2 changed files with 43 additions and 14 deletions

View File

@@ -89,6 +89,17 @@ public interface NpcIndicatorsConfig extends Config
@ConfigItem( @ConfigItem(
position = 5, position = 5,
keyName = "highlightMenuNames",
name = "Highlight menu names",
description = "Highlight NPC names in right click menu"
)
default boolean highlightMenuNames()
{
return false;
}
@ConfigItem(
position = 6,
keyName = "showRespawnTimer", keyName = "showRespawnTimer",
name = "Show respawn timer", name = "Show respawn timer",
description = "Show respawn timer of tagged NPCs") description = "Show respawn timer of tagged NPCs")

View File

@@ -26,7 +26,7 @@
package net.runelite.client.plugins.npchighlight; package net.runelite.client.plugins.npchighlight;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.time.Instant; import java.time.Instant;
import java.util.ArrayList; import java.util.ArrayList;
@@ -47,6 +47,7 @@ import net.runelite.api.GameState;
import net.runelite.api.GraphicID; import net.runelite.api.GraphicID;
import net.runelite.api.GraphicsObject; import net.runelite.api.GraphicsObject;
import net.runelite.api.MenuAction; import net.runelite.api.MenuAction;
import static net.runelite.api.MenuAction.MENU_ACTION_DEPRIORITIZE_OFFSET;
import net.runelite.api.MenuEntry; import net.runelite.api.MenuEntry;
import net.runelite.api.NPC; import net.runelite.api.NPC;
import net.runelite.api.coords.WorldPoint; import net.runelite.api.coords.WorldPoint;
@@ -66,6 +67,7 @@ import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.OverlayManager; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.ColorUtil;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
import net.runelite.client.util.WildcardMatcher; import net.runelite.client.util.WildcardMatcher;
@@ -82,7 +84,7 @@ public class NpcIndicatorsPlugin extends Plugin
// Option added to NPC menu // Option added to NPC menu
private static final String TAG = "Tag"; private static final String TAG = "Tag";
private static final List<MenuAction> NPC_MENU_ACTIONS = ImmutableList.of(MenuAction.NPC_FIRST_OPTION, MenuAction.NPC_SECOND_OPTION, private static final Set<MenuAction> NPC_MENU_ACTIONS = ImmutableSet.of(MenuAction.NPC_FIRST_OPTION, MenuAction.NPC_SECOND_OPTION,
MenuAction.NPC_THIRD_OPTION, MenuAction.NPC_FOURTH_OPTION, MenuAction.NPC_FIFTH_OPTION); MenuAction.NPC_THIRD_OPTION, MenuAction.NPC_FOURTH_OPTION, MenuAction.NPC_FIFTH_OPTION);
@Inject @Inject
@@ -248,21 +250,37 @@ public class NpcIndicatorsPlugin extends Plugin
@Subscribe @Subscribe
public void onMenuEntryAdded(MenuEntryAdded event) public void onMenuEntryAdded(MenuEntryAdded event)
{ {
if (!hotKeyPressed || event.getType() != MenuAction.EXAMINE_NPC.getId()) int type = event.getType();
if (type >= MENU_ACTION_DEPRIORITIZE_OFFSET)
{ {
return; type -= MENU_ACTION_DEPRIORITIZE_OFFSET;
} }
MenuEntry[] menuEntries = client.getMenuEntries(); if (config.highlightMenuNames() &&
menuEntries = Arrays.copyOf(menuEntries, menuEntries.length + 1); NPC_MENU_ACTIONS.contains(MenuAction.of(type)) &&
MenuEntry menuEntry = menuEntries[menuEntries.length - 1] = new MenuEntry(); highlightedNpcs.stream().anyMatch(npc -> npc.getIndex() == event.getIdentifier()))
menuEntry.setOption(TAG); {
menuEntry.setTarget(event.getTarget()); MenuEntry[] menuEntries = client.getMenuEntries();
menuEntry.setParam0(event.getActionParam0()); final MenuEntry menuEntry = menuEntries[menuEntries.length - 1];
menuEntry.setParam1(event.getActionParam1()); final String target = ColorUtil.prependColorTag(Text.removeTags(event.getTarget()), config.getHighlightColor());
menuEntry.setIdentifier(event.getIdentifier()); menuEntry.setTarget(target);
menuEntry.setType(MenuAction.RUNELITE.getId()); client.setMenuEntries(menuEntries);
client.setMenuEntries(menuEntries); }
else if (hotKeyPressed && type == MenuAction.EXAMINE_NPC.getId())
{
// Add tag option
MenuEntry[] menuEntries = client.getMenuEntries();
menuEntries = Arrays.copyOf(menuEntries, menuEntries.length + 1);
final MenuEntry tagEntry = menuEntries[menuEntries.length - 1] = new MenuEntry();
tagEntry.setOption(TAG);
tagEntry.setTarget(event.getTarget());
tagEntry.setParam0(event.getActionParam0());
tagEntry.setParam1(event.getActionParam1());
tagEntry.setIdentifier(event.getIdentifier());
tagEntry.setType(MenuAction.RUNELITE.getId());
client.setMenuEntries(menuEntries);
}
} }
@Subscribe @Subscribe