From 1c1bf75c08298b93b0002e977970f6eaa64bf0ad Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 26 Dec 2018 15:46:36 -0500 Subject: [PATCH] herbiboar plugin: optimize object and tunnel overlays --- .../herbiboars/HerbiboarMinimapOverlay.java | 2 +- .../plugins/herbiboars/HerbiboarOverlay.java | 59 +++++++++---------- .../plugins/herbiboars/HerbiboarPlugin.java | 36 ++++++----- 3 files changed, 51 insertions(+), 46 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/herbiboars/HerbiboarMinimapOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/herbiboars/HerbiboarMinimapOverlay.java index e409741561..fff22cbc39 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/herbiboars/HerbiboarMinimapOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/herbiboars/HerbiboarMinimapOverlay.java @@ -58,7 +58,7 @@ public class HerbiboarMinimapOverlay extends Overlay int finishId = plugin.getFinishId(); Set shownTrailIds = plugin.getShownTrails(); - for (TileObject tileObject : plugin.getTrails().keySet()) + for (TileObject tileObject : plugin.getTrails().values()) { int id = tileObject.getId(); Point minimapLocation = tileObject.getMinimapLocation(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/herbiboars/HerbiboarOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/herbiboars/HerbiboarOverlay.java index 06ee5d144f..653228cdb3 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/herbiboars/HerbiboarOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/herbiboars/HerbiboarOverlay.java @@ -29,9 +29,7 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.geom.Area; -import java.util.Map; import java.util.Set; -import net.runelite.api.Tile; import net.runelite.api.TileObject; import net.runelite.api.coords.WorldPoint; import net.runelite.client.ui.overlay.Overlay; @@ -68,7 +66,7 @@ class HerbiboarOverlay extends Overlay // Draw start objects if (config.isStartShown() && (currentTrail == null && finishId == 0)) { - plugin.getStarts().keySet().forEach((obj) -> + plugin.getStarts().values().forEach((obj) -> { OverlayUtil.renderTileOverlay(graphics, obj, "", config.getStartColor()); }); @@ -78,7 +76,7 @@ class HerbiboarOverlay extends Overlay if (config.isTrailShown()) { Set shownTrailIds = plugin.getShownTrails(); - plugin.getTrails().keySet().forEach((x) -> + plugin.getTrails().values().forEach((x) -> { int id = x.getId(); if (shownTrailIds.contains(id) && (finishId > 0 || (currentTrail != null && currentTrail.getTrailId() != id && currentTrail.getTrailId() + 1 != id))) @@ -92,61 +90,60 @@ class HerbiboarOverlay extends Overlay if (config.isObjectShown() && currentTrail != null) { int currentPath = plugin.getCurrentPath(); - plugin.getTrailObjects().keySet().forEach((obj) -> + WorldPoint[] trailLocs = currentTrail.getObjectLocs(currentPath); + for (WorldPoint trailLoc : trailLocs) { - WorldPoint loc = obj.getWorldLocation(); - WorldPoint[] trailLocs = currentTrail.getObjectLocs(currentPath); - for (WorldPoint trailLoc : trailLocs) + if (trailLoc == null) { - if (trailLoc == null) - { - continue; - } + continue; + } - if (trailLoc.equals(loc)) + TileObject object = plugin.getTrailObjects().get(trailLoc); + if (object != null) + { + if (config.showClickBoxes()) { - if (config.showClickBoxes()) + Area clickbox = object.getClickbox(); + if (clickbox != null) { - Area clickbox = obj.getClickbox(); graphics.setColor(config.getObjectColor()); graphics.draw(clickbox); graphics.setColor(new Color(255, 0, 255, 20)); graphics.fill(clickbox); } - else - { - OverlayUtil.renderTileOverlay(graphics, obj, "", config.getObjectColor()); - } + } + else + { + OverlayUtil.renderTileOverlay(graphics, object, "", config.getObjectColor()); } } - }); + } } // Draw finish tunnels if (config.isTunnelShown() && finishId > 0) { WorldPoint finishLoc = plugin.getEndLocations().get(finishId - 1); - Map tunnels = plugin.getTunnels(); - tunnels.keySet().forEach((obj) -> + TileObject object = plugin.getTunnels().get(finishLoc); + if (object != null) { - WorldPoint loc = obj.getWorldLocation(); - if (finishLoc.equals(loc)) + if (config.showClickBoxes()) { - if (config.showClickBoxes()) + Area clickbox = object.getClickbox(); + if (clickbox != null) { - Area clickbox = obj.getClickbox(); Color col = config.getObjectColor(); graphics.setColor(col); graphics.draw(clickbox); graphics.setColor(new Color(col.getRed(), col.getGreen(), col.getBlue(), 20)); graphics.fill(clickbox); } - else - { - OverlayUtil.renderTileOverlay(graphics, obj, "", config.getTunnelColor()); - } } - }); + else + { + OverlayUtil.renderTileOverlay(graphics, object, "", config.getTunnelColor()); + } + } } return null; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/herbiboars/HerbiboarPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/herbiboars/HerbiboarPlugin.java index f53f421dcf..83e59c19a4 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/herbiboars/HerbiboarPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/herbiboars/HerbiboarPlugin.java @@ -108,16 +108,16 @@ public class HerbiboarPlugin extends Plugin private boolean inHerbiboarArea; @Getter - private Map trails = new HashMap<>(); + private Map trails = new HashMap<>(); @Getter - private Map tunnels = new HashMap<>(); + private Map tunnels = new HashMap<>(); @Getter - private Map starts = new HashMap<>(); + private Map starts = new HashMap<>(); @Getter - private Map trailObjects = new HashMap<>(); + private Map trailObjects = new HashMap<>(); @Getter @Setter @@ -278,9 +278,13 @@ public class HerbiboarPlugin extends Plugin // Store relevant GameObjects (starts, objects used to trigger next trails, and some tunnels) private void onGameObject(Tile tile, TileObject oldObject, TileObject newObject) { - trailObjects.remove(oldObject); - tunnels.remove(oldObject); - starts.remove(oldObject); + if (oldObject != null) + { + WorldPoint oldLocation = oldObject.getWorldLocation(); + trailObjects.remove(oldLocation); + tunnels.remove(oldLocation); + starts.remove(oldLocation); + } if (newObject == null) { @@ -290,29 +294,33 @@ public class HerbiboarPlugin extends Plugin // Starts if (START_OBJECT_IDS.contains(newObject.getId())) { - starts.put(newObject, tile); + starts.put(newObject.getWorldLocation(), newObject); return; } // GameObject to trigger next trail (mushrooms, mud, seaweed, etc) if (HerbiboarTrail.getAllObjectLocs().contains(newObject.getWorldLocation())) { - trailObjects.put(newObject, tile); + trailObjects.put(newObject.getWorldLocation(), newObject); return; } // Herbiboar tunnel if (END_LOCATIONS.contains(newObject.getWorldLocation())) { - tunnels.put(newObject, tile); + tunnels.put(newObject.getWorldLocation(), newObject); } } // Store relevant GroundObjects (tracks on trails, and some tunnels) private void onGroundObject(Tile tile, TileObject oldObject, TileObject newObject) { - trails.remove(oldObject); - tunnels.remove(oldObject); + if (oldObject != null) + { + WorldPoint oldLocation = oldObject.getWorldLocation(); + trails.remove(oldLocation); + tunnels.remove(oldLocation); + } if (newObject == null) { @@ -322,14 +330,14 @@ public class HerbiboarPlugin extends Plugin //Trails if (HerbiboarTrail.getTrailIds().contains(newObject.getId())) { - trails.put(newObject, tile); + trails.put(newObject.getWorldLocation(), newObject); return; } //Herbiboar tunnel if (END_LOCATIONS.contains(newObject.getWorldLocation())) { - tunnels.put(newObject, tile); + tunnels.put(newObject.getWorldLocation(), newObject); } }