From 128e10a74a3f01e7e45536efc2f4864eff1b5967 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 21 Aug 2016 17:32:58 -0400 Subject: [PATCH] Look up map icons by name instead of id --- .../net/runelite/cache/MapImageDumper.java | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/cache/src/main/java/net/runelite/cache/MapImageDumper.java b/cache/src/main/java/net/runelite/cache/MapImageDumper.java index 7d6cc6ecbb..160ff1c104 100644 --- a/cache/src/main/java/net/runelite/cache/MapImageDumper.java +++ b/cache/src/main/java/net/runelite/cache/MapImageDumper.java @@ -57,6 +57,7 @@ import net.runelite.cache.fs.Store; import net.runelite.cache.io.InputStream; import net.runelite.cache.region.Location; import net.runelite.cache.region.Region; +import net.runelite.cache.util.Djb2; import net.runelite.cache.util.XteaKeyManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -66,7 +67,6 @@ public class MapImageDumper private static final Logger logger = LoggerFactory.getLogger(MapImageDumper.class); private static final int MAX_REGION = 32768; - private static final int MAP_SCENE_SPRITE_ID = 317; // magic sprite id map icons are in private static final int MAP_SCALE = 2; // this squared is the number of pixels per map square private static final int MAPICON_MAX_WIDTH = 5; // scale minimap icons down to this size so they fit.. private static final int MAPICON_MAX_HEIGHT = 6; @@ -78,7 +78,7 @@ public class MapImageDumper private final List textures = new ArrayList<>(); private final Multimap sprites = HashMultimap.create(); private final Map averageColors = new HashMap<>(); - private final Map scaledMapIcons = new HashMap<>(); + private final Map scaledMapIcons = new HashMap<>(); private final Map objects = new HashMap<>(); private final List regions = new ArrayList<>(); @@ -243,16 +243,7 @@ public class MapImageDumper if (od.getMapSceneID() != -1) { - SpriteDefinition sprite = findSprite(MAP_SCENE_SPRITE_ID, od.getMapSceneID()); - - assert sprite != null; - - if (sprite.getHeight() <= 0 || sprite.getWidth() <= 0) - { - continue; - } - - Image spriteImage = scaledMapIcons.get(sprite); + Image spriteImage = scaledMapIcons.get(od.getMapSceneID()); graphics.drawImage(spriteImage, drawX * MAP_SCALE, drawY * MAP_SCALE, null); } } @@ -421,6 +412,7 @@ public class MapImageDumper private void loadSprites(Store store) { Index index = store.getIndex(IndexType.SPRITES); + final int mapsceneHash = Djb2.hash("mapscene"); for (Archive a : index.getArchives()) { @@ -440,7 +432,7 @@ public class MapImageDumper averageColors.put(sprite, getAverageColor(sprite.getPixels())); - if (sprite.getId() == MAP_SCENE_SPRITE_ID) + if (a.getNameHash() == mapsceneHash) { if (sprite.getHeight() <= 0 || sprite.getWidth() <= 0) { @@ -453,7 +445,8 @@ public class MapImageDumper // scale image down so it fits Image scaledImage = spriteImage.getScaledInstance(MAPICON_MAX_WIDTH, MAPICON_MAX_HEIGHT, 0); - scaledMapIcons.put(sprite, scaledImage); + assert scaledMapIcons.containsKey(sprite.getFrame()) == false; + scaledMapIcons.put(sprite.getFrame(), scaledImage); } } }