From d89c45940b05542e7fba4f327ebcb06b96e3efdb Mon Sep 17 00:00:00 2001 From: Graham Date: Sun, 4 Apr 2021 12:10:38 +0100 Subject: [PATCH] Infer the number of bytes to skip automatically in the material decoder Signed-off-by: Graham --- .../kotlin/org/openrs2/archive/map/MapRenderer.kt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/archive/src/main/kotlin/org/openrs2/archive/map/MapRenderer.kt b/archive/src/main/kotlin/org/openrs2/archive/map/MapRenderer.kt index d8ae2418..7394fb83 100644 --- a/archive/src/main/kotlin/org/openrs2/archive/map/MapRenderer.kt +++ b/archive/src/main/kotlin/org/openrs2/archive/map/MapRenderer.kt @@ -97,7 +97,20 @@ public class MapRenderer @Inject constructor( } } - metadata.skipBytes(ids.size * 7) + // the number of booleans to skip varies in different builds + outer@ while (true) { + val start = metadata.readerIndex() + + for (i in 0 until ids.size) { + if (metadata.getUnsignedByte(start + i) > 1) { + break@outer + } + } + + metadata.skipBytes(ids.size) + } + + metadata.skipBytes(ids.size * 4) for (id in ids) { textures[id] = metadata.readUnsignedShort()