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 + ); }