From d868a6d60c321ec5230a69bd1c029ac6bca6d1f0 Mon Sep 17 00:00:00 2001 From: Jeremy Plsek Date: Mon, 7 May 2018 21:20:24 -0400 Subject: [PATCH] agility plugin: add trap obstacle overlay Add an option to show an overlay over traps in agility courses --- .../client/plugins/agility/AgilityConfig.java | 24 ++++++++++++++++++- .../plugins/agility/AgilityOverlay.java | 10 +++++++- .../client/plugins/agility/AgilityPlugin.java | 3 ++- .../client/plugins/agility/Obstacles.java | 5 ++++ 4 files changed, 39 insertions(+), 3 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityConfig.java index abc5a47a99..3cb691565b 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityConfig.java @@ -82,7 +82,7 @@ public interface AgilityConfig extends Config @ConfigItem( keyName = "markHighlight", - name = "Mark highlight Color", + name = "Mark Highlight Color", description = "Color of highlighted Marks of Grace", position = 5 ) @@ -101,4 +101,26 @@ public interface AgilityConfig extends Config { return true; } + + @ConfigItem( + keyName = "trapOverlay", + name = "Show Trap Overlay", + description = "Enable/disable the highlighting of traps on Agility courses", + position = 7 + ) + default boolean showTrapOverlay() + { + return true; + } + + @ConfigItem( + keyName = "trapHighlight", + name = "Trap Overlay Color", + description = "Color of Agility trap overlay", + position = 8 + ) + default Color getTrapColor() + { + return Color.RED; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityOverlay.java index 8bf44d52e0..6311c7bbc1 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityOverlay.java @@ -69,7 +69,8 @@ public class AgilityOverlay extends Overlay final Tile markOfGrace = plugin.getMarkOfGrace(); plugin.getObstacles().forEach((object, tile) -> { - if (Obstacles.SHORTCUT_OBSTACLE_IDS.contains(object.getId()) && !config.highlightShortcuts()) + if (Obstacles.SHORTCUT_OBSTACLE_IDS.contains(object.getId()) && !config.highlightShortcuts() || + Obstacles.TRAP_OBSTACLE_IDS.contains(object.getId()) && !config.showTrapOverlay()) { return; } @@ -77,6 +78,13 @@ public class AgilityOverlay extends Overlay if (tile.getPlane() == client.getPlane() && object.getLocalLocation().distanceTo(playerLocation) < MAX_DISTANCE) { + // This assumes that the obstacle is not clickable. + if (Obstacles.TRAP_OBSTACLE_IDS.contains(object.getId())) + { + OverlayUtil.renderPolygon(graphics, object.getCanvasTilePoly(), config.getTrapColor()); + return; + } + Area objectClickbox = object.getClickbox(); if (objectClickbox != null) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityPlugin.java index e6ab671b2c..f58c32ab1d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityPlugin.java @@ -286,7 +286,8 @@ public class AgilityPlugin extends Plugin } if (Obstacles.COURSE_OBSTACLE_IDS.contains(newObject.getId()) || - Obstacles.SHORTCUT_OBSTACLE_IDS.contains(newObject.getId())) + Obstacles.SHORTCUT_OBSTACLE_IDS.contains(newObject.getId()) || + Obstacles.TRAP_OBSTACLE_IDS.contains(newObject.getId())) { obstacles.put(newObject, tile); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/agility/Obstacles.java b/runelite-client/src/main/java/net/runelite/client/plugins/agility/Obstacles.java index c2f4321862..5826b3f664 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/agility/Obstacles.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/agility/Obstacles.java @@ -177,4 +177,9 @@ public class Obstacles // Revenant Caves PILLAR_31561 ); + + public static final Set TRAP_OBSTACLE_IDS = Sets.newHashSet( + // Agility pyramid + NULL_3550, NULL_10872, NULL_10873 + ); }