From e210cf6f1e791a9a4e2549d139a886be34771ed2 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 7 May 2017 14:38:07 -0400 Subject: [PATCH] cache: load script key/value pairs too --- .../cache/definitions/ScriptDefinition.java | 28 +++++++++++++------ .../definitions/loaders/ScriptLoader.java | 23 ++++++++++++++- 2 files changed, 42 insertions(+), 9 deletions(-) diff --git a/cache/src/main/java/net/runelite/cache/definitions/ScriptDefinition.java b/cache/src/main/java/net/runelite/cache/definitions/ScriptDefinition.java index 031e64323e..3b23ade1de 100644 --- a/cache/src/main/java/net/runelite/cache/definitions/ScriptDefinition.java +++ b/cache/src/main/java/net/runelite/cache/definitions/ScriptDefinition.java @@ -22,19 +22,21 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - package net.runelite.cache.definitions; +import java.util.Map; + public class ScriptDefinition { private int id; - private int intStackCount; - private int[] instructions; - private int[] intOperands; - private String[] stringOperands; - private int localStringCount; - private int stringStackCount; - private int localIntCount; + private int intStackCount; + private int[] instructions; + private int[] intOperands; + private String[] stringOperands; + private int localStringCount; + private int stringStackCount; + private int localIntCount; + private Map[] attributes; public int getId() { @@ -115,4 +117,14 @@ public class ScriptDefinition { this.localIntCount = localIntCount; } + + public Map[] getAttributes() + { + return attributes; + } + + public void setAttributes(Map[] attributes) + { + this.attributes = attributes; + } } diff --git a/cache/src/main/java/net/runelite/cache/definitions/loaders/ScriptLoader.java b/cache/src/main/java/net/runelite/cache/definitions/loaders/ScriptLoader.java index 875cb69342..fe77a4da3e 100644 --- a/cache/src/main/java/net/runelite/cache/definitions/loaders/ScriptLoader.java +++ b/cache/src/main/java/net/runelite/cache/definitions/loaders/ScriptLoader.java @@ -24,6 +24,8 @@ */ package net.runelite.cache.definitions.loaders; +import java.util.HashMap; +import java.util.Map; import net.runelite.cache.definitions.ScriptDefinition; import net.runelite.cache.io.InputStream; @@ -46,7 +48,26 @@ public class ScriptLoader int intStackCount = in.readUnsignedShort(); int stringStackCount = in.readUnsignedShort(); - // XXX There are key/value pairs here + int attributeCount = in.readUnsignedByte(); + if (attributeCount > 0) + { + Map[] attributes = new Map[attributeCount]; + def.setAttributes(attributes); + + for (int i = 0; i < attributeCount; ++i) + { + attributes[i] = new HashMap<>(); + + int count = in.readUnsignedShort(); + while (count-- > 0) + { + int key = in.readInt(); + int value = in.readInt(); + + attributes[i].put(key, value); + } + } + } def.setLocalIntCount(localIntCount); def.setLocalStringCount(localStringCount);