Add support for impostors to clue scroll plugin

Add support for object impostors to clue scroll plugin.

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
Tomas Slusny
2018-10-25 10:19:05 +02:00
parent b6af8dc4db
commit 319d8af0b1
3 changed files with 35 additions and 11 deletions

View File

@@ -48,8 +48,10 @@ import net.runelite.api.Item;
import net.runelite.api.ItemComposition;
import net.runelite.api.ItemID;
import net.runelite.api.NPC;
import net.runelite.api.ObjectComposition;
import net.runelite.api.Scene;
import net.runelite.api.Tile;
import net.runelite.api.TileObject;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.ChatMessage;
@@ -85,7 +87,6 @@ import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.worldmap.WorldMapPointManager;
import net.runelite.client.util.ImageUtil;
import net.runelite.client.util.Text;
import org.apache.commons.lang3.ArrayUtils;
@PluginDescriptor(
name = "Clue Scroll",
@@ -104,7 +105,7 @@ public class ClueScrollPlugin extends Plugin
private final List<NPC> npcsToMark = new ArrayList<>();
@Getter
private GameObject[] objectsToMark;
private final List<TileObject> objectsToMark = new ArrayList<>();
@Getter
private Item[] equippedItems;
@@ -307,7 +308,7 @@ public class ClueScrollPlugin extends Plugin
@Subscribe
public void onGameTick(final GameTick event)
{
objectsToMark = null;
objectsToMark.clear();
if (clue instanceof LocationsClueScroll)
{
@@ -588,10 +589,33 @@ public class ClueScrollPlugin extends Plugin
final Scene scene = client.getScene();
final Tile[][][] tiles = scene.getTiles();
final Tile tile = tiles[client.getPlane()][localLocation.getSceneX()][localLocation.getSceneY()];
objectsToMark.clear();
objectsToMark = Arrays.stream(tile.getGameObjects())
.filter(object -> object != null && ArrayUtils.contains(objectIds, object.getId()))
.toArray(GameObject[]::new);
for (GameObject object : tile.getGameObjects())
{
if (object == null)
{
continue;
}
for (int id : objectIds)
{
if (object.getId() == id)
{
objectsToMark.add(object);
continue;
}
// Check impostors
final ObjectComposition comp = client.getObjectDefinition(object.getId());
final ObjectComposition impostor = comp.getImpostor();
if (impostor != null && impostor.getId() == id)
{
objectsToMark.add(object);
}
}
}
}
private void checkClueNPCs(ClueScroll clue, final NPC... npcs)

View File

@@ -29,11 +29,11 @@ import java.awt.Color;
import java.awt.Graphics2D;
import java.util.Set;
import lombok.Getter;
import net.runelite.api.GameObject;
import net.runelite.api.NPC;
import static net.runelite.api.NullObjectID.NULL_1293;
import net.runelite.api.ObjectComposition;
import static net.runelite.api.ObjectID.*;
import static net.runelite.api.NullObjectID.*;
import net.runelite.api.TileObject;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
import static net.runelite.client.plugins.cluescrolls.ClueScrollOverlay.TITLED_CONTENT_COLOR;
@@ -409,7 +409,7 @@ public class CrypticClue extends ClueScroll implements TextClueScroll, NpcClueSc
if (plugin.getObjectsToMark() != null)
{
for (GameObject gameObject : plugin.getObjectsToMark())
for (TileObject gameObject : plugin.getObjectsToMark())
{
OverlayUtil.renderHoverableArea(graphics, gameObject.getClickbox(), mousePosition,
CLICKBOX_FILL_COLOR, CLICKBOX_BORDER_COLOR, CLICKBOX_HOVER_BORDER_COLOR);

View File

@@ -29,7 +29,6 @@ import java.awt.Color;
import java.awt.Graphics2D;
import java.util.Set;
import lombok.Getter;
import net.runelite.api.GameObject;
import static net.runelite.api.ItemID.*;
import net.runelite.api.ObjectComposition;
import static net.runelite.api.ObjectID.CRATE_18506;
@@ -37,6 +36,7 @@ import static net.runelite.api.ObjectID.CRATE_2620;
import static net.runelite.api.ObjectID.CRATE_354;
import static net.runelite.api.ObjectID.CRATE_357;
import static net.runelite.api.ObjectID.CRATE_6616;
import net.runelite.api.TileObject;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin;
@@ -185,7 +185,7 @@ public class MapClue extends ClueScroll implements ObjectClueScroll
if (plugin.getObjectsToMark() != null)
{
for (GameObject gameObject : plugin.getObjectsToMark())
for (TileObject gameObject : plugin.getObjectsToMark())
{
OverlayUtil.renderHoverableArea(graphics, gameObject.getClickbox(), mousePosition,
CLICKBOX_FILL_COLOR, CLICKBOX_BORDER_COLOR, CLICKBOX_HOVER_BORDER_COLOR);