diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollOverlay.java index 10ce1252a9..53cf097dd2 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollOverlay.java @@ -30,17 +30,23 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import javax.inject.Inject; +import static net.runelite.api.ItemID.SPADE; import static net.runelite.api.MenuAction.RUNELITE_OVERLAY_CONFIG; import net.runelite.client.plugins.cluescrolls.clues.ClueScroll; +import net.runelite.client.plugins.cluescrolls.clues.emote.ItemRequirement; +import net.runelite.client.plugins.cluescrolls.clues.emote.SingleItemRequirement; import net.runelite.client.ui.overlay.Overlay; import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE; import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayPriority; import net.runelite.client.ui.overlay.components.ComponentConstants; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; public class ClueScrollOverlay extends Overlay { + private static final ItemRequirement HAS_SPADE = new SingleItemRequirement(SPADE); + public static final Color TITLED_CONTENT_COLOR = new Color(190, 190, 190); private final ClueScrollPlugin plugin; @@ -70,6 +76,15 @@ public class ClueScrollOverlay extends Overlay clue.makeOverlayHint(panelComponent, plugin); + if (clue.isRequiresSpade() && plugin.getInventoryItems() != null) + { + if (!HAS_SPADE.fulfilledBy(plugin.getInventoryItems())) + { + panelComponent.getChildren().add(LineComponent.builder().left("").build()); + panelComponent.getChildren().add(LineComponent.builder().left("Requires Spade!").leftColor(Color.RED).build()); + } + } + return panelComponent.render(graphics); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/ClueScroll.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/ClueScroll.java index 95a3ecded8..0b6bf8f724 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/ClueScroll.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/ClueScroll.java @@ -25,11 +25,18 @@ package net.runelite.client.plugins.cluescrolls.clues; import java.awt.Graphics2D; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.Setter; import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin; import net.runelite.client.ui.overlay.components.PanelComponent; public abstract class ClueScroll { + @Setter(AccessLevel.PROTECTED) + @Getter(AccessLevel.PUBLIC) + private boolean requiresSpade; + public abstract void makeOverlayHint(PanelComponent panelComponent, ClueScrollPlugin plugin); public abstract void makeWorldOverlayHint(Graphics2D graphics, ClueScrollPlugin plugin); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java index f352115c1e..432b3bad71 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java @@ -27,21 +27,16 @@ package net.runelite.client.plugins.cluescrolls.clues; import com.google.common.collect.ImmutableMap; import java.awt.Color; import java.awt.Graphics2D; -import lombok.AllArgsConstructor; import lombok.Getter; -import net.runelite.api.ItemID; import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.WorldPoint; import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin; -import net.runelite.client.plugins.cluescrolls.clues.emote.ItemRequirement; -import net.runelite.client.plugins.cluescrolls.clues.emote.SingleItemRequirement; import net.runelite.client.ui.overlay.OverlayUtil; import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.TitleComponent; @Getter -@AllArgsConstructor public class CoordinateClue extends ClueScroll implements TextClueScroll, LocationClueScroll { private static final ImmutableMap CLUES = new ImmutableMap.Builder() @@ -192,9 +187,15 @@ public class CoordinateClue extends ClueScroll implements TextClueScroll, Locati .put(new WorldPoint(2994, 3961, 0), "Wilderness. Inside Agility Training Area.") .build(); - private String text; - private WorldPoint location; - private static final ItemRequirement HAS_SPADE = new SingleItemRequirement(ItemID.SPADE); + private final String text; + private final WorldPoint location; + + public CoordinateClue(String text, WorldPoint location) + { + this.text = text; + this.location = location; + setRequiresSpade(true); + } @Override public void makeOverlayHint(PanelComponent panelComponent, ClueScrollPlugin plugin) @@ -214,15 +215,6 @@ public class CoordinateClue extends ClueScroll implements TextClueScroll, Locati panelComponent.getChildren().add(LineComponent.builder() .left("Click the clue scroll on your world map to see dig location.") .build()); - - if (plugin.getInventoryItems() != null) - { - if (!HAS_SPADE.fulfilledBy(plugin.getInventoryItems())) - { - panelComponent.getChildren().add(LineComponent.builder().left("").build()); - panelComponent.getChildren().add(LineComponent.builder().left("Requires Spade!").leftColor(Color.RED).build()); - } - } } @Override diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/FairyRingClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/FairyRingClue.java index 7841c85447..6fc915db54 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/FairyRingClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/FairyRingClue.java @@ -29,13 +29,10 @@ import java.awt.Color; import java.awt.Graphics2D; import java.util.Set; import lombok.Getter; -import net.runelite.api.ItemID; import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.WorldPoint; import static net.runelite.client.plugins.cluescrolls.ClueScrollOverlay.TITLED_CONTENT_COLOR; import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin; -import net.runelite.client.plugins.cluescrolls.clues.emote.ItemRequirement; -import net.runelite.client.plugins.cluescrolls.clues.emote.SingleItemRequirement; import net.runelite.client.ui.overlay.OverlayUtil; import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; @@ -59,12 +56,12 @@ public class FairyRingClue extends ClueScroll implements TextClueScroll, Locatio private String text; private WorldPoint location; - private static final ItemRequirement HAS_SPADE = new SingleItemRequirement(ItemID.SPADE); private FairyRingClue(String text, WorldPoint location) { this.text = text; this.location = location; + setRequiresSpade(true); } @Override @@ -80,15 +77,6 @@ public class FairyRingClue extends ClueScroll implements TextClueScroll, Locatio panelComponent.getChildren().add(LineComponent.builder() .left("Travel to the fairy ring to see where to dig.") .build()); - - if (plugin.getInventoryItems() != null) - { - if (!HAS_SPADE.fulfilledBy(plugin.getInventoryItems())) - { - panelComponent.getChildren().add(LineComponent.builder().left("").build()); - panelComponent.getChildren().add(LineComponent.builder().left("Requires Spade!").leftColor(Color.RED).build()); - } - } } @Override diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/MapClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/MapClue.java index 414c49806d..99b1eef058 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/MapClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/MapClue.java @@ -44,8 +44,6 @@ import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.CLI import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.CLICKBOX_FILL_COLOR; import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.CLICKBOX_HOVER_BORDER_COLOR; import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.IMAGE_Z_OFFSET; -import net.runelite.client.plugins.cluescrolls.clues.emote.ItemRequirement; -import net.runelite.client.plugins.cluescrolls.clues.emote.SingleItemRequirement; import net.runelite.client.ui.overlay.OverlayUtil; import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; @@ -89,8 +87,6 @@ public class MapClue extends ClueScroll implements ObjectClueScroll new MapClue(CLUE_SCROLL_ELITE_19786, new WorldPoint(2703, 2716, 0), CRATE_6616) ); - private static final ItemRequirement HAS_SPADE = new SingleItemRequirement(SPADE); - private final int itemId; private final WorldPoint location; private final int objectId; @@ -117,6 +113,7 @@ public class MapClue extends ClueScroll implements ObjectClueScroll this.location = location; this.objectId = objectId; this.description = description; + setRequiresSpade(objectId == -1); } @Override @@ -157,15 +154,6 @@ public class MapClue extends ClueScroll implements ObjectClueScroll .left(description) .build()); } - - if (objectId == -1 && plugin.getInventoryItems() != null) - { - if (!HAS_SPADE.fulfilledBy(plugin.getInventoryItems())) - { - panelComponent.getChildren().add(LineComponent.builder().left("").build()); - panelComponent.getChildren().add(LineComponent.builder().left("Requires Spade!").leftColor(Color.RED).build()); - } - } } @Override