Server/Client/src/main/java/org/runite/client/TextureOperation7.java
Woah 4ea451ea82 More texture stuff
Separated out Player + NPC rendering
2021-03-24 18:58:34 -04:00

605 lines
26 KiB
Java

package org.runite.client;
import org.rs09.client.data.HashTable;
import java.util.Objects;
final class TextureOperation7 extends TextureOperation {
static RSString[] aClass94Array3341 = new RSString[100];
static int anInt3342;
private int anInt3343 = 6;
final int[] method154(int var1, byte var2) {
try {
int[] var3 = this.aClass114_2382.method1709(var1);
int var4;
if(this.aClass114_2382.aBoolean1580) {
int[] var6 = this.method152(0, var1);
int[] var7 = this.method152(1, var1);
int var8 = this.anInt3343;
if(var8 == 1) {
for(var8 = 0; var8 < Class113.anInt1559; ++var8) {
var3[var8] = var7[var8] + var6[var8];
}
} else if(var8 == 2) {
for(var8 = 0; var8 < Class113.anInt1559; ++var8) {
var3[var8] = -var7[var8] + var6[var8];
}
} else if (var8 == 3) {
for (var8 = 0; Class113.anInt1559 > var8; ++var8) {
var3[var8] = var7[var8] * var6[var8] >> 12;
}
} else {
int var5;
if (var8 == 4) {
for (var8 = 0; Class113.anInt1559 > var8; ++var8) {
var5 = var7[var8];
var3[var8] = var5 != 0 ? (var6[var8] << 12) / var5 : 4096;
}
} else if (var8 == 5) {
for (var8 = 0; var8 < Class113.anInt1559; ++var8) {
var3[var8] = 4096 - ((-var6[var8] + 4096) * (-var7[var8] + 4096) >> 12);
}
} else if (var8 == 6) {
for (var8 = 0; var8 < Class113.anInt1559; ++var8) {
var5 = var7[var8];
var3[var8] = var5 >= 2048 ? -((-var6[var8] + 4096) * (4096 + -var5) >> 11) + 4096 : var5 * var6[var8] >> 11;
}
} else if (var8 == 7) {
for (var8 = 0; Class113.anInt1559 > var8; ++var8) {
var4 = var6[var8];
var3[var8] = var4 == 4096 ? 4096 : (var7[var8] << 12) / (4096 - var4);
}
} else if (var8 == 8) {
for (var8 = 0; var8 < Class113.anInt1559; ++var8) {
var4 = var6[var8];
var3[var8] = var4 != 0 ? 4096 - (-var7[var8] + 4096 << 12) / var4 : 0;
}
} else if (var8 == 9) {
for (var8 = 0; Class113.anInt1559 > var8; ++var8) {
var5 = var7[var8];
var4 = var6[var8];
var3[var8] = var5 > var4 ? var4 : var5;
}
} else if (10 == var8) {
for (var8 = 0; var8 < Class113.anInt1559; ++var8) {
var5 = var7[var8];
var4 = var6[var8];
var3[var8] = var5 < var4 ? var4 : var5;
}
} else if (var8 == 11) {
for (var8 = 0; var8 < Class113.anInt1559; ++var8) {
var4 = var6[var8];
var5 = var7[var8];
var3[var8] = var4 > var5 ? var4 + -var5 : var5 - var4;
}
} else if (var8 == 12) {
for (var8 = 0; Class113.anInt1559 > var8; ++var8) {
var4 = var6[var8];
var5 = var7[var8];
var3[var8] = var5 + (var4 - (var4 * var5 >> 11));
}
}
}
}
return var3;
} catch (RuntimeException var9) {
throw ClientErrorException.clientError(var9, "pi.D(" + var1 + ',' + var2 + ')');
}
}
final int[][] method166(int var2) {
try {
int[][] var3 = this.aClass97_2376.method1594((byte)-125, var2);
if(this.aClass97_2376.aBoolean1379) {
int[][] var10 = this.method162(var2, 0, (byte)-87);
int[][] var11 = this.method162(var2, 1, (byte)-73);
int[] var12 = var3[0];
int[] var13 = var3[1];
int[] var14 = var3[2];
int[] var15 = Objects.requireNonNull(var10)[0];
int[] var16 = var10[1];
int[] var17 = var10[2];
int[] var18 = Objects.requireNonNull(var11)[0];
int[] var19 = var11[1];
int[] var20 = var11[2];
int var21 = this.anInt3343;
if(var21 == 1) {
for(var21 = 0; var21 < Class113.anInt1559; ++var21) {
var12[var21] = var18[var21] + var15[var21];
var13[var21] = var19[var21] + var16[var21];
var14[var21] = var17[var21] - -var20[var21];
}
} else if(var21 == 2) {
for(var21 = 0; Class113.anInt1559 > var21; ++var21) {
var12[var21] = var15[var21] - var18[var21];
var13[var21] = -var19[var21] + var16[var21];
var14[var21] = -var20[var21] + var17[var21];
}
} else if(3 == var21) {
for(var21 = 0; Class113.anInt1559 > var21; ++var21) {
var12[var21] = var18[var21] * var15[var21] >> 12;
var13[var21] = var16[var21] * var19[var21] >> 12;
var14[var21] = var20[var21] * var17[var21] >> 12;
}
} else {
int var7;
int var8;
int var9;
if(var21 == 4) {
for(var21 = 0; Class113.anInt1559 > var21; ++var21) {
var9 = var20[var21];
var8 = var19[var21];
var7 = var18[var21];
var12[var21] = var7 == 0 ?4096:(var15[var21] << 12) / var7;
var13[var21] = var8 != 0 ?(var16[var21] << 12) / var8:4096;
var14[var21] = var9 != 0?(var17[var21] << 12) / var9:4096;
}
} else if(var21 == 5) {
for(var21 = 0; Class113.anInt1559 > var21; ++var21) {
var12[var21] = 4096 + -((4096 - var18[var21]) * (4096 - var15[var21]) >> 12);
var13[var21] = 4096 - ((-var19[var21] + 4096) * (-var16[var21] + 4096) >> 12);
var14[var21] = 4096 + -((-var20[var21] + 4096) * (4096 + -var17[var21]) >> 12);
}
} else if(6 == var21) {
for(var21 = 0; var21 < Class113.anInt1559; ++var21) {
var9 = var20[var21];
var7 = var18[var21];
var8 = var19[var21];
var12[var21] = var7 >= 2048 ?-((-var7 + 4096) * (-var15[var21] + 4096) >> 11) + 4096:var7 * var15[var21] >> 11;
var13[var21] = 2048 > var8?var8 * var16[var21] >> 11:4096 - ((4096 + -var8) * (-var16[var21] + 4096) >> 11);
var14[var21] = 2048 <= var9?4096 + -((4096 + -var9) * (-var17[var21] + 4096) >> 11):var17[var21] * var9 >> 11;
}
} else {
int var4;
int var5;
int var6;
if(var21 == 7) {
for(var21 = 0; Class113.anInt1559 > var21; ++var21) {
var6 = var17[var21];
var4 = var15[var21];
var5 = var16[var21];
var12[var21] = var4 == 4096 ?4096:(var18[var21] << 12) / (-var4 + 4096);
var13[var21] = var5 == 4096 ?4096:(var19[var21] << 12) / (4096 + -var5);
var14[var21] = var6 == 4096 ?4096:(var20[var21] << 12) / (4096 - var6);
}
} else if(var21 == 8) {
for(var21 = 0; Class113.anInt1559 > var21; ++var21) {
var4 = var15[var21];
var5 = var16[var21];
var6 = var17[var21];
var12[var21] = var4 == 0?0:-((-var18[var21] + 4096 << 12) / var4) + 4096;
var13[var21] = var5 == 0 ?0:-((-var19[var21] + 4096 << 12) / var5) + 4096;
var14[var21] = 0 == var6?0:4096 - (4096 - var20[var21] << 12) / var6;
}
} else if(var21 == 9) {
for(var21 = 0; Class113.anInt1559 > var21; ++var21) {
var6 = var17[var21];
var9 = var20[var21];
var8 = var19[var21];
var5 = var16[var21];
var7 = var18[var21];
var4 = var15[var21];
var12[var21] = var7 <= var4 ?var7:var4;
var13[var21] = var5 >= var8?var8:var5;
var14[var21] = var6 < var9?var6:var9;
}
} else if (10 == var21) {
for (var21 = 0; var21 < Class113.anInt1559; ++var21) {
var9 = var20[var21];
var6 = var17[var21];
var8 = var19[var21];
var4 = var15[var21];
var5 = var16[var21];
var7 = var18[var21];
var12[var21] = var7 < var4 ? var4 : var7;
var13[var21] = var5 > var8 ? var5 : var8;
var14[var21] = var6 > var9 ? var6 : var9;
}
} else if (var21 == 11) {
for (var21 = 0; Class113.anInt1559 > var21; ++var21) {
var8 = var19[var21];
var7 = var18[var21];
var5 = var16[var21];
var4 = var15[var21];
var6 = var17[var21];
var9 = var20[var21];
var12[var21] = var7 < var4 ? var4 + -var7 : -var4 + var7;
var13[var21] = var5 > var8 ? -var8 + var5 : -var5 + var8;
var14[var21] = var9 < var6 ? var6 + -var9 : -var6 + var9;
}
} else if (var21 == 12) {
for (var21 = 0; Class113.anInt1559 > var21; ++var21) {
var4 = var15[var21];
var9 = var20[var21];
var7 = var18[var21];
var8 = var19[var21];
var6 = var17[var21];
var5 = var16[var21];
var12[var21] = -(var7 * var4 >> 11) + var7 + var4;
var13[var21] = var8 + var5 + -(var5 * var8 >> 11);
var14[var21] = var9 + (var6 - (var6 * var9 >> 11));
}
}
}
}
}
return var3;
} catch (RuntimeException var22) {
throw ClientErrorException.clientError(var22, "pi.T(" + -1 + ',' + var2 + ')');
}
}
static void method297(long var0, int var2) {
try {
if(var0 != 0L) {
for(int var3 = 0; Class8.anInt104 > var3; ++var3) {
if(var0 == Class50.aLongArray826[var3]) {
--Class8.anInt104;
for(int var4 = var3; var4 < Class8.anInt104; ++var4) {
Class70.aClass94Array1046[var4] = Class70.aClass94Array1046[var4 - -1];
Unsorted.anIntArray882[var4] = Unsorted.anIntArray882[var4 + 1];
Unsorted.aClass94Array2566[var4] = Unsorted.aClass94Array2566[1 + var4];
Class50.aLongArray826[var4] = Class50.aLongArray826[1 + var4];
Class57.anIntArray904[var4] = Class57.anIntArray904[var4 - -1];
Unsorted.aBooleanArray73[var4] = Unsorted.aBooleanArray73[1 + var4];
}
Class110.anInt1472 = PacketParser.anInt3213;
TextureOperation12.outgoingBuffer.putOpcode(57);
TextureOperation12.outgoingBuffer.writeLong(var0);
break;
}
}
if(var2 != 1) {
aClass94Array3341 = null;
}
}
} catch (RuntimeException var5) {
throw ClientErrorException.clientError(var5, "pi.C(" + var0 + ',' + var2 + ')');
}
}
static Class3_Sub11[] method298(byte[][][] var0, byte[][] var1, byte[][] var2, int[][] var3, float[][] var4, int[][] var5, byte[][] var6, byte[][] var7, float[][] var8, int var9, float[][] var10, int[][] var11, int[][] var12, int[][] var13) {
try {
int[][] var15 = new int[105][105];
int var17;
for(int var16 = 1; var16 <= 103; ++var16) {
for(var17 = 1; var17 <= 103; ++var17) {
byte var18 = var2[var16][var17];
if(var18 == 0) {
var18 = var2[var16 + -1][var17];
}
if(var18 == 0) {
var18 = var2[var16][-1 + var17];
}
if(var18 == 0) {
var18 = var2[-1 + var16][var17 - 1];
}
if(0 != var18) {
MapUnderlayColorDefinition var19 = Class158_Sub1.method629(-1 + (255 & var18));
var15[var16][var17] = (1 + var19.anInt1412 << 16) - -var19.anInt1414;
}
}
}
HashTable var52 = new HashTable(128);
int var21;
int var20;
int var22;
int var56;
for(var17 = 1; var17 <= 102; ++var17) {
for(var56 = 1; 102 >= var56; ++var56) {
if(0 != var2[var17][var56]) {
int[] var53;
if(0 == var6[var17][var56]) {
var53 = Class134.anIntArrayArray1763[0];
} else {
var53 = Class25.anIntArrayArray499[var1[var17][var56]];
if(var53.length == 0) {
continue;
}
}
var20 = 0;
var21 = var15[var17][var56];
var22 = var15[var17 - -1][var56];
if(null != var5) {
var20 = var5[var17][var56] & 16777215;
}
long var27 = (long)var20 | (long)var22 << 32;
int var24 = var15[var17][var56 + 1];
int var23 = var15[var17 + 1][var56 - -1];
long var31 = (long)var24 << 32 | (long)var20;
int var33 = var53.length / 2;
long var25 = (long)var20 | (long)var21 << 32;
Class3_Sub11 var34 = (Class3_Sub11)var52.get(var25);
if(null == var34) {
var34 = new Class3_Sub11(-1 + (var21 >> 16), (float)(65535 & var21), false, null != var13, var20);
var52.put(var25, var34);
}
++var34.anInt2344;
var34.anInt2342 += var33;
if(var25 != var27) {
var34 = (Class3_Sub11)var52.get(var27);
if(var34 == null) {
var34 = new Class3_Sub11((var22 >> 16) - 1, (float)(65535 & var22), false, null != var13, var20);
var52.put(var27, var34);
}
++var34.anInt2344;
var34.anInt2342 += var33;
}
long var29 = (long)var23 << 32 | (long)var20;
if(var25 != var29 && var27 != var29) {
var34 = (Class3_Sub11)var52.get(var29);
if(var34 == null) {
var34 = new Class3_Sub11((var23 >> 16) + -1, (float)(65535 & var23), false, null != var13, var20);
var52.put(var29, var34);
}
var34.anInt2342 += var33;
++var34.anInt2344;
}
if(var25 != var31 && var31 != var27 && var31 != var29) {
var34 = (Class3_Sub11)var52.get(var31);
if(null == var34) {
var34 = new Class3_Sub11((var24 >> 16) - 1, (float)(var24 & 65535), false, null != var13, var20);
var52.put(var31, var34);
}
++var34.anInt2344;
var34.anInt2342 += var33;
}
}
}
}
if(4096 != 4096) {
method297(-10L, 48);
}
Class3_Sub11 var54;
for(var54 = (Class3_Sub11)var52.first(); var54 != null; var54 = (Class3_Sub11)var52.next()) {
var54.method145();
}
for(var17 = 1; var17 <= 102; ++var17) {
for(var56 = 1; var56 <= 102; ++var56) {
byte var57 = var2[var17][var56];
if(0 != var57) {
if((8 & var0[var9][var17][var56]) == 0) {
if((2 & var0[1][var17][var56]) == 2 && 0 < var9) {
var20 = var9 - 1;
} else {
var20 = var9;
}
} else {
var20 = 0;
}
var21 = 0;
boolean[] var60 = null;
var22 = 128;
if(null != var5) {
var22 = var5[var17][var56] >>> 24 << 3;
var21 = 16777215 & var5[var17][var56];
}
int[] var58;
int var63;
int var62;
byte var61;
int var69;
int var64;
if(var6[var17][var56] == 0) {
byte var26 = 0;
var64 = var26 + (var2[var17 - 1][-1 + var56] != var57 ?-1:1);
byte var65 = 0;
var58 = Class134.anIntArrayArray1763[0];
var62 = var65 + (var57 == var2[1 + var17][var56 + -1]?1:-1);
if(var2[var17][var56 + -1] == var57) {
++var62;
++var64;
} else {
--var64;
--var62;
}
byte var28 = 0;
var63 = var28 + (var57 == var2[1 + var17][1 + var56]?1:-1);
byte var68 = 0;
if(var2[1 + var17][var56] == var57) {
++var63;
++var62;
} else {
--var62;
--var63;
}
var69 = var68 + (var2[var17 - 1][1 + var56] == var57 ?1:-1);
if(var2[var17][1 + var56] == var57) {
++var69;
++var63;
} else {
--var63;
--var69;
}
if(var2[-1 + var17][var56] == var57) {
++var69;
++var64;
} else {
--var69;
--var64;
}
int var30 = var64 + -var63;
int var66 = -var69 + var62;
if(var66 < 0) {
var66 = -var66;
}
if(var30 < 0) {
var30 = -var30;
}
var61 = (byte)(var30 >= var66 ?0:1);
var7[var17][var56] = var61;
} else {
var58 = Class25.anIntArrayArray499[var1[var17][var56]];
var60 = TextureOperation30.aBooleanArrayArray3118[var1[var17][var56]];
var61 = var7[var17][var56];
if(var58.length == 0) {
continue;
}
}
var64 = var15[var17][var56];
var62 = var15[var17 - -1][var56];
var63 = var15[var17 - -1][var56 - -1];
long var67 = (long)var64 << 32 | (long)var21;
long var32 = (long)var62 << 32 | (long)var21;
long var70 = (long)var63 << 32 | (long)var21;
int var38 = var11[var17][var56];
var69 = var15[var17][var56 - -1];
int var40 = var11[var17 - -1][var56 - -1];
int var39 = var11[1 + var17][var56];
long var36 = (long)var21 | (long)var69 << 32;
int var41 = var11[var17][var56 + 1];
int var42 = var3[var17][var56];
int var43 = var3[var17 + 1][var56];
int var44 = var3[var17 + 1][var56 - -1];
int var45 = var3[var17][1 + var56];
int var47 = -1 + (var62 >> 16);
int var46 = (var64 >> 16) - 1;
int var48 = (var63 >> 16) - 1;
Class3_Sub11 var50 = (Class3_Sub11)var52.get(var67);
Class25.method955(var13, var64 <= var64, TextureOperation34.method190(var46, var38, (byte)-92, var42), var50, var58, var56, var20, var17, var64 <= var63, var8, var69 >= var64, 2, var4, var22, TextureOperation34.method190(var46, var41, (byte)-80, var45), TextureOperation34.method190(var46, var40, (byte)-103, var44), var62 >= var64, var12, var10, var61, TextureOperation34.method190(var46, var39, (byte)-118, var43), var60);
int var49 = (var69 >> 16) - 1;
if(var32 != var67) {
var50 = (Class3_Sub11)var52.get(var32);
Class25.method955(var13, var62 <= var64, TextureOperation34.method190(var47, var38, (byte)88, var42), var50, var58, var56, var20, var17, var63 >= var62, var8, var62 <= var69, 2, var4, var22, TextureOperation34.method190(var47, var41, (byte)-82, var45), TextureOperation34.method190(var47, var40, (byte)-113, var44), var62 <= var62, var12, var10, var61, TextureOperation34.method190(var47, var39, (byte)113, var43), var60);
}
if(var70 != var67 && var32 != var70) {
var50 = (Class3_Sub11)var52.get(var70);
Class25.method955(var13, var63 <= var64, TextureOperation34.method190(var48, var38, (byte)59, var42), var50, var58, var56, var20, var17, var63 <= var63, var8, var63 <= var69, 4096 ^ 4098, var4, var22, TextureOperation34.method190(var48, var41, (byte)54, var45), TextureOperation34.method190(var48, var40, (byte)-87, var44), var63 <= var62, var12, var10, var61, TextureOperation34.method190(var48, var39, (byte)-77, var43), var60);
}
if(var67 != var36 && var32 != var36 && var36 != var70) {
var50 = (Class3_Sub11)var52.get(var36);
Class25.method955(var13, var64 >= var69, TextureOperation34.method190(var49, var38, (byte)-118, var42), var50, var58, var56, var20, var17, var69 <= var63, var8, var69 <= var69, 4096 ^ 4098, var4, var22, TextureOperation34.method190(var49, var41, (byte)-96, var45), TextureOperation34.method190(var49, var40, (byte)115, var44), var69 <= var62, var12, var10, var61, TextureOperation34.method190(var49, var39, (byte)58, var43), var60);
}
}
}
}
for(var54 = (Class3_Sub11)var52.first(); var54 != null; var54 = (Class3_Sub11)var52.next()) {
if(var54.anInt2343 == 0) {
var54.unlink();
} else {
var54.method148();
}
}
var17 = var52.size();
Class3_Sub11[] var59 = new Class3_Sub11[var17];
var52.values(var59);
long[] var55 = new long[var17];
for(var20 = 0; var17 > var20; ++var20) {
var55[var20] = var59[var20].linkableKey;
}
PacketParser.method824(var55, var59, -86);
return var59;
} catch (RuntimeException var51) {
throw ClientErrorException.clientError(var51, "pi.E(" + (var0 != null?"{...}":"null") + ',' + (var1 != null?"{...}":"null") + ',' + (var2 != null?"{...}":"null") + ',' + (var3 != null?"{...}":"null") + ',' + (var4 != null?"{...}":"null") + ',' + (var5 != null?"{...}":"null") + ',' + (var6 != null?"{...}":"null") + ',' + (var7 != null?"{...}":"null") + ',' + (var8 != null?"{...}":"null") + ',' + var9 + ',' + (var10 != null?"{...}":"null") + ',' + (var11 != null?"{...}":"null") + ',' + (var12 != null?"{...}":"null") + ',' + (var13 != null?"{...}":"null") + ',' + 4096 + ')');
}
}
public TextureOperation7() {
super(2, false);
}
static void method299(int var0, int var1, int var2) {
try {
if(var0 <= 92) {
method297(-6L, -85);
}
int var3 = var1;
if(var1 > 25) {
var3 = 25;
}
--var1;
int var4 = TextureOperation38.anIntArray3456[var1];
int var5 = Class45.anIntArray729[var1];
if(0 == var2) {
TextureOperation12.outgoingBuffer.putOpcode(215);
TextureOperation12.outgoingBuffer.writeByte(var3 - -var3 + 3);
}
if(var2 == 1) {
TextureOperation12.outgoingBuffer.putOpcode(39);
TextureOperation12.outgoingBuffer.writeByte(3 + var3 - (-var3 - 14));
}
if(var2 == 2) {
TextureOperation12.outgoingBuffer.putOpcode(77);
TextureOperation12.outgoingBuffer.writeByte(var3 + var3 - -3);
}
TextureOperation12.outgoingBuffer.writeByte128(ObjectDefinition.aBooleanArray1490[82]?1:0);
TextureOperation12.outgoingBuffer.writeShort(Class131.anInt1716 + var4);
TextureOperation12.outgoingBuffer.putShortA(Texture.anInt1152 + var5);
Class45.anInt733 = Class45.anIntArray729[0];
Class65.anInt987 = TextureOperation38.anIntArray3456[0];
for(int var6 = 1; var3 > var6; ++var6) {
--var1;
TextureOperation12.outgoingBuffer.writeByte128(-var4 + TextureOperation38.anIntArray3456[var1]);
TextureOperation12.outgoingBuffer.write128Byte(Class45.anIntArray729[var1] + -var5);
}
} catch (RuntimeException var7) {
throw ClientErrorException.clientError(var7, "pi.O(" + var0 + ',' + var1 + ',' + var2 + ')');
}
}
final void decode(int var1, DataBuffer var2) {
try {
if(var1 == 0) {
this.anInt3343 = var2.readUnsignedByte();
} else if(var1 == 1) {
this.aBoolean2375 = var2.readUnsignedByte() == 1;
}
if(!true) {
TextCore.aClass94_3339 = null;
}
} catch (RuntimeException var5) {
throw ClientErrorException.clientError(var5, "pi.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')');
}
}
}