diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerOverlay.java index ed2217f9b9..d502615186 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerOverlay.java @@ -24,9 +24,7 @@ */ package net.runelite.client.plugins.slayer; -import static com.google.common.collect.ObjectArrays.concat; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Sets; +import com.google.common.collect.ImmutableSet; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Point; @@ -35,25 +33,19 @@ import java.util.Collection; import java.util.Set; import javax.inject.Inject; import net.runelite.api.ItemID; -import net.runelite.api.Query; -import net.runelite.api.queries.EquipmentItemQuery; -import net.runelite.api.queries.InventoryWidgetItemQuery; -import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetItem; import net.runelite.client.ui.FontManager; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.components.TextComponent; -import net.runelite.client.util.QueryRunner; class SlayerOverlay extends Overlay { - private final QueryRunner queryRunner; private final SlayerConfig config; private final SlayerPlugin plugin; - private final Set slayerJewelry = Sets.newHashSet( + private final Set slayerJewelry = ImmutableSet.of( ItemID.SLAYER_RING_1, ItemID.SLAYER_RING_2, ItemID.SLAYER_RING_3, @@ -64,7 +56,7 @@ class SlayerOverlay extends Overlay ItemID.SLAYER_RING_8 ); - private final Set slayerEquipment = Sets.newHashSet( + private final Set slayerEquipment = ImmutableSet.of( ItemID.SLAYER_HELMET, ItemID.SLAYER_HELMET_I, ItemID.BLACK_SLAYER_HELMET, @@ -85,11 +77,10 @@ class SlayerOverlay extends Overlay ); @Inject - SlayerOverlay(QueryRunner queryRunner, SlayerPlugin plugin, SlayerConfig config) + private SlayerOverlay(SlayerPlugin plugin, SlayerConfig config) { setPosition(OverlayPosition.DYNAMIC); setLayer(OverlayLayer.ABOVE_WIDGETS); - this.queryRunner = queryRunner; this.plugin = plugin; this.config = config; } @@ -113,7 +104,8 @@ class SlayerOverlay extends Overlay graphics.setFont(FontManager.getRunescapeSmallFont()); - for (WidgetItem item : getSlayerWidgetItems()) + Collection items = plugin.getSlayerItems(); + for (WidgetItem item : items) { int itemId = item.getId(); @@ -125,17 +117,17 @@ class SlayerOverlay extends Overlay final Rectangle bounds = item.getCanvasBounds(); final TextComponent textComponent = new TextComponent(); - if (item.getId() == ItemID.EXPEDITIOUS_BRACELET) + switch (item.getId()) { - textComponent.setText(String.valueOf(expeditiousCount)); - } - else if (item.getId() == ItemID.BRACELET_OF_SLAUGHTER) - { - textComponent.setText(String.valueOf(slaughterCount)); - } - else - { - textComponent.setText(String.valueOf(amount)); + case ItemID.EXPEDITIOUS_BRACELET: + textComponent.setText(String.valueOf(expeditiousCount)); + break; + case ItemID.BRACELET_OF_SLAUGHTER: + textComponent.setText(String.valueOf(slaughterCount)); + break; + default: + textComponent.setText(String.valueOf(amount)); + break; } // Draw the counter in the bottom left for equipment, and top left for jewelry @@ -147,16 +139,4 @@ class SlayerOverlay extends Overlay return null; } - - private Collection getSlayerWidgetItems() - { - Query inventoryQuery = new InventoryWidgetItemQuery(); - WidgetItem[] inventoryWidgetItems = queryRunner.runQuery(inventoryQuery); - - Query equipmentQuery = new EquipmentItemQuery().slotEquals(WidgetInfo.EQUIPMENT_HELMET, WidgetInfo.EQUIPMENT_RING, WidgetInfo.EQUIPMENT_GLOVES); - WidgetItem[] equipmentWidgetItems = queryRunner.runQuery(equipmentQuery); - - WidgetItem[] items = concat(inventoryWidgetItems, equipmentWidgetItems, WidgetItem.class); - return ImmutableList.copyOf(items); - } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java index afffcb8063..2a2465de3b 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java @@ -25,6 +25,8 @@ */ package net.runelite.client.plugins.slayer; +import com.google.common.collect.ImmutableList; +import static com.google.common.collect.ObjectArrays.concat; import com.google.common.eventbus.Subscribe; import com.google.inject.Provides; import java.awt.image.BufferedImage; @@ -49,14 +51,18 @@ import net.runelite.api.GameState; import net.runelite.api.ItemID; import net.runelite.api.NPC; import net.runelite.api.NPCComposition; +import net.runelite.api.Query; import static net.runelite.api.Skill.SLAYER; import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.ExperienceChanged; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; +import net.runelite.api.queries.EquipmentItemQuery; +import net.runelite.api.queries.InventoryWidgetItemQuery; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetInfo; +import net.runelite.api.widgets.WidgetItem; import net.runelite.client.Notifier; import net.runelite.client.callback.ClientThread; import net.runelite.client.config.ConfigManager; @@ -65,6 +71,7 @@ import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.infobox.InfoBoxManager; +import net.runelite.client.util.QueryRunner; import net.runelite.client.util.Text; @PluginDescriptor( @@ -115,6 +122,9 @@ public class SlayerPlugin extends Plugin @Inject private ClientThread clientThread; + @Inject + private QueryRunner queryRunner; + @Inject private TargetClickboxOverlay targetClickboxOverlay; @@ -124,6 +134,9 @@ public class SlayerPlugin extends Plugin @Getter(AccessLevel.PACKAGE) private List highlightedTargets = new ArrayList<>(); + @Getter(AccessLevel.PACKAGE) + private Collection slayerItems = Collections.emptyList(); + private String taskName; private int amount; private TaskCounter counter; @@ -207,6 +220,8 @@ public class SlayerPlugin extends Plugin @Subscribe public void onGameTick(GameTick tick) { + checkInventories(); + Widget NPCDialog = client.getWidget(WidgetInfo.DIALOG_NPC_TEXT); if (NPCDialog != null) { @@ -277,6 +292,18 @@ public class SlayerPlugin extends Plugin } } + private void checkInventories() + { + Query inventoryQuery = new InventoryWidgetItemQuery(); + WidgetItem[] inventoryWidgetItems = queryRunner.runQuery(inventoryQuery); + + Query equipmentQuery = new EquipmentItemQuery().slotEquals(WidgetInfo.EQUIPMENT_HELMET, WidgetInfo.EQUIPMENT_RING, WidgetInfo.EQUIPMENT_GLOVES); + WidgetItem[] equipmentWidgetItems = queryRunner.runQuery(equipmentQuery); + + WidgetItem[] items = concat(inventoryWidgetItems, equipmentWidgetItems, WidgetItem.class); + slayerItems = ImmutableList.copyOf(items); + } + @Subscribe public void onChatMessage(ChatMessage event) {