Skip to content

Commit

Permalink
Merge pull request runelite#1493 from deathbeam/item-container-events
Browse files Browse the repository at this point in the history
Hide clue scroll interface when no clue is present
  • Loading branch information
Adam- authored Apr 18, 2018
2 parents 12199c3 + 186abd1 commit 33ece10
Showing 1 changed file with 56 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@
import com.google.common.eventbus.Subscribe;
import java.time.Duration;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
Expand All @@ -43,15 +42,20 @@
import net.runelite.api.GameState;
import net.runelite.api.InventoryID;
import net.runelite.api.Item;
import net.runelite.api.ItemComposition;
import net.runelite.api.NPC;
import net.runelite.api.Query;
import net.runelite.api.coords.WorldPoint;
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.InventoryItemQuery;
import net.runelite.api.queries.NPCQuery;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.cluescrolls.clues.AnagramClue;
Expand All @@ -65,7 +69,6 @@
import net.runelite.client.plugins.cluescrolls.clues.NpcClueScroll;
import net.runelite.client.plugins.cluescrolls.clues.ObjectClueScroll;
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.util.QueryRunner;

Expand Down Expand Up @@ -96,6 +99,9 @@ public class ClueScrollPlugin extends Plugin
@Getter
private Client client;

@Inject
private ItemManager itemManager;

@Inject
private QueryRunner queryRunner;

Expand Down Expand Up @@ -131,19 +137,47 @@ public void onChatMessage(ChatMessage event)
clue = null;
}

@Schedule(
period = 600,
unit = ChronoUnit.MILLIS
)
public void checkForClues()
@Subscribe
public void onItemContainerChanged(final ItemContainerChanged event)
{
if (client.getGameState() == GameState.LOGIN_SCREEN)
// Check if item was removed from inventory
if (clue != null && event.getItemContainer() == client.getItemContainer(InventoryID.INVENTORY))
{
client.clearHintArrow();
clue = null;
return;
final Item[] items = event.getItemContainer().getItems();
boolean found = false;

// 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;
objectsToMark = null;
equippedItems = null;
Expand Down Expand Up @@ -202,12 +236,22 @@ public void checkForClues()
// so the clue window doesn't have to be open.
if (clue != null)
{
client.clearHintArrow();
if (clue != this.clue)
{
resetClue();
}

this.clue = clue;
this.clueTimeout = Instant.now();
}
}

private void resetClue()
{
clue = null;
client.clearHintArrow();
}

private ClueScroll findClueScroll()
{
Widget clueScrollText = client.getWidget(WidgetInfo.CLUE_SCROLL_TEXT);
Expand Down

0 comments on commit 33ece10

Please sign in to comment.