cache: expand on texture definition and loader

This commit is contained in:
Adam
2018-03-17 21:09:23 -04:00
parent 735052232c
commit beb9d3a27a
2 changed files with 147 additions and 1 deletions

View File

@@ -26,10 +26,125 @@
package net.runelite.cache.definitions;
import lombok.Data;
import net.runelite.cache.definitions.providers.SpriteProvider;
@Data
public class TextureDefinition
{
public int field1777;
public boolean field1778;
private int id;
private int[] fileIds;
public int[] field1780;
public int[] field1781;
public int[] field1786;
public int field1782;
public int field1783;
public transient int[] pixels;
public boolean method2680(double var1, int var3, SpriteProvider spriteProvider)
{
int var5 = var3 * var3;
this.pixels = new int[var5];
for (int var6 = 0; var6 < this.fileIds.length; ++var6)
{
SpriteDefinition var7 = spriteProvider.provide(fileIds[var6], 0);
var7.normalize();
byte[] var8 = var7.pixelIdx;
int[] var9 = var7.palette;
int var10 = this.field1786[var6];
int var11;
int var12;
int var13;
int var14;
if ((var10 & -16777216) == 50331648)
{
var11 = var10 & 16711935;
var12 = var10 >> 8 & 255;
for (var13 = 0; var13 < var9.length; ++var13)
{
var14 = var9[var13];
if (var14 >> 8 == (var14 & 65535))
{
var14 &= 255;
var9[var13] = var11 * var14 >> 8 & 16711935 | var12 * var14 & 65280;
}
}
}
for (var11 = 0; var11 < var9.length; ++var11)
{
var9[var11] = adjustRGB(var9[var11], var1);
}
if (var6 == 0)
{
var11 = 0;
}
else
{
var11 = this.field1780[var6 - 1];
}
if (var11 == 0)
{
if (var3 == var7.getMaxWidth())
{
for (var12 = 0; var12 < var5; ++var12)
{
this.pixels[var12] = var9[var8[var12] & 255];
}
}
else if (var7.getMaxWidth() == 64 && var3 == 128)
{
var12 = 0;
for (var13 = 0; var13 < var3; ++var13)
{
for (var14 = 0; var14 < var3; ++var14)
{
this.pixels[var12++] = var9[var8[(var13 >> 1 << 6) + (var14 >> 1)] & 255];
}
}
}
else
{
if (var7.getMaxWidth() != 128 || var3 != 64)
{
throw new RuntimeException();
}
var12 = 0;
for (var13 = 0; var13 < var3; ++var13)
{
for (var14 = 0; var14 < var3; ++var14)
{
this.pixels[var12++] = var9[var8[(var14 << 1) + (var13 << 1 << 7)] & 255];
}
}
}
}
}
return true;
}
static int adjustRGB(int var0, double var1)
{
double var3 = (double) (var0 >> 16) / 256.0D;
double var5 = (double) (var0 >> 8 & 255) / 256.0D;
double var7 = (double) (var0 & 255) / 256.0D;
var3 = Math.pow(var3, var1);
var5 = Math.pow(var5, var1);
var7 = Math.pow(var7, var1);
int var9 = (int) (var3 * 256.0D);
int var10 = (int) (var5 * 256.0D);
int var11 = (int) (var7 * 256.0D);
return var11 + (var10 << 8) + (var9 << 16);
}
}

View File

@@ -38,7 +38,8 @@ public class TextureLoader
TextureDefinition def = new TextureDefinition();
InputStream is = new InputStream(b);
is.skip(3);
def.field1777 = is.readUnsignedShort();
def.field1778 = is.readByte() != 0;
def.setId(id);
int count = is.readUnsignedByte();
@@ -49,6 +50,36 @@ public class TextureLoader
def.setFileIds(files);
if (count > 1)
{
def.field1780 = new int[count - 1];
for (int var3 = 0; var3 < count - 1; ++var3)
{
def.field1780[var3] = is.readUnsignedByte();
}
}
if (count > 1)
{
def.field1781 = new int[count - 1];
for (int var3 = 0; var3 < count - 1; ++var3)
{
def.field1781[var3] = is.readUnsignedByte();
}
}
def.field1786 = new int[count];
for (int var3 = 0; var3 < count; ++var3)
{
def.field1786[var3] = is.readInt();
}
def.field1783 = is.readUnsignedByte();
def.field1782 = is.readUnsignedByte();
return def;
}
}