Merge pull request #1631 from deathbeam/arrow-clues-prioritize
Centralize setting of hint arrows for clues
This commit is contained in:
@@ -65,6 +65,7 @@ import net.runelite.client.plugins.cluescrolls.clues.CoordinateClue;
|
|||||||
import net.runelite.client.plugins.cluescrolls.clues.CrypticClue;
|
import net.runelite.client.plugins.cluescrolls.clues.CrypticClue;
|
||||||
import net.runelite.client.plugins.cluescrolls.clues.EmoteClue;
|
import net.runelite.client.plugins.cluescrolls.clues.EmoteClue;
|
||||||
import net.runelite.client.plugins.cluescrolls.clues.FairyRingClue;
|
import net.runelite.client.plugins.cluescrolls.clues.FairyRingClue;
|
||||||
|
import net.runelite.client.plugins.cluescrolls.clues.LocationClueScroll;
|
||||||
import net.runelite.client.plugins.cluescrolls.clues.MapClue;
|
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;
|
||||||
@@ -133,8 +134,7 @@ public class ClueScrollPlugin extends Plugin
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
client.clearHintArrow();
|
resetClue();
|
||||||
clue = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
@@ -182,6 +182,18 @@ public class ClueScrollPlugin extends Plugin
|
|||||||
objectsToMark = null;
|
objectsToMark = null;
|
||||||
equippedItems = null;
|
equippedItems = null;
|
||||||
|
|
||||||
|
// If we have location clue, set world location before all other types of clues
|
||||||
|
// to allow NPCs and objects to override it when needed
|
||||||
|
if (clue instanceof LocationClueScroll)
|
||||||
|
{
|
||||||
|
final WorldPoint location = ((LocationClueScroll) clue).getLocation();
|
||||||
|
|
||||||
|
if (location != null)
|
||||||
|
{
|
||||||
|
client.setHintArrow(location);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (clue instanceof NpcClueScroll)
|
if (clue instanceof NpcClueScroll)
|
||||||
{
|
{
|
||||||
String npc = ((NpcClueScroll) clue).getNpc();
|
String npc = ((NpcClueScroll) clue).getNpc();
|
||||||
@@ -190,6 +202,12 @@ public class ClueScrollPlugin extends Plugin
|
|||||||
{
|
{
|
||||||
Query query = new NPCQuery().nameContains(npc);
|
Query query = new NPCQuery().nameContains(npc);
|
||||||
npcsToMark = queryRunner.runQuery(query);
|
npcsToMark = queryRunner.runQuery(query);
|
||||||
|
|
||||||
|
// Set hint arrow to first NPC found as there can only be 1 hint arrow
|
||||||
|
if (npcsToMark.length >= 1)
|
||||||
|
{
|
||||||
|
client.setHintArrow(npcsToMark[0]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,6 +219,12 @@ public class ClueScrollPlugin extends Plugin
|
|||||||
{
|
{
|
||||||
GameObjectQuery query = new GameObjectQuery().idEquals(objectId);
|
GameObjectQuery query = new GameObjectQuery().idEquals(objectId);
|
||||||
objectsToMark = queryRunner.runQuery(query);
|
objectsToMark = queryRunner.runQuery(query);
|
||||||
|
|
||||||
|
// Set hint arrow to first object found as there can only be 1 hint arrow
|
||||||
|
if (objectsToMark.length >= 1)
|
||||||
|
{
|
||||||
|
client.setHintArrow(objectsToMark[0].getWorldLocation());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.CLU
|
|||||||
import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.IMAGE_Z_OFFSET;
|
import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.IMAGE_Z_OFFSET;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public class AnagramClue extends ClueScroll implements TextClueScroll, NpcClueScroll
|
public class AnagramClue extends ClueScroll implements TextClueScroll, NpcClueScroll, LocationClueScroll
|
||||||
{
|
{
|
||||||
private static final Set<AnagramClue> CLUES = ImmutableSet.of(
|
private static final Set<AnagramClue> CLUES = ImmutableSet.of(
|
||||||
new AnagramClue("This anagram reveals who to speak to next: A BAKER", "Baraek", new WorldPoint(3217, 3434, 0), "Varrock square", "5"),
|
new AnagramClue("This anagram reveals who to speak to next: A BAKER", "Baraek", new WorldPoint(3217, 3434, 0), "Varrock square", "5"),
|
||||||
@@ -193,11 +193,6 @@ public class AnagramClue extends ClueScroll implements TextClueScroll, NpcClueSc
|
|||||||
{
|
{
|
||||||
for (NPC npc : plugin.getNpcsToMark())
|
for (NPC npc : plugin.getNpcsToMark())
|
||||||
{
|
{
|
||||||
if (!plugin.getClient().hasHintArrow())
|
|
||||||
{
|
|
||||||
plugin.getClient().setHintArrow(npc);
|
|
||||||
}
|
|
||||||
|
|
||||||
OverlayUtil.renderActorOverlayImage(graphics, npc, CLUE_SCROLL_IMAGE, Color.ORANGE, IMAGE_Z_OFFSET);
|
OverlayUtil.renderActorOverlayImage(graphics, npc, CLUE_SCROLL_IMAGE, Color.ORANGE, IMAGE_Z_OFFSET);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.CLU
|
|||||||
import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.IMAGE_Z_OFFSET;
|
import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.IMAGE_Z_OFFSET;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public class CipherClue extends ClueScroll implements TextClueScroll, NpcClueScroll
|
public class CipherClue extends ClueScroll implements TextClueScroll, NpcClueScroll, LocationClueScroll
|
||||||
{
|
{
|
||||||
private static final Set<CipherClue> CLUES = ImmutableSet.of(
|
private static final Set<CipherClue> CLUES = ImmutableSet.of(
|
||||||
new CipherClue("The cipher reveals who to speak to next: BMJ UIF LFCBC TFMMFS", "Ali the Kebab seller", new WorldPoint(3354, 2974, 0), "Pollnivneach", "399"),
|
new CipherClue("The cipher reveals who to speak to next: BMJ UIF LFCBC TFMMFS", "Ali the Kebab seller", new WorldPoint(3354, 2974, 0), "Pollnivneach", "399"),
|
||||||
@@ -103,11 +103,6 @@ public class CipherClue extends ClueScroll implements TextClueScroll, NpcClueScr
|
|||||||
{
|
{
|
||||||
for (NPC npc : plugin.getNpcsToMark())
|
for (NPC npc : plugin.getNpcsToMark())
|
||||||
{
|
{
|
||||||
if (!plugin.getClient().hasHintArrow())
|
|
||||||
{
|
|
||||||
plugin.getClient().setHintArrow(npc);
|
|
||||||
}
|
|
||||||
|
|
||||||
OverlayUtil.renderActorOverlayImage(graphics, npc, CLUE_SCROLL_IMAGE, Color.ORANGE, IMAGE_Z_OFFSET);
|
OverlayUtil.renderActorOverlayImage(graphics, npc, CLUE_SCROLL_IMAGE, Color.ORANGE, IMAGE_Z_OFFSET);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.SPA
|
|||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class CoordinateClue extends ClueScroll implements TextClueScroll
|
public class CoordinateClue extends ClueScroll implements TextClueScroll, LocationClueScroll
|
||||||
{
|
{
|
||||||
private String text;
|
private String text;
|
||||||
private WorldPoint location;
|
private WorldPoint location;
|
||||||
@@ -57,11 +57,6 @@ public class CoordinateClue extends ClueScroll implements TextClueScroll
|
|||||||
@Override
|
@Override
|
||||||
public void makeWorldOverlayHint(Graphics2D graphics, ClueScrollPlugin plugin)
|
public void makeWorldOverlayHint(Graphics2D graphics, ClueScrollPlugin plugin)
|
||||||
{
|
{
|
||||||
if (!plugin.getClient().hasHintArrow())
|
|
||||||
{
|
|
||||||
plugin.getClient().setHintArrow(getLocation());
|
|
||||||
}
|
|
||||||
|
|
||||||
LocalPoint localLocation = LocalPoint.fromWorld(plugin.getClient(), getLocation());
|
LocalPoint localLocation = LocalPoint.fromWorld(plugin.getClient(), getLocation());
|
||||||
|
|
||||||
if (localLocation == null)
|
if (localLocation == null)
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.IMA
|
|||||||
import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.SPADE_IMAGE;
|
import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.SPADE_IMAGE;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public class CrypticClue extends ClueScroll implements TextClueScroll, NpcClueScroll, ObjectClueScroll
|
public class CrypticClue extends ClueScroll implements TextClueScroll, NpcClueScroll, ObjectClueScroll, LocationClueScroll
|
||||||
{
|
{
|
||||||
private static final Set<CrypticClue> CLUES = ImmutableSet.of(
|
private static final Set<CrypticClue> CLUES = ImmutableSet.of(
|
||||||
new CrypticClue("Show this to Sherlock.", "Sherlock", new WorldPoint(2733, 3415, 0), "Sherlock is located to the east of the Sorcerer's tower in Seers' Village."),
|
new CrypticClue("Show this to Sherlock.", "Sherlock", new WorldPoint(2733, 3415, 0), "Sherlock is located to the east of the Sorcerer's tower in Seers' Village."),
|
||||||
@@ -371,11 +371,6 @@ public class CrypticClue extends ClueScroll implements TextClueScroll, NpcClueSc
|
|||||||
// Mark dig location
|
// Mark dig location
|
||||||
if (getLocation() != null && getNpc() == null && objectId == -1)
|
if (getLocation() != null && getNpc() == null && objectId == -1)
|
||||||
{
|
{
|
||||||
if (!plugin.getClient().hasHintArrow())
|
|
||||||
{
|
|
||||||
plugin.getClient().setHintArrow(getLocation());
|
|
||||||
}
|
|
||||||
|
|
||||||
LocalPoint localLocation = LocalPoint.fromWorld(plugin.getClient(), getLocation());
|
LocalPoint localLocation = LocalPoint.fromWorld(plugin.getClient(), getLocation());
|
||||||
|
|
||||||
if (localLocation != null)
|
if (localLocation != null)
|
||||||
@@ -389,11 +384,6 @@ public class CrypticClue extends ClueScroll implements TextClueScroll, NpcClueSc
|
|||||||
{
|
{
|
||||||
for (NPC npc : plugin.getNpcsToMark())
|
for (NPC npc : plugin.getNpcsToMark())
|
||||||
{
|
{
|
||||||
if (!plugin.getClient().hasHintArrow())
|
|
||||||
{
|
|
||||||
plugin.getClient().setHintArrow(npc);
|
|
||||||
}
|
|
||||||
|
|
||||||
OverlayUtil.renderActorOverlayImage(graphics, npc, CLUE_SCROLL_IMAGE, Color.ORANGE, IMAGE_Z_OFFSET);
|
OverlayUtil.renderActorOverlayImage(graphics, npc, CLUE_SCROLL_IMAGE, Color.ORANGE, IMAGE_Z_OFFSET);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -407,11 +397,6 @@ public class CrypticClue extends ClueScroll implements TextClueScroll, NpcClueSc
|
|||||||
{
|
{
|
||||||
for (GameObject gameObject : plugin.getObjectsToMark())
|
for (GameObject gameObject : plugin.getObjectsToMark())
|
||||||
{
|
{
|
||||||
if (!plugin.getClient().hasHintArrow())
|
|
||||||
{
|
|
||||||
plugin.getClient().setHintArrow(gameObject.getWorldLocation());
|
|
||||||
}
|
|
||||||
|
|
||||||
OverlayUtil.renderHoverableArea(graphics, gameObject.getClickbox(), mousePosition,
|
OverlayUtil.renderHoverableArea(graphics, gameObject.getClickbox(), mousePosition,
|
||||||
CLICKBOX_FILL_COLOR, CLICKBOX_BORDER_COLOR, CLICKBOX_HOVER_BORDER_COLOR);
|
CLICKBOX_FILL_COLOR, CLICKBOX_BORDER_COLOR, CLICKBOX_HOVER_BORDER_COLOR);
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ import static net.runelite.client.plugins.cluescrolls.clues.Emote.*;
|
|||||||
import static net.runelite.client.plugins.cluescrolls.clues.Emote.BULL_ROARER;
|
import static net.runelite.client.plugins.cluescrolls.clues.Emote.BULL_ROARER;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public class EmoteClue extends ClueScroll implements TextClueScroll
|
public class EmoteClue extends ClueScroll implements TextClueScroll, LocationClueScroll
|
||||||
{
|
{
|
||||||
private static final Set<EmoteClue> CLUES = ImmutableSet.of(
|
private static final Set<EmoteClue> CLUES = ImmutableSet.of(
|
||||||
new EmoteClue("Show your anger towards the Statue of Saradomin in Ellamaria's garden. Beware of double agents! Equip a zamorak godsword.", new WorldPoint(3230, 3478, 0), ANGRY, ZAMORAK_GODSWORD),
|
new EmoteClue("Show your anger towards the Statue of Saradomin in Ellamaria's garden. Beware of double agents! Equip a zamorak godsword.", new WorldPoint(3230, 3478, 0), ANGRY, ZAMORAK_GODSWORD),
|
||||||
@@ -221,11 +221,6 @@ public class EmoteClue extends ClueScroll implements TextClueScroll
|
|||||||
@Override
|
@Override
|
||||||
public void makeWorldOverlayHint(Graphics2D graphics, ClueScrollPlugin plugin)
|
public void makeWorldOverlayHint(Graphics2D graphics, ClueScrollPlugin plugin)
|
||||||
{
|
{
|
||||||
if (!plugin.getClient().hasHintArrow())
|
|
||||||
{
|
|
||||||
plugin.getClient().setHintArrow(getLocation());
|
|
||||||
}
|
|
||||||
|
|
||||||
LocalPoint localLocation = LocalPoint.fromWorld(plugin.getClient(), getLocation());
|
LocalPoint localLocation = LocalPoint.fromWorld(plugin.getClient(), getLocation());
|
||||||
|
|
||||||
if (localLocation == null)
|
if (localLocation == null)
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ import static net.runelite.client.plugins.cluescrolls.ClueScrollOverlay.TITLED_C
|
|||||||
import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.SPADE_IMAGE;
|
import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.SPADE_IMAGE;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public class FairyRingClue extends ClueScroll implements TextClueScroll
|
public class FairyRingClue extends ClueScroll implements TextClueScroll, LocationClueScroll
|
||||||
{
|
{
|
||||||
private static final Set<FairyRingClue> CLUES = ImmutableSet.of(
|
private static final Set<FairyRingClue> CLUES = ImmutableSet.of(
|
||||||
new FairyRingClue("A I R 2 3 3 1", new WorldPoint(2702, 3246, 0)),
|
new FairyRingClue("A I R 2 3 3 1", new WorldPoint(2702, 3246, 0)),
|
||||||
@@ -78,11 +78,6 @@ public class FairyRingClue extends ClueScroll implements TextClueScroll
|
|||||||
@Override
|
@Override
|
||||||
public void makeWorldOverlayHint(Graphics2D graphics, ClueScrollPlugin plugin)
|
public void makeWorldOverlayHint(Graphics2D graphics, ClueScrollPlugin plugin)
|
||||||
{
|
{
|
||||||
if (!plugin.getClient().hasHintArrow())
|
|
||||||
{
|
|
||||||
plugin.getClient().setHintArrow(getLocation());
|
|
||||||
}
|
|
||||||
|
|
||||||
LocalPoint localLocation = LocalPoint.fromWorld(plugin.getClient(), getLocation());
|
LocalPoint localLocation = LocalPoint.fromWorld(plugin.getClient(), getLocation());
|
||||||
|
|
||||||
if (localLocation == null)
|
if (localLocation == null)
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018, Tomas Slusny <slusnucky@gmail.com>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||||
|
* list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
|
* and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
package net.runelite.client.plugins.cluescrolls.clues;
|
||||||
|
|
||||||
|
import net.runelite.api.coords.WorldPoint;
|
||||||
|
|
||||||
|
public interface LocationClueScroll
|
||||||
|
{
|
||||||
|
WorldPoint getLocation();
|
||||||
|
}
|
||||||
@@ -48,7 +48,7 @@ import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.IMA
|
|||||||
import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.SPADE_IMAGE;
|
import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.SPADE_IMAGE;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public class MapClue extends ClueScroll implements ObjectClueScroll
|
public class MapClue extends ClueScroll implements ObjectClueScroll, LocationClueScroll
|
||||||
{
|
{
|
||||||
private static final Set<MapClue> CLUES = ImmutableSet.of(
|
private static final Set<MapClue> CLUES = ImmutableSet.of(
|
||||||
new MapClue(CLUE_SCROLL_EASY_12179, new WorldPoint(3300, 3291, 0)),
|
new MapClue(CLUE_SCROLL_EASY_12179, new WorldPoint(3300, 3291, 0)),
|
||||||
@@ -126,11 +126,6 @@ public class MapClue extends ClueScroll implements ObjectClueScroll
|
|||||||
@Override
|
@Override
|
||||||
public void makeWorldOverlayHint(Graphics2D graphics, ClueScrollPlugin plugin)
|
public void makeWorldOverlayHint(Graphics2D graphics, ClueScrollPlugin plugin)
|
||||||
{
|
{
|
||||||
if (!plugin.getClient().hasHintArrow())
|
|
||||||
{
|
|
||||||
plugin.getClient().setHintArrow(getLocation());
|
|
||||||
}
|
|
||||||
|
|
||||||
LocalPoint localLocation = LocalPoint.fromWorld(plugin.getClient(), getLocation());
|
LocalPoint localLocation = LocalPoint.fromWorld(plugin.getClient(), getLocation());
|
||||||
|
|
||||||
if (localLocation == null)
|
if (localLocation == null)
|
||||||
|
|||||||
Reference in New Issue
Block a user