package ee.futur.easygotr; import lombok.Getter; import net.runelite.api.NPC; import net.runelite.api.TileObject; import net.runelite.api.coords.WorldPoint; import net.runelite.api.widgets.Widget; import java.awt.*; import java.util.Optional; /** * Represents an entity or tile that should be highlighted for the player. */ @Getter public class EasyGOTRHighlightTarget { private final TileObject tileObject; private final NPC npc; private final WorldPoint worldPoint; private final Widget widget; private final Color color; private final String label; private EasyGOTRHighlightTarget(TileObject tileObject, NPC npc, WorldPoint worldPoint, Widget widget, Color color, String label) { this.tileObject = tileObject; this.npc = npc; this.worldPoint = worldPoint; this.widget = widget; this.color = color; this.label = label; } public static EasyGOTRHighlightTarget forTileObject(TileObject tileObject, Color color, String label) { return new EasyGOTRHighlightTarget(tileObject, null, null, null, color, label); } public static EasyGOTRHighlightTarget forNpc(NPC npc, Color color, String label) { return new EasyGOTRHighlightTarget(null, npc, null, null, color, label); } public static EasyGOTRHighlightTarget forWorldPoint(WorldPoint worldPoint, Color color, String label) { return new EasyGOTRHighlightTarget(null, null, worldPoint, null, color, label); } public static EasyGOTRHighlightTarget forWidget(Widget widget, Color color, String label) { return new EasyGOTRHighlightTarget(null, null, null, widget, color, label); } public Optional getTileObjectOptional() { return Optional.ofNullable(tileObject); } public Optional getNpcOptional() { return Optional.ofNullable(npc); } public Optional getWorldPointOptional() { return Optional.ofNullable(worldPoint); } public Optional getWidgetOptional() { return Optional.ofNullable(widget); } public Color getColorOrDefault(Color defaultColor) { return color != null ? color : defaultColor; } }