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