From d868a6d60c321ec5230a69bd1c029ac6bca6d1f0 Mon Sep 17 00:00:00 2001 From: Jeremy Plsek Date: Mon, 7 May 2018 21:20:24 -0400 Subject: [PATCH 1/2] 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 + ); } From 87ce6cc2fd96dd7f8cc38ced8d91c94f6fa4f949 Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 10 May 2018 13:18:22 -0400 Subject: [PATCH 2/2] agility plugin: use immutableset --- .../net/runelite/client/plugins/agility/Obstacles.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 5826b3f664..5d07a0e836 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 @@ -24,13 +24,13 @@ */ package net.runelite.client.plugins.agility; -import com.google.common.collect.Sets; +import com.google.common.collect.ImmutableSet; import java.util.Set; import static net.runelite.api.ObjectID.*; public class Obstacles { - public static final Set COURSE_OBSTACLE_IDS = Sets.newHashSet( + public static final Set COURSE_OBSTACLE_IDS = ImmutableSet.of( // Gnome OBSTACLE_NET_23134, TREE_BRANCH_23559, TREE_BRANCH_23560, OBSTACLE_NET_23135, OBSTACLE_PIPE_23138, OBSTACLE_PIPE_23139, LOG_BALANCE_23145, BALANCING_ROPE_23557, @@ -76,7 +76,7 @@ public class Obstacles GAP_11406, GAP_11429, GAP_11430, STEEP_ROOF, GAP_11630, PLANK_11631, WOODEN_BEAMS ); - public static final Set SHORTCUT_OBSTACLE_IDS = Sets.newHashSet( + public static final Set SHORTCUT_OBSTACLE_IDS = ImmutableSet.of( // Grand Exchange UNDERWALL_TUNNEL_16529, UNDERWALL_TUNNEL_16530, // South Varrock @@ -178,7 +178,7 @@ public class Obstacles PILLAR_31561 ); - public static final Set TRAP_OBSTACLE_IDS = Sets.newHashSet( + public static final Set TRAP_OBSTACLE_IDS = ImmutableSet.of( // Agility pyramid NULL_3550, NULL_10872, NULL_10873 );