Move map clue checking to MenuOptionClicked

Closes #4607

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
Tomas Slusny
2018-09-26 09:09:31 +02:00
parent 2c29924891
commit 1a1c83dd3c

View File

@@ -57,7 +57,6 @@ import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.events.ItemContainerChanged; import net.runelite.api.events.ItemContainerChanged;
import net.runelite.api.events.MenuOptionClicked; import net.runelite.api.events.MenuOptionClicked;
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;
@@ -146,7 +145,6 @@ public class ClueScrollPlugin extends Plugin
private BufferedImage emoteImage; private BufferedImage emoteImage;
private BufferedImage mapArrow; private BufferedImage mapArrow;
private Integer clueItemId; private Integer clueItemId;
private boolean clueItemChanged = false;
private boolean worldMapPointsSet = false; private boolean worldMapPointsSet = false;
@Provides @Provides
@@ -169,7 +167,7 @@ public class ClueScrollPlugin extends Plugin
overlayManager.remove(clueScrollOverlay); overlayManager.remove(clueScrollOverlay);
overlayManager.remove(clueScrollEmoteOverlay); overlayManager.remove(clueScrollEmoteOverlay);
overlayManager.remove(clueScrollWorldOverlay); overlayManager.remove(clueScrollWorldOverlay);
resetClue(); resetClue(true);
} }
@Subscribe @Subscribe
@@ -194,7 +192,7 @@ public class ClueScrollPlugin extends Plugin
return; return;
} }
resetClue(); resetClue(true);
} }
@Subscribe @Subscribe
@@ -207,7 +205,7 @@ public class ClueScrollPlugin extends Plugin
if (itemComposition != null && itemComposition.getName().startsWith("Clue scroll")) if (itemComposition != null && itemComposition.getName().startsWith("Clue scroll"))
{ {
clueItemId = itemComposition.getId(); clueItemId = itemComposition.getId();
clueItemChanged = true; updateClue(MapClue.forItemId(clueItemId));
} }
} }
} }
@@ -223,7 +221,7 @@ public class ClueScrollPlugin extends Plugin
// Check if clue was removed from inventory // Check if clue was removed from inventory
if (items.noneMatch(item -> itemManager.getItemComposition(item.getId()).getId() == clueItemId)) if (items.noneMatch(item -> itemManager.getItemComposition(item.getId()).getId() == clueItemId))
{ {
resetClue(); resetClue(true);
} }
} }
@@ -248,7 +246,7 @@ public class ClueScrollPlugin extends Plugin
{ {
if (event.getGameState() == GameState.LOGIN_SCREEN) if (event.getGameState() == GameState.LOGIN_SCREEN)
{ {
resetClue(); resetClue(true);
} }
} }
@@ -342,7 +340,7 @@ public class ClueScrollPlugin extends Plugin
if (clue instanceof EmoteClue) if (clue instanceof EmoteClue)
{ {
ItemContainer equipment = client.getItemContainer(InventoryID.EQUIPMENT); ItemContainer equipment = client.getItemContainer(InventoryID.EQUIPMENT);
if (equipment != null) if (equipment != null)
{ {
equippedItems = equipment.getItems(); equippedItems = equipment.getItems();
@@ -383,12 +381,7 @@ 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)
{ {
if (clue != this.clue) updateClue(clue);
{
resetClue();
}
this.clue = clue;
this.clueTimeout = Instant.now(); this.clueTimeout = Instant.now();
} }
} }
@@ -427,19 +420,18 @@ public class ClueScrollPlugin extends Plugin
return mapArrow; return mapArrow;
} }
private void resetClue() private void resetClue(boolean withItemId)
{ {
if (!clueItemChanged)
{
clueItemId = null;
}
if (clue instanceof LocationsClueScroll) if (clue instanceof LocationsClueScroll)
{ {
((LocationsClueScroll) clue).reset(); ((LocationsClueScroll) clue).reset();
} }
clueItemChanged = false; if (withItemId)
{
clueItemId = null;
}
clue = null; clue = null;
worldMapPointManager.removeIf(ClueScrollWorldMapPoint.class::isInstance); worldMapPointManager.removeIf(ClueScrollWorldMapPoint.class::isInstance);
worldMapPointsSet = false; worldMapPointsSet = false;
@@ -522,30 +514,11 @@ public class ClueScrollPlugin extends Plugin
} }
// We have unknown clue, reset // We have unknown clue, reset
resetClue(); resetClue(true);
return null; return null;
} }
} }
Item[] result = queryRunner.runQuery(new InventoryItemQuery(InventoryID.INVENTORY));
if (result == null)
{
return null;
}
for (Item item : result)
{
MapClue clue = MapClue.forItemId(item.getId());
if (clue != null)
{
clueItemId = item.getId();
clueItemChanged = true;
return clue;
}
}
return null; return null;
} }
@@ -621,4 +594,15 @@ public class ClueScrollPlugin extends Plugin
worldMapPointManager.add(new ClueScrollWorldMapPoint(point, this)); worldMapPointManager.add(new ClueScrollWorldMapPoint(point, this));
} }
} }
private void updateClue(final ClueScroll clue)
{
if (clue == null || clue == this.clue)
{
return;
}
resetClue(false);
this.clue = clue;
}
} }