From 64a661989c48c8e30eaa697fb1ff257865d3b38f Mon Sep 17 00:00:00 2001 From: raiyni Date: Fri, 12 Oct 2018 09:18:49 -0500 Subject: [PATCH] Add ability to search for current clue required items --- .../client/plugins/banktags/TagManager.java | 54 ++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/TagManager.java b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/TagManager.java index 1f887e46ba..c26a41b00d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/TagManager.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/TagManager.java @@ -32,11 +32,20 @@ import java.util.List; import java.util.stream.Collectors; import javax.inject.Inject; import javax.inject.Singleton; +import net.runelite.api.ItemID; import net.runelite.client.config.ConfigManager; import net.runelite.client.game.ItemManager; import static net.runelite.client.plugins.banktags.BankTagsPlugin.CONFIG_GROUP; import static net.runelite.client.plugins.banktags.BankTagsPlugin.JOINER; import static net.runelite.client.plugins.banktags.BankTagsPlugin.SPLITTER; +import net.runelite.client.plugins.cluescrolls.ClueScrollService; +import net.runelite.client.plugins.cluescrolls.clues.ClueScroll; +import net.runelite.client.plugins.cluescrolls.clues.CoordinateClue; +import net.runelite.client.plugins.cluescrolls.clues.EmoteClue; +import net.runelite.client.plugins.cluescrolls.clues.FairyRingClue; +import net.runelite.client.plugins.cluescrolls.clues.HotColdClue; +import net.runelite.client.plugins.cluescrolls.clues.MapClue; +import net.runelite.client.plugins.cluescrolls.clues.emote.ItemRequirement; import net.runelite.client.util.Text; @Singleton @@ -46,11 +55,14 @@ public class TagManager private final ItemManager itemManager; private final ConfigManager configManager; + private final ClueScrollService clueScrollService; + @Inject - private TagManager(final ItemManager itemManager, final ConfigManager configManager) + private TagManager(final ItemManager itemManager, final ConfigManager configManager, final ClueScrollService clueScrollService) { this.itemManager = itemManager; this.configManager = configManager; + this.clueScrollService = clueScrollService; } String getTagString(int itemId) @@ -108,6 +120,11 @@ public class TagManager boolean findTag(int itemId, String search) { + if (search.equals("clue") && testClue(itemId)) + { + return true; + } + return getTags(itemId).stream().anyMatch(tag -> tag.contains(Text.standardize(search))); } @@ -134,4 +151,39 @@ public class TagManager setTags(itemId, tags); } } + + private boolean testClue(int itemId) + { + ClueScroll c = clueScrollService.getClue(); + + if (c == null) + { + return false; + } + + if (c instanceof EmoteClue) + { + EmoteClue emote = (EmoteClue) c; + + for (ItemRequirement ir : emote.getItemRequirements()) + { + if (ir.fulfilledBy(itemId)) + { + return true; + } + } + } + else if (c instanceof CoordinateClue || c instanceof HotColdClue || c instanceof FairyRingClue) + { + return itemId == ItemID.SPADE; + } + else if (c instanceof MapClue) + { + MapClue mapClue = (MapClue) c; + + return mapClue.getObjectId() == -1 && itemId == ItemID.SPADE; + } + + return false; + } }