From a3e4dc400f0c1d91eb6c2eb1714720db28553929 Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 17 Mar 2018 21:06:55 -0400 Subject: [PATCH] cache: add provider interfaces for items, models, sprites, and textures --- .../java/net/runelite/cache/ItemManager.java | 9 ++++- .../net/runelite/cache/SpriteManager.java | 13 ++++++-- .../net/runelite/cache/TextureManager.java | 9 ++++- .../definitions/providers/ItemProvider.java | 32 ++++++++++++++++++ .../definitions/providers/ModelProvider.java | 33 +++++++++++++++++++ .../definitions/providers/SpriteProvider.java | 32 ++++++++++++++++++ .../providers/TextureProvider.java | 32 ++++++++++++++++++ 7 files changed, 155 insertions(+), 5 deletions(-) create mode 100644 cache/src/main/java/net/runelite/cache/definitions/providers/ItemProvider.java create mode 100644 cache/src/main/java/net/runelite/cache/definitions/providers/ModelProvider.java create mode 100644 cache/src/main/java/net/runelite/cache/definitions/providers/SpriteProvider.java create mode 100644 cache/src/main/java/net/runelite/cache/definitions/providers/TextureProvider.java diff --git a/cache/src/main/java/net/runelite/cache/ItemManager.java b/cache/src/main/java/net/runelite/cache/ItemManager.java index ff24a24203..739b5eb84f 100644 --- a/cache/src/main/java/net/runelite/cache/ItemManager.java +++ b/cache/src/main/java/net/runelite/cache/ItemManager.java @@ -34,6 +34,7 @@ import java.util.Map; import net.runelite.cache.definitions.ItemDefinition; import net.runelite.cache.definitions.exporters.ItemExporter; import net.runelite.cache.definitions.loaders.ItemLoader; +import net.runelite.cache.definitions.providers.ItemProvider; import net.runelite.cache.fs.Archive; import net.runelite.cache.fs.ArchiveFiles; import net.runelite.cache.fs.FSFile; @@ -42,7 +43,7 @@ import net.runelite.cache.fs.Storage; import net.runelite.cache.fs.Store; import net.runelite.cache.util.Namer; -public class ItemManager +public class ItemManager implements ItemProvider { private final Store store; private final Map items = new HashMap<>(); @@ -124,4 +125,10 @@ public class ItemManager fw.println("}"); } } + + @Override + public ItemDefinition provide(int itemId) + { + return getItem(itemId); + } } diff --git a/cache/src/main/java/net/runelite/cache/SpriteManager.java b/cache/src/main/java/net/runelite/cache/SpriteManager.java index b622ae366a..a18dd4f6ba 100644 --- a/cache/src/main/java/net/runelite/cache/SpriteManager.java +++ b/cache/src/main/java/net/runelite/cache/SpriteManager.java @@ -24,7 +24,7 @@ */ package net.runelite.cache; -import com.google.common.collect.HashMultimap; +import com.google.common.collect.LinkedListMultimap; import com.google.common.collect.Multimap; import java.awt.image.BufferedImage; import java.io.File; @@ -34,15 +34,16 @@ import java.util.Collections; import net.runelite.cache.definitions.SpriteDefinition; import net.runelite.cache.definitions.exporters.SpriteExporter; import net.runelite.cache.definitions.loaders.SpriteLoader; +import net.runelite.cache.definitions.providers.SpriteProvider; import net.runelite.cache.fs.Archive; import net.runelite.cache.fs.Index; import net.runelite.cache.fs.Storage; import net.runelite.cache.fs.Store; -public class SpriteManager +public class SpriteManager implements SpriteProvider { private final Store store; - private final Multimap sprites = HashMultimap.create(); + private final Multimap sprites = LinkedListMultimap.create(); public SpriteManager(Store store) { @@ -108,4 +109,10 @@ public class SpriteManager exporter.exportTo(png); } } + + @Override + public SpriteDefinition provide(int spriteId, int frameId) + { + return findSprite(spriteId, frameId); + } } diff --git a/cache/src/main/java/net/runelite/cache/TextureManager.java b/cache/src/main/java/net/runelite/cache/TextureManager.java index 3014624b3b..9eeb3504f2 100644 --- a/cache/src/main/java/net/runelite/cache/TextureManager.java +++ b/cache/src/main/java/net/runelite/cache/TextureManager.java @@ -29,6 +29,7 @@ import java.util.ArrayList; import java.util.List; import net.runelite.cache.definitions.TextureDefinition; import net.runelite.cache.definitions.loaders.TextureLoader; +import net.runelite.cache.definitions.providers.TextureProvider; import net.runelite.cache.fs.Archive; import net.runelite.cache.fs.ArchiveFiles; import net.runelite.cache.fs.FSFile; @@ -36,7 +37,7 @@ import net.runelite.cache.fs.Index; import net.runelite.cache.fs.Storage; import net.runelite.cache.fs.Store; -public class TextureManager +public class TextureManager implements TextureProvider { private final Store store; private final List textures = new ArrayList<>(); @@ -80,4 +81,10 @@ public class TextureManager } return null; } + + @Override + public TextureDefinition[] provide() + { + return textures.toArray(new TextureDefinition[textures.size()]); + } } diff --git a/cache/src/main/java/net/runelite/cache/definitions/providers/ItemProvider.java b/cache/src/main/java/net/runelite/cache/definitions/providers/ItemProvider.java new file mode 100644 index 0000000000..7d58c98104 --- /dev/null +++ b/cache/src/main/java/net/runelite/cache/definitions/providers/ItemProvider.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2018, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (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.providers; + +import net.runelite.cache.definitions.ItemDefinition; + +public interface ItemProvider +{ + ItemDefinition provide(int itemId); +} diff --git a/cache/src/main/java/net/runelite/cache/definitions/providers/ModelProvider.java b/cache/src/main/java/net/runelite/cache/definitions/providers/ModelProvider.java new file mode 100644 index 0000000000..36a8412b81 --- /dev/null +++ b/cache/src/main/java/net/runelite/cache/definitions/providers/ModelProvider.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2018, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (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.providers; + +import java.io.IOException; +import net.runelite.cache.definitions.ModelDefinition; + +public interface ModelProvider +{ + ModelDefinition provide(int modelId) throws IOException; +} diff --git a/cache/src/main/java/net/runelite/cache/definitions/providers/SpriteProvider.java b/cache/src/main/java/net/runelite/cache/definitions/providers/SpriteProvider.java new file mode 100644 index 0000000000..f7177bd378 --- /dev/null +++ b/cache/src/main/java/net/runelite/cache/definitions/providers/SpriteProvider.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2018, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (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.providers; + +import net.runelite.cache.definitions.SpriteDefinition; + +public interface SpriteProvider +{ + SpriteDefinition provide(int spriteId, int frameId); +} diff --git a/cache/src/main/java/net/runelite/cache/definitions/providers/TextureProvider.java b/cache/src/main/java/net/runelite/cache/definitions/providers/TextureProvider.java new file mode 100644 index 0000000000..f85fec54d3 --- /dev/null +++ b/cache/src/main/java/net/runelite/cache/definitions/providers/TextureProvider.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2018, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (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.providers; + +import net.runelite.cache.definitions.TextureDefinition; + +public interface TextureProvider +{ + TextureDefinition[] provide(); +}