cache: expand on texture definition and loader
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user