From 7a9a58e18ce9e4f9ed772bfce3f05c9c094a8e40 Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 18 May 2024 09:02:48 -0400 Subject: [PATCH] cache: update worldmap dumper test for new index --- .../java/net/runelite/cache/IndexType.java | 1 - .../cache/definitions/WorldMapDefinition.java | 5 +++-- .../definitions/loaders/WorldMapLoader.java | 21 ++++--------------- .../runelite/cache/WorldMapDumperTest.java | 6 ++++-- 4 files changed, 11 insertions(+), 22 deletions(-) diff --git a/cache/src/main/java/net/runelite/cache/IndexType.java b/cache/src/main/java/net/runelite/cache/IndexType.java index f7a1b600e93..b0b5ca9478c 100644 --- a/cache/src/main/java/net/runelite/cache/IndexType.java +++ b/cache/src/main/java/net/runelite/cache/IndexType.java @@ -43,7 +43,6 @@ public enum IndexType FONTS(13), MUSIC_SAMPLES(14), MUSIC_PATCHES(15), - WORLDMAP_OLD(16), // looks unused WORLDMAP_GEOGRAPHY(18), WORLDMAP(19), WORLDMAP_GROUND(20), diff --git a/cache/src/main/java/net/runelite/cache/definitions/WorldMapDefinition.java b/cache/src/main/java/net/runelite/cache/definitions/WorldMapDefinition.java index 30c61f73b4b..b980b51cdd3 100644 --- a/cache/src/main/java/net/runelite/cache/definitions/WorldMapDefinition.java +++ b/cache/src/main/java/net/runelite/cache/definitions/WorldMapDefinition.java @@ -32,14 +32,15 @@ public class WorldMapDefinition { public String name; - public int field450; + public int emptyTileColor; + public int backgroundColor; public int defaultZoom; public int fileId; public int field453; public int field454; public int field456; public boolean isSurface; - public List regionList; + public List regionList; public String safeName; public Position position; public int field463; diff --git a/cache/src/main/java/net/runelite/cache/definitions/loaders/WorldMapLoader.java b/cache/src/main/java/net/runelite/cache/definitions/loaders/WorldMapLoader.java index 55bc6af71e5..118476a4c67 100644 --- a/cache/src/main/java/net/runelite/cache/definitions/loaders/WorldMapLoader.java +++ b/cache/src/main/java/net/runelite/cache/definitions/loaders/WorldMapLoader.java @@ -46,24 +46,15 @@ public WorldMapDefinition load(byte[] b, int fileId) def.name = in.readString(); int packedPos = in.readInt(); - if (packedPos == -1) - { - def.position = new Position(-1, -1, -1); - } - else - { - int y = packedPos >> 28 & 3; - int x = packedPos >> 14 & 16383; - int z = packedPos & 16383; - def.position = new Position(x, y, z); - } + def.position = Position.fromPacked(packedPos); - def.field450 = in.readInt(); + def.emptyTileColor = in.readInt(); + def.backgroundColor = in.readInt(); in.readUnsignedByte(); def.isSurface = in.readUnsignedByte() == 1; def.defaultZoom = in.readUnsignedByte(); int var3 = in.readUnsignedByte(); - def.regionList = new LinkedList(); + def.regionList = new LinkedList<>(); for (int var4 = 0; var4 < var3; ++var4) { @@ -76,10 +67,6 @@ public WorldMapDefinition load(byte[] b, int fileId) private WorldMapTypeBase loadType(InputStream var1) { int var2 = var1.readUnsignedByte(); - // field397 = new class27(1, (byte)0); - // field390 = new class27(2, (byte)1); - // field399 = new class27(3, (byte)2); - // field393 = new class27(0, (byte)3); WorldMapTypeBase base; switch (var2) { diff --git a/cache/src/test/java/net/runelite/cache/WorldMapDumperTest.java b/cache/src/test/java/net/runelite/cache/WorldMapDumperTest.java index 1f3a8607af2..a3f25a3e614 100644 --- a/cache/src/test/java/net/runelite/cache/WorldMapDumperTest.java +++ b/cache/src/test/java/net/runelite/cache/WorldMapDumperTest.java @@ -38,6 +38,7 @@ import net.runelite.cache.fs.Index; import net.runelite.cache.fs.Storage; import net.runelite.cache.fs.Store; +import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; @@ -54,6 +55,7 @@ public class WorldMapDumperTest private final Gson gson = new GsonBuilder().setPrettyPrinting().create(); @Test + @Ignore public void extract() throws IOException { File base = StoreLocation.LOCATION, @@ -66,8 +68,8 @@ public void extract() throws IOException store.load(); Storage storage = store.getStorage(); - Index index = store.getIndex(IndexType.WORLDMAP_OLD); - Archive archive = index.getArchive(0); // there is also archive 1/2, but their data format is not this + Index index = store.getIndex(IndexType.WORLDMAP); + Archive archive = index.findArchiveByName("details"); byte[] archiveData = storage.loadArchive(archive); ArchiveFiles files = archive.getFiles(archiveData);