More cleanup. Also dump more than one image if more than one exists.
This commit is contained in:
@@ -1,141 +1,102 @@
|
|||||||
package net.runelite.cache.definitions.loaders;
|
package net.runelite.cache.definitions.loaders;
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import net.runelite.cache.definitions.SpriteDefinition;
|
import net.runelite.cache.definitions.SpriteDefinition;
|
||||||
import net.runelite.cache.io.InputStream;
|
import net.runelite.cache.io.InputStream;
|
||||||
|
|
||||||
public class SpriteLoader
|
public class SpriteLoader
|
||||||
{
|
{
|
||||||
private SpriteDefinition[] sprites;
|
private SpriteDefinition[] sprites;
|
||||||
//private List<SpriteDefinition> sprites = new HashSet<>();
|
|
||||||
// public int paletteChildCount;
|
|
||||||
// public int[] loadedSpriteOffsetX;
|
|
||||||
// public int[] loadedSpriteOffsetY;
|
|
||||||
// public int[] loadedSpriteWidth;
|
|
||||||
// public int[] loadedSpriteHeight;
|
|
||||||
// public byte[][] loadedSpritePixels;
|
|
||||||
public int[] loadedPalette;
|
|
||||||
public int loadedSpriteMaxWidth;
|
|
||||||
public int loadedSpriteMaxHeight;
|
|
||||||
|
|
||||||
//@Override
|
private int[] loadedPalette;
|
||||||
public void decode(InputStream stream)
|
private int loadedSpriteMaxWidth;
|
||||||
{
|
private int loadedSpriteMaxHeight;
|
||||||
stream.setOffset(stream.getLength() - 2);
|
|
||||||
int paletteChildCount = stream.readUnsignedShort();
|
|
||||||
sprites = new SpriteDefinition[paletteChildCount];
|
|
||||||
for (int i = 0; i < paletteChildCount; ++i)
|
|
||||||
sprites[i] = new SpriteDefinition(this);
|
|
||||||
//loadedSpriteOffsetX = new int[paletteChildCount ];
|
|
||||||
//loadedSpriteOffsetY = new int[paletteChildCount];
|
|
||||||
//loadedSpriteWidth = new int[paletteChildCount];
|
|
||||||
//loadedSpriteHeight = new int[paletteChildCount];
|
|
||||||
//loadedSpritePixels = new byte[paletteChildCount][];
|
|
||||||
stream.setOffset(stream.getLength() - 7 - paletteChildCount * 8);
|
|
||||||
loadedSpriteMaxWidth = stream.readUnsignedShort();
|
|
||||||
loadedSpriteMaxHeight = stream.readUnsignedShort();
|
|
||||||
int var3 = (stream.readUnsignedByte() & 255) + 1;
|
|
||||||
|
|
||||||
int spriteIndex;
|
public void decode(InputStream stream)
|
||||||
for(spriteIndex = 0; spriteIndex < paletteChildCount; ++spriteIndex) {
|
{
|
||||||
sprites[spriteIndex].setOffsetX(stream.readUnsignedShort());
|
stream.setOffset(stream.getLength() - 2);
|
||||||
}
|
int paletteChildCount = stream.readUnsignedShort();
|
||||||
|
sprites = new SpriteDefinition[paletteChildCount];
|
||||||
|
for (int i = 0; i < paletteChildCount; ++i)
|
||||||
|
{
|
||||||
|
sprites[i] = new SpriteDefinition(this);
|
||||||
|
}
|
||||||
|
stream.setOffset(stream.getLength() - 7 - paletteChildCount * 8);
|
||||||
|
loadedSpriteMaxWidth = stream.readUnsignedShort();
|
||||||
|
loadedSpriteMaxHeight = stream.readUnsignedShort();
|
||||||
|
int var3 = (stream.readUnsignedByte() & 255) + 1;
|
||||||
|
|
||||||
for(spriteIndex = 0; spriteIndex < paletteChildCount; ++spriteIndex) {
|
int spriteIndex;
|
||||||
sprites[spriteIndex].setOffsetY(stream.readUnsignedShort());
|
for (spriteIndex = 0; spriteIndex < paletteChildCount; ++spriteIndex)
|
||||||
}
|
{
|
||||||
|
sprites[spriteIndex].setOffsetX(stream.readUnsignedShort());
|
||||||
|
}
|
||||||
|
|
||||||
for(spriteIndex = 0; spriteIndex < paletteChildCount; ++spriteIndex) {
|
for (spriteIndex = 0; spriteIndex < paletteChildCount; ++spriteIndex)
|
||||||
sprites[spriteIndex].setWidth(stream.readUnsignedShort());
|
{
|
||||||
}
|
sprites[spriteIndex].setOffsetY(stream.readUnsignedShort());
|
||||||
|
}
|
||||||
|
|
||||||
for(spriteIndex = 0; spriteIndex < paletteChildCount; ++spriteIndex) {
|
for (spriteIndex = 0; spriteIndex < paletteChildCount; ++spriteIndex)
|
||||||
sprites[spriteIndex].setHeight(stream.readUnsignedShort());
|
{
|
||||||
}
|
sprites[spriteIndex].setWidth(stream.readUnsignedShort());
|
||||||
|
}
|
||||||
|
|
||||||
stream.setOffset(stream.getLength() - 7 - paletteChildCount * 8 - (var3 - 1) * 3);
|
for (spriteIndex = 0; spriteIndex < paletteChildCount; ++spriteIndex)
|
||||||
loadedPalette = new int[var3];
|
{
|
||||||
|
sprites[spriteIndex].setHeight(stream.readUnsignedShort());
|
||||||
|
}
|
||||||
|
|
||||||
for(spriteIndex = 1; spriteIndex < var3; ++spriteIndex) {
|
stream.setOffset(stream.getLength() - 7 - paletteChildCount * 8 - (var3 - 1) * 3);
|
||||||
loadedPalette[spriteIndex] = stream.read24BitInt();
|
loadedPalette = new int[var3];
|
||||||
if(0 == loadedPalette[spriteIndex]) {
|
|
||||||
loadedPalette[spriteIndex] = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stream.setOffset(0);
|
for (spriteIndex = 1; spriteIndex < var3; ++spriteIndex)
|
||||||
|
{
|
||||||
|
loadedPalette[spriteIndex] = stream.read24BitInt();
|
||||||
|
if (0 == loadedPalette[spriteIndex])
|
||||||
|
{
|
||||||
|
loadedPalette[spriteIndex] = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for(spriteIndex = 0; spriteIndex < paletteChildCount; ++spriteIndex) {
|
stream.setOffset(0);
|
||||||
SpriteDefinition def = sprites[spriteIndex];
|
|
||||||
int width = def.getWidth();
|
|
||||||
int height = def.getHeight();
|
|
||||||
int dimmension = width * height;
|
|
||||||
byte[] loadPixels = new byte[dimmension];
|
|
||||||
//loadedSpritePixels[spriteIndex] = loadPixels;
|
|
||||||
int var4 = stream.readUnsignedByte();
|
|
||||||
int var5;
|
|
||||||
if(var4 == 0) {
|
|
||||||
for(var5 = 0; var5 < dimmension; ++var5) {
|
|
||||||
loadPixels[var5] = (byte)stream.readByte();
|
|
||||||
}
|
|
||||||
} else if(1 == var4) {
|
|
||||||
for(var5 = 0; var5 < width; ++var5) {
|
|
||||||
for(int var8 = 0; var8 < height; ++var8) {
|
|
||||||
loadPixels[width * var8 + var5] = (byte)stream.readByte();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
def.setPixels(loadPixels);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// public static SpriteDefinition getLastLoadedPaletteSprite() {
|
for (spriteIndex = 0; spriteIndex < paletteChildCount; ++spriteIndex)
|
||||||
// SpriteDefinition paletteSprite = new SpriteDefinition(0);
|
{
|
||||||
// paletteSprite.maxWidth = loadedSpriteMaxWidth;
|
SpriteDefinition def = sprites[spriteIndex];
|
||||||
// paletteSprite.maxHeight = loadedSpriteMaxHeight;
|
int width = def.getWidth();
|
||||||
// paletteSprite.offsetX = loadedSpriteOffsetX[0];
|
int height = def.getHeight();
|
||||||
// paletteSprite.offsetY = loadedSpriteOffsetY[0];
|
int dimmension = width * height;
|
||||||
// paletteSprite.width = loadedSpriteWidth[0];
|
byte[] loadPixels = new byte[dimmension];
|
||||||
// paletteSprite.height = loadedSpriteHeight[0];
|
int var4 = stream.readUnsignedByte();
|
||||||
// paletteSprite.palette = loadedPalette;
|
int var5;
|
||||||
// paletteSprite.pixels = loadedSpritePixels[0];
|
if (var4 == 0)
|
||||||
// resetLastPaletteValues();
|
{
|
||||||
// return paletteSprite;
|
for (var5 = 0; var5 < dimmension; ++var5)
|
||||||
// }
|
{
|
||||||
//
|
loadPixels[var5] = (byte) stream.readByte();
|
||||||
// public static void resetLastPaletteValues() {
|
}
|
||||||
// loadedSpriteOffsetX = null;
|
}
|
||||||
// loadedSpriteOffsetY = null;
|
else if (1 == var4)
|
||||||
// loadedSpriteWidth = null;
|
{
|
||||||
// loadedSpriteHeight = null;
|
for (var5 = 0; var5 < width; ++var5)
|
||||||
// loadedPalette = null;
|
{
|
||||||
// loadedSpritePixels = null;
|
for (int var8 = 0; var8 < height; ++var8)
|
||||||
// }
|
{
|
||||||
//
|
loadPixels[width * var8 + var5] = (byte) stream.readByte();
|
||||||
// public static SpriteDefinition[] loadPaletteSpriteSet() {
|
}
|
||||||
// SpriteDefinition[] palettes = new SpriteDefinition[paletteChildCount];
|
}
|
||||||
// for (int paletteIndex = 0; paletteIndex < paletteChildCount; ++paletteIndex) {
|
}
|
||||||
// SpriteDefinition palette = palettes[paletteIndex] = new SpriteDefinition(0);
|
def.setPixels(loadPixels);
|
||||||
// palette.maxWidth = loadedSpriteMaxWidth;
|
}
|
||||||
// palette.maxHeight = loadedSpriteMaxHeight;
|
}
|
||||||
// palette.offsetX = loadedSpriteOffsetX[paletteIndex];
|
|
||||||
// palette.offsetY = loadedSpriteOffsetY[paletteIndex];
|
|
||||||
// palette.width = loadedSpriteWidth[paletteIndex];
|
|
||||||
// palette.height = loadedSpriteHeight[paletteIndex];
|
|
||||||
// palette.palette = loadedPalette;
|
|
||||||
// palette.pixels = loadedSpritePixels[paletteIndex];
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// resetLastPaletteValues();
|
|
||||||
// return palettes;
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
public SpriteDefinition[] getSprites()
|
public SpriteDefinition[] getSprites()
|
||||||
{
|
{
|
||||||
return sprites;
|
return sprites;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int[] getLoadedPalette()
|
||||||
|
{
|
||||||
|
return loadedPalette;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -42,23 +42,20 @@ public class SpriteLoaderTest
|
|||||||
loader.decode(new InputStream(contents));
|
loader.decode(new InputStream(contents));
|
||||||
|
|
||||||
SpriteDefinition[] defs = loader.getSprites();
|
SpriteDefinition[] defs = loader.getSprites();
|
||||||
// Assert.assertEquals(1, defs.length);
|
|
||||||
//SpriteDefinition def = new SpriteDefinition(42);
|
|
||||||
//def.decode(new InputStream(contents));
|
|
||||||
|
|
||||||
RGBSprite sp = RGBSprite.fromSpriteDefinition(defs[0]);
|
for (int i = 0; i < defs.length; ++i)
|
||||||
|
{
|
||||||
// I don't know why this happens
|
RGBSprite sp = RGBSprite.fromSpriteDefinition(defs[i]);
|
||||||
if (sp.spriteHeight <= 0 || sp.spriteWidth <= 0)
|
|
||||||
continue;
|
// I don't know why this happens
|
||||||
|
if (sp.getSpriteHeight() <= 0 || sp.getSpriteWidth() <= 0)
|
||||||
BufferedImage image = sp.getBufferedImage();
|
continue;
|
||||||
java.io.File targ = new java.io.File(base, "sprites/" + a.getArchiveId() + ".png");
|
|
||||||
targ.mkdirs();
|
BufferedImage image = sp.getBufferedImage();
|
||||||
ImageIO.write(image, "png", targ);
|
java.io.File targ = new java.io.File(base, "sprites/" + a.getArchiveId() + "-" + i + ".png");
|
||||||
//SpriteDefinition spr[] = SpriteDefinition.loadPaletteSpriteSet();
|
targ.mkdirs();
|
||||||
int i =5;
|
ImageIO.write(image, "png", targ);
|
||||||
//break;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user