Files
runelite/runescape-client/src/main/java/TextureProvider.java
2019-07-08 22:52:36 +02:00

480 lines
17 KiB
Java

import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
import net.runelite.rs.ScriptOpcodes;
@ObfuscatedName("dl")
@Implements("TextureProvider")
public class TextureProvider implements TextureLoader {
@ObfuscatedName("af")
@Export("client")
@ObfuscatedSignature(
signature = "Lclient;"
)
static Client client;
@ObfuscatedName("m")
@ObfuscatedSignature(
signature = "[Ldh;"
)
@Export("textures")
Texture[] textures;
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "Lje;"
)
@Export("deque")
NodeDeque deque;
@ObfuscatedName("q")
@ObfuscatedGetter(
intValue = 762273989
)
@Export("capacity")
int capacity;
@ObfuscatedName("w")
@ObfuscatedGetter(
intValue = 1130378699
)
@Export("remaining")
int remaining;
@ObfuscatedName("o")
@Export("brightness0")
double brightness0;
@ObfuscatedName("u")
@ObfuscatedGetter(
intValue = 1124790219
)
@Export("textureSize")
int textureSize;
@ObfuscatedName("g")
@ObfuscatedSignature(
signature = "Lir;"
)
@Export("archive")
AbstractArchive archive;
@ObfuscatedSignature(
signature = "(Lir;Lir;IDI)V"
)
public TextureProvider(AbstractArchive var1, AbstractArchive var2, int var3, double var4, int var6) {
this.deque = new NodeDeque();
this.remaining = 0;
this.brightness0 = 1.0D;
this.textureSize = 128;
this.archive = var2;
this.capacity = var3;
this.remaining = this.capacity;
this.brightness0 = var4;
this.textureSize = var6;
int[] var7 = var1.method3(0);
int var8 = var7.length;
this.textures = new Texture[var1.getGroupFileCount(0)];
for (int var9 = 0; var9 < var8; ++var9) {
Buffer var10 = new Buffer(var1.takeFile(0, var7[var9]));
this.textures[var7[var9]] = new Texture(var10);
}
}
@ObfuscatedName("m")
@ObfuscatedSignature(
signature = "(I)I",
garbageValue = "-1996487053"
)
public int method323() {
int var1 = 0;
int var2 = 0;
Texture[] var3 = this.textures;
for (int var4 = 0; var4 < var3.length; ++var4) {
Texture var5 = var3[var4];
if (var5 != null && var5.records != null) {
var1 += var5.records.length;
int[] var6 = var5.records;
for (int var7 = 0; var7 < var6.length; ++var7) {
int var8 = var6[var7];
if (this.archive.method1(var8)) {
++var2;
}
}
}
}
if (var1 == 0) {
return 0;
} else {
return var2 * 100 / var1;
}
}
@ObfuscatedName("f")
@Export("setBrightness")
public void setBrightness(double brightness) {
this.brightness0 = brightness;
this.clear();
}
@ObfuscatedName("q")
@ObfuscatedSignature(
signature = "(II)[I",
garbageValue = "-905309626"
)
@Export("load")
public int[] load(int var1) {
Texture var2 = this.textures[var1];
if (var2 != null) {
if (var2.pixels != null) {
this.deque.addLast(var2);
var2.isLoaded = true;
return var2.pixels;
}
boolean var3 = var2.method320(this.brightness0, this.textureSize, this.archive);
if (var3) {
if (this.remaining == 0) {
Texture var4 = (Texture)this.deque.removeFirst();
var4.reset();
} else {
--this.remaining;
}
this.deque.addLast(var2);
var2.isLoaded = true;
return var2.pixels;
}
}
return null;
}
@ObfuscatedName("w")
@ObfuscatedSignature(
signature = "(II)I",
garbageValue = "-1641984961"
)
@Export("getAverageTextureRGB")
public int getAverageTextureRGB(int var1) {
return this.textures[var1] != null ? this.textures[var1].averageRGB : 0;
}
@ObfuscatedName("o")
@ObfuscatedSignature(
signature = "(IB)Z",
garbageValue = "14"
)
public boolean vmethod325(int var1) {
return this.textures[var1].field893;
}
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(II)Z",
garbageValue = "-1427873761"
)
@Export("isLowDetail")
public boolean isLowDetail(int var1) {
return this.textureSize == 64;
}
@ObfuscatedName("g")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "-692582552"
)
@Export("clear")
public void clear() {
for (int var1 = 0; var1 < this.textures.length; ++var1) {
if (this.textures[var1] != null) {
this.textures[var1].reset();
}
}
this.deque = new NodeDeque();
this.remaining = this.capacity;
}
@ObfuscatedName("l")
@ObfuscatedSignature(
signature = "(II)V",
garbageValue = "1044108445"
)
@Export("animate")
public void animate(int var1) {
for (int var2 = 0; var2 < this.textures.length; ++var2) {
Texture var3 = this.textures[var2];
if (var3 != null && var3.animationDirection != 0 && var3.isLoaded) {
var3.animate(var1);
var3.isLoaded = false;
}
}
}
@ObfuscatedName("m")
@ObfuscatedSignature(
signature = "(Lgr;Ljava/lang/String;B)I",
garbageValue = "16"
)
public static int method2777(Buffer var0, String var1) {
int var2 = var0.index;
byte[] var3 = class230.method4516(var1);
var0.writeSmartByteShort(var3.length);
var0.index += class303.huffman.compress(var3, 0, var3.length, var0.array, var0.index);
return var0.index - var2;
}
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(Ljava/lang/Object;ZB)[B",
garbageValue = "-8"
)
@Export("byteArrayFromObject")
public static byte[] byteArrayFromObject(Object var0, boolean copyArray) {
if (var0 == null) {
return null;
} else if (var0 instanceof byte[]) {
byte[] var5 = ((byte[])var0);
if (copyArray) {
int var3 = var5.length;
byte[] var4 = new byte[var3];
System.arraycopy(var5, 0, var4, 0, var3);
return var4;
} else {
return var5;
}
} else if (var0 instanceof AbstractByteArrayCopier) {
AbstractByteArrayCopier var2 = (AbstractByteArrayCopier)var0;
return var2.get();
} else {
throw new IllegalArgumentException();
}
}
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "([BIIB)Z",
garbageValue = "1"
)
static final boolean method2774(byte[] var0, int var1, int var2) {
boolean var3 = true;
Buffer var4 = new Buffer(var0);
int var5 = -1;
label56:
while (true) {
int var6 = var4.method49();
if (var6 == 0) {
return var3;
}
var5 += var6;
int var7 = 0;
boolean var8 = false;
while (true) {
int var13;
while (!var8) {
var13 = var4.readUShortSmart();
if (var13 == 0) {
continue label56;
}
var7 += var13 - 1;
int var14 = var7 & 63;
int var15 = var7 >> 6 & 63;
int var9 = var4.readUnsignedByte() >> 2;
int var11 = var15 + var1;
int var12 = var14 + var2;
if (var11 > 0 && var12 > 0 && var11 < 103 && var12 < 103) {
ObjectDefinition var10 = class50.getObjectDefinition(var5);
if (var9 != 22 || !Client.isLowDetail || var10.int1 != 0 || var10.interactType == 1 || var10.boolean2) {
if (!var10.method231()) {
++Client.field179;
var3 = false;
}
var8 = true;
}
}
}
var13 = var4.readUShortSmart();
if (var13 == 0) {
break;
}
var4.readUnsignedByte();
}
}
}
@ObfuscatedName("ac")
@ObfuscatedSignature(
signature = "(ILcg;ZI)I",
garbageValue = "-1177246760"
)
static int method2752(int var0, Script var1, boolean var2) {
int var3;
int var4;
if (var0 == ScriptOpcodes.ADD) {
RouteStrategy.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = var3 + var4;
return 1;
} else if (var0 == ScriptOpcodes.SUB) {
RouteStrategy.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = var3 - var4;
return 1;
} else if (var0 == ScriptOpcodes.MULTIPLY) {
RouteStrategy.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = var4 * var3;
return 1;
} else if (var0 == ScriptOpcodes.DIV) {
RouteStrategy.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = var3 / var4;
return 1;
} else if (var0 == ScriptOpcodes.RANDOM) {
var3 = Interpreter.Interpreter_intStack[--RouteStrategy.Interpreter_intStackSize];
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = (int)(Math.random() * (double)var3);
return 1;
} else if (var0 == ScriptOpcodes.RANDOMINC) {
var3 = Interpreter.Interpreter_intStack[--RouteStrategy.Interpreter_intStackSize];
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = (int)(Math.random() * (double)(var3 + 1));
return 1;
} else if (var0 == ScriptOpcodes.INTERPOLATE) {
RouteStrategy.Interpreter_intStackSize -= 5;
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
int var11 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 2];
int var6 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 3];
int var12 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 4];
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = var3 + (var12 - var11) * (var4 - var3) / (var6 - var11);
return 1;
} else if (var0 == ScriptOpcodes.ADDPERCENT) {
RouteStrategy.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = var3 + var3 * var4 / 100;
return 1;
} else if (var0 == ScriptOpcodes.SETBIT) {
RouteStrategy.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = var3 | 1 << var4;
return 1;
} else if (var0 == ScriptOpcodes.CLEARBIT) {
RouteStrategy.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = var3 & -1 - (1 << var4);
return 1;
} else if (var0 == ScriptOpcodes.TESTBIT) {
RouteStrategy.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = (var3 & 1 << var4) != 0 ? 1 : 0;
return 1;
} else if (var0 == ScriptOpcodes.MOD) {
RouteStrategy.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = var3 % var4;
return 1;
} else if (var0 == ScriptOpcodes.POW) {
RouteStrategy.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
if (var3 == 0) {
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 0;
} else {
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = (int)Math.pow((double)var3, (double)var4);
}
return 1;
} else if (var0 == ScriptOpcodes.INVPOW) {
RouteStrategy.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
if (var3 == 0) {
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 0;
return 1;
} else {
switch(var4) {
case 0:
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = Integer.MAX_VALUE;
break;
case 1:
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = var3;
break;
case 2:
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = (int)Math.sqrt((double)var3);
break;
case 3:
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = (int)Math.cbrt((double)var3);
break;
case 4:
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = (int)Math.sqrt(Math.sqrt((double)var3));
break;
default:
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = (int)Math.pow((double)var3, 1.0D / (double)var4);
}
return 1;
}
} else if (var0 == ScriptOpcodes.AND) {
RouteStrategy.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = var3 & var4;
return 1;
} else if (var0 == ScriptOpcodes.OR) {
RouteStrategy.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = var3 | var4;
return 1;
} else if (var0 == ScriptOpcodes.SCALE) {
RouteStrategy.Interpreter_intStackSize -= 3;
long var5 = (long)Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
long var7 = (long)Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
long var9 = (long)Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 2];
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = (int)(var9 * var5 / var7);
return 1;
} else {
return 2;
}
}
@ObfuscatedName("fj")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "-853047987"
)
static final void method2773() {
Client.packetWriter.close();
FontName.method5641();
class65.scene.clear();
for (int var0 = 0; var0 < 4; ++var0) {
Client.collisionMaps[var0].clear();
}
System.gc();
AbstractSocket.method3488(2);
Client.field112 = -1;
Client.field107 = false;
SpriteMask.method4390();
GameShell.updateGameState(10);
}
}