WikiPlugin: Allow lookup of Objects

This commit is contained in:
Max Weber
2019-02-15 10:25:27 -07:00
parent 65e9864552
commit 06468e0e0e

View File

@@ -37,6 +37,8 @@ import net.runelite.api.MenuAction;
import net.runelite.api.MenuEntry; import net.runelite.api.MenuEntry;
import net.runelite.api.NPC; import net.runelite.api.NPC;
import net.runelite.api.NPCComposition; import net.runelite.api.NPCComposition;
import net.runelite.api.ObjectComposition;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.MenuEntryAdded; import net.runelite.api.events.MenuEntryAdded;
import net.runelite.api.events.MenuOptionClicked; import net.runelite.api.events.MenuOptionClicked;
import net.runelite.api.events.WidgetLoaded; import net.runelite.api.events.WidgetLoaded;
@@ -161,7 +163,7 @@ public class WikiPlugin extends Plugin
icon.setOriginalHeight(16); icon.setOriginalHeight(16);
icon.setTargetVerb("Lookup"); icon.setTargetVerb("Lookup");
icon.setName("Wiki"); icon.setName("Wiki");
icon.setClickMask(WidgetConfig.USE_GROUND_ITEM | WidgetConfig.USE_ITEM | WidgetConfig.USE_NPC); icon.setClickMask(WidgetConfig.USE_GROUND_ITEM | WidgetConfig.USE_ITEM | WidgetConfig.USE_NPC | WidgetConfig.USE_OBJECT);
icon.setNoClickThrough(true); icon.setNoClickThrough(true);
icon.setOnTargetEnterListener((JavaScriptCallback) ev -> icon.setOnTargetEnterListener((JavaScriptCallback) ev ->
{ {
@@ -201,6 +203,8 @@ public class WikiPlugin extends Plugin
String type; String type;
int id; int id;
String name; String name;
WorldPoint location;
switch (ev.getMenuAction()) switch (ev.getMenuAction())
{ {
case CANCEL: case CANCEL:
@@ -211,6 +215,7 @@ public class WikiPlugin extends Plugin
type = "item"; type = "item";
id = itemManager.canonicalize(ev.getId()); id = itemManager.canonicalize(ev.getId());
name = itemManager.getItemComposition(id).getName(); name = itemManager.getItemComposition(id).getName();
location = null;
break; break;
} }
case SPELL_CAST_ON_NPC: case SPELL_CAST_ON_NPC:
@@ -220,6 +225,20 @@ public class WikiPlugin extends Plugin
NPCComposition nc = npc.getTransformedComposition(); NPCComposition nc = npc.getTransformedComposition();
id = nc.getId(); id = nc.getId();
name = nc.getName(); name = nc.getName();
location = npc.getWorldLocation();
break;
}
case SPELL_CAST_ON_GAME_OBJECT:
{
type = "object";
ObjectComposition lc = client.getObjectDefinition(ev.getId());
if (lc.getImpostorIds() != null)
{
lc = lc.getImpostor();
}
id = lc.getId();
name = lc.getName();
location = WorldPoint.fromScene(client, ev.getActionParam(), ev.getWidgetId(), client.getPlane());
break; break;
} }
default: default:
@@ -228,13 +247,20 @@ public class WikiPlugin extends Plugin
} }
name = Text.removeTags(name); name = Text.removeTags(name);
HttpUrl.Builder urlBuilder = WIKI_RSLOOKUP.newBuilder();
HttpUrl url = WIKI_RSLOOKUP.newBuilder() urlBuilder.addQueryParameter("type", type)
.addQueryParameter("type", type)
.addQueryParameter("id", "" + id) .addQueryParameter("id", "" + id)
.addQueryParameter("name", name) .addQueryParameter("name", name)
.addQueryParameter(UTM_SORUCE_KEY, UTM_SORUCE_VALUE) .addQueryParameter(UTM_SORUCE_KEY, UTM_SORUCE_VALUE);
.build();
if (location != null)
{
urlBuilder.addQueryParameter("x", "" + location.getX())
.addQueryParameter("y", "" + location.getY())
.addQueryParameter("plane", "" + location.getPlane());
}
HttpUrl url = urlBuilder.build();
LinkBrowser.browse(url.toString()); LinkBrowser.browse(url.toString());
return; return;