Merge pull request #1493 from deathbeam/item-container-events
Hide clue scroll interface when no clue is present
This commit is contained in:
@@ -29,7 +29,6 @@ package net.runelite.client.plugins.cluescrolls;
|
|||||||
import com.google.common.eventbus.Subscribe;
|
import com.google.common.eventbus.Subscribe;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.temporal.ChronoUnit;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@@ -43,15 +42,20 @@ import net.runelite.api.GameObject;
|
|||||||
import net.runelite.api.GameState;
|
import net.runelite.api.GameState;
|
||||||
import net.runelite.api.InventoryID;
|
import net.runelite.api.InventoryID;
|
||||||
import net.runelite.api.Item;
|
import net.runelite.api.Item;
|
||||||
|
import net.runelite.api.ItemComposition;
|
||||||
import net.runelite.api.NPC;
|
import net.runelite.api.NPC;
|
||||||
import net.runelite.api.Query;
|
import net.runelite.api.Query;
|
||||||
import net.runelite.api.coords.WorldPoint;
|
import net.runelite.api.coords.WorldPoint;
|
||||||
import net.runelite.api.events.ChatMessage;
|
import net.runelite.api.events.ChatMessage;
|
||||||
|
import net.runelite.api.events.GameStateChanged;
|
||||||
|
import net.runelite.api.events.GameTick;
|
||||||
|
import net.runelite.api.events.ItemContainerChanged;
|
||||||
import net.runelite.api.queries.GameObjectQuery;
|
import net.runelite.api.queries.GameObjectQuery;
|
||||||
import net.runelite.api.queries.InventoryItemQuery;
|
import net.runelite.api.queries.InventoryItemQuery;
|
||||||
import net.runelite.api.queries.NPCQuery;
|
import net.runelite.api.queries.NPCQuery;
|
||||||
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.client.game.ItemManager;
|
||||||
import net.runelite.client.plugins.Plugin;
|
import net.runelite.client.plugins.Plugin;
|
||||||
import net.runelite.client.plugins.PluginDescriptor;
|
import net.runelite.client.plugins.PluginDescriptor;
|
||||||
import net.runelite.client.plugins.cluescrolls.clues.AnagramClue;
|
import net.runelite.client.plugins.cluescrolls.clues.AnagramClue;
|
||||||
@@ -65,7 +69,6 @@ import net.runelite.client.plugins.cluescrolls.clues.MapClue;
|
|||||||
import net.runelite.client.plugins.cluescrolls.clues.NpcClueScroll;
|
import net.runelite.client.plugins.cluescrolls.clues.NpcClueScroll;
|
||||||
import net.runelite.client.plugins.cluescrolls.clues.ObjectClueScroll;
|
import net.runelite.client.plugins.cluescrolls.clues.ObjectClueScroll;
|
||||||
import net.runelite.client.plugins.cluescrolls.clues.TextClueScroll;
|
import net.runelite.client.plugins.cluescrolls.clues.TextClueScroll;
|
||||||
import net.runelite.client.task.Schedule;
|
|
||||||
import net.runelite.client.ui.overlay.Overlay;
|
import net.runelite.client.ui.overlay.Overlay;
|
||||||
import net.runelite.client.util.QueryRunner;
|
import net.runelite.client.util.QueryRunner;
|
||||||
|
|
||||||
@@ -96,6 +99,9 @@ public class ClueScrollPlugin extends Plugin
|
|||||||
@Getter
|
@Getter
|
||||||
private Client client;
|
private Client client;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private ItemManager itemManager;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private QueryRunner queryRunner;
|
private QueryRunner queryRunner;
|
||||||
|
|
||||||
@@ -131,19 +137,47 @@ public class ClueScrollPlugin extends Plugin
|
|||||||
clue = null;
|
clue = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Schedule(
|
@Subscribe
|
||||||
period = 600,
|
public void onItemContainerChanged(final ItemContainerChanged event)
|
||||||
unit = ChronoUnit.MILLIS
|
|
||||||
)
|
|
||||||
public void checkForClues()
|
|
||||||
{
|
{
|
||||||
if (client.getGameState() == GameState.LOGIN_SCREEN)
|
// Check if item was removed from inventory
|
||||||
|
if (clue != null && event.getItemContainer() == client.getItemContainer(InventoryID.INVENTORY))
|
||||||
{
|
{
|
||||||
client.clearHintArrow();
|
final Item[] items = event.getItemContainer().getItems();
|
||||||
clue = null;
|
boolean found = false;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// Clue was maybe removed from inventory, check if there is any clue scrolls left
|
||||||
|
for (Item item : items)
|
||||||
|
{
|
||||||
|
final ItemComposition itemContainerDefinition = itemManager.getItemComposition(item.getId());
|
||||||
|
|
||||||
|
// Check if we have any clue scrolls left
|
||||||
|
if (itemContainerDefinition.getName().startsWith("Clue scroll"))
|
||||||
|
{
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!found)
|
||||||
|
{
|
||||||
|
resetClue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onGameStateChanged(final GameStateChanged event)
|
||||||
|
{
|
||||||
|
if (event.getGameState() == GameState.LOGIN_SCREEN)
|
||||||
|
{
|
||||||
|
resetClue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onGameTick(final GameTick event)
|
||||||
|
{
|
||||||
npcsToMark = null;
|
npcsToMark = null;
|
||||||
objectsToMark = null;
|
objectsToMark = null;
|
||||||
equippedItems = null;
|
equippedItems = null;
|
||||||
@@ -202,12 +236,22 @@ public class ClueScrollPlugin extends Plugin
|
|||||||
// so the clue window doesn't have to be open.
|
// so the clue window doesn't have to be open.
|
||||||
if (clue != null)
|
if (clue != null)
|
||||||
{
|
{
|
||||||
client.clearHintArrow();
|
if (clue != this.clue)
|
||||||
|
{
|
||||||
|
resetClue();
|
||||||
|
}
|
||||||
|
|
||||||
this.clue = clue;
|
this.clue = clue;
|
||||||
this.clueTimeout = Instant.now();
|
this.clueTimeout = Instant.now();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void resetClue()
|
||||||
|
{
|
||||||
|
clue = null;
|
||||||
|
client.clearHintArrow();
|
||||||
|
}
|
||||||
|
|
||||||
private ClueScroll findClueScroll()
|
private ClueScroll findClueScroll()
|
||||||
{
|
{
|
||||||
Widget clueScrollText = client.getWidget(WidgetInfo.CLUE_SCROLL_TEXT);
|
Widget clueScrollText = client.getWidget(WidgetInfo.CLUE_SCROLL_TEXT);
|
||||||
|
|||||||
Reference in New Issue
Block a user