Add examine info to dev tools

This commit is contained in:
Kamiel
2018-10-16 13:21:04 +02:00
parent 8480a7cb88
commit 82dd9972da
2 changed files with 66 additions and 0 deletions

View File

@@ -240,6 +240,14 @@ public class DevToolsPanel extends PluginPanel
});
container.add(interactingBtn);
final JButton examineInfoBtn = new JButton("Examine Info");
examineInfoBtn.addActionListener(e ->
{
highlightButton(examineInfoBtn);
plugin.toggleExamineInfo();
});
container.add(examineInfoBtn);
return container;
}

View File

@@ -26,20 +26,28 @@ package net.runelite.client.plugins.devtools;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import com.google.common.collect.ImmutableList;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides;
import java.awt.Color;
import java.awt.Font;
import java.awt.image.BufferedImage;
import static java.lang.Math.min;
import java.util.List;
import javax.inject.Inject;
import net.runelite.api.ChatMessageType;
import net.runelite.api.Client;
import net.runelite.api.Experience;
import net.runelite.api.MenuAction;
import net.runelite.api.MenuEntry;
import net.runelite.api.NPC;
import net.runelite.api.Player;
import net.runelite.api.Skill;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.CommandExecuted;
import net.runelite.api.events.ExperienceChanged;
import net.runelite.api.events.MenuEntryAdded;
import net.runelite.api.events.VarbitChanged;
import net.runelite.api.widgets.Widget;
import net.runelite.client.config.ConfigManager;
@@ -49,6 +57,7 @@ import net.runelite.client.ui.FontManager;
import net.runelite.client.ui.NavigationButton;
import net.runelite.client.ui.ClientToolbar;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.ColorUtil;
import net.runelite.client.util.ImageUtil;
import org.slf4j.LoggerFactory;
@@ -59,6 +68,10 @@ import org.slf4j.LoggerFactory;
)
public class DevToolsPlugin extends Plugin
{
private static final List<MenuAction> EXAMINE_MENU_ACTIONS = ImmutableList.of(MenuAction.EXAMINE_ITEM,
MenuAction.EXAMINE_ITEM_GROUND, MenuAction.EXAMINE_NPC, MenuAction.EXAMINE_OBJECT);
private static final Color COLOR_ORANGE = new Color(255, 144, 64);
@Inject
private Client client;
@@ -105,6 +118,7 @@ public class DevToolsPlugin extends Plugin
private boolean toggleWorldMapLocation;
private boolean toggleTileLocation;
private boolean toggleInteracting;
private boolean toggleExamineInfo;
Widget currentWidget;
int itemIndex = -1;
@@ -261,6 +275,45 @@ public class DevToolsPlugin extends Plugin
}
}
@Subscribe
public void onMenuEntryAdded(MenuEntryAdded event)
{
if (!toggleExamineInfo)
{
return;
}
MenuAction action = MenuAction.of(event.getType());
if (EXAMINE_MENU_ACTIONS.contains(action))
{
MenuEntry[] entries = client.getMenuEntries();
MenuEntry entry = entries[entries.length - 1];
final int identifier = event.getIdentifier();
String info = "ID: ";
if (action == MenuAction.EXAMINE_NPC)
{
NPC npc = client.getCachedNPCs()[identifier];
info += npc.getId();
}
else
{
info += identifier;
if (action == MenuAction.EXAMINE_OBJECT)
{
WorldPoint point = WorldPoint.fromScene(client, entry.getParam0(), entry.getParam1(), client.getPlane());
info += " X: " + point.getX() + " Y: " + point.getY();
}
}
entry.setTarget(entry.getTarget() + " " + ColorUtil.prependColorTag("(" + info + ")", COLOR_ORANGE));
client.setMenuEntries(entries);
}
}
Font getFont()
{
return font;
@@ -361,6 +414,11 @@ public class DevToolsPlugin extends Plugin
toggleInteracting = !toggleInteracting;
}
void toggleExamineInfo()
{
toggleExamineInfo = !toggleExamineInfo;
}
boolean isTogglePlayers()
{
return togglePlayers;