397 lines
9.4 KiB
Java
397 lines
9.4 KiB
Java
import java.util.zip.CRC32;
|
|
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;
|
|
|
|
@ObfuscatedName("io")
|
|
@Implements("Archive")
|
|
public class Archive extends AbstractArchive {
|
|
@ObfuscatedName("ao")
|
|
@Export("Archive_crc")
|
|
static CRC32 Archive_crc;
|
|
@ObfuscatedName("m")
|
|
@ObfuscatedSignature(
|
|
signature = "Lkx;"
|
|
)
|
|
@Export("archiveDisk")
|
|
ArchiveDisk archiveDisk;
|
|
@ObfuscatedName("o")
|
|
@ObfuscatedSignature(
|
|
signature = "Lkx;"
|
|
)
|
|
@Export("masterDisk")
|
|
ArchiveDisk masterDisk;
|
|
@ObfuscatedName("a")
|
|
@ObfuscatedGetter(
|
|
intValue = 1156949557
|
|
)
|
|
@Export("index")
|
|
int index;
|
|
@ObfuscatedName("b")
|
|
volatile boolean field3128;
|
|
@ObfuscatedName("ag")
|
|
boolean field3132;
|
|
@ObfuscatedName("at")
|
|
@Export("validGroups")
|
|
volatile boolean[] validGroups;
|
|
@ObfuscatedName("av")
|
|
@ObfuscatedGetter(
|
|
intValue = -1676614799
|
|
)
|
|
@Export("indexCrc")
|
|
int indexCrc;
|
|
@ObfuscatedName("an")
|
|
@ObfuscatedGetter(
|
|
intValue = 1205835049
|
|
)
|
|
@Export("indexVersion")
|
|
int indexVersion;
|
|
@ObfuscatedName("al")
|
|
@ObfuscatedGetter(
|
|
intValue = 668240441
|
|
)
|
|
int field3137;
|
|
|
|
static {
|
|
Archive_crc = new CRC32();
|
|
}
|
|
|
|
@ObfuscatedSignature(
|
|
signature = "(Lkx;Lkx;IZZZ)V"
|
|
)
|
|
public Archive(ArchiveDisk var1, ArchiveDisk var2, int var3, boolean var4, boolean var5, boolean var6) {
|
|
super(var4, var5);
|
|
this.field3128 = false;
|
|
this.field3132 = false;
|
|
this.field3137 = -1;
|
|
this.archiveDisk = var1;
|
|
this.masterDisk = var2;
|
|
this.index = var3;
|
|
this.field3132 = var6;
|
|
int var8 = this.index;
|
|
if (DevicePcmPlayerProvider.NetCache_reference != null) {
|
|
DevicePcmPlayerProvider.NetCache_reference.offset = var8 * 8 + 5;
|
|
int var9 = DevicePcmPlayerProvider.NetCache_reference.readInt();
|
|
int var10 = DevicePcmPlayerProvider.NetCache_reference.readInt();
|
|
this.loadIndex(var9, var10);
|
|
} else {
|
|
Varps.requestNetFile((Archive)null, 255, 255, 0, (byte)0, true);
|
|
NetCache.NetCache_archives[var8] = this;
|
|
}
|
|
|
|
}
|
|
|
|
@ObfuscatedName("x")
|
|
@ObfuscatedSignature(
|
|
signature = "(II)V",
|
|
garbageValue = "-2104600002"
|
|
)
|
|
@Export("loadRegionFromGroup")
|
|
void loadRegionFromGroup(int var1) {
|
|
int var2 = this.index;
|
|
long var3 = (long)((var2 << 16) + var1);
|
|
NetFileRequest var5 = (NetFileRequest)NetCache.NetCache_pendingWrites.get(var3);
|
|
if (var5 != null) {
|
|
NetCache.NetCache_pendingWritesQueue.addLast(var5);
|
|
}
|
|
|
|
}
|
|
|
|
@ObfuscatedName("d")
|
|
@ObfuscatedSignature(
|
|
signature = "(II)I",
|
|
garbageValue = "780456172"
|
|
)
|
|
@Export("groupLoadPercent")
|
|
int groupLoadPercent(int var1) {
|
|
if (super.groups[var1] != null) {
|
|
return 100;
|
|
} else if (this.validGroups[var1]) {
|
|
return 100;
|
|
} else {
|
|
int var3 = this.index;
|
|
long var4 = (long)((var3 << 16) + var1);
|
|
int var2;
|
|
if (NetCache.NetCache_currentResponse != null && NetCache.NetCache_currentResponse.key == var4) {
|
|
var2 = class336.NetCache_responseArchiveBuffer.offset * 99 / (class336.NetCache_responseArchiveBuffer.array.length - NetCache.NetCache_currentResponse.padding) + 1;
|
|
} else {
|
|
var2 = 0;
|
|
}
|
|
|
|
return var2;
|
|
}
|
|
}
|
|
|
|
@ObfuscatedName("e")
|
|
@ObfuscatedSignature(
|
|
signature = "(II)V",
|
|
garbageValue = "2123503233"
|
|
)
|
|
@Export("loadGroup")
|
|
void loadGroup(int var1) {
|
|
if (this.archiveDisk != null && this.validGroups != null && this.validGroups[var1]) {
|
|
PlayerType.method4120(var1, this.archiveDisk, this);
|
|
} else {
|
|
Varps.requestNetFile(this, this.index, var1, super.groupCrcs[var1], (byte)2, true);
|
|
}
|
|
|
|
}
|
|
|
|
@ObfuscatedName("dh")
|
|
@ObfuscatedSignature(
|
|
signature = "(I)Z",
|
|
garbageValue = "1760954432"
|
|
)
|
|
public boolean method4265() {
|
|
return this.field3128;
|
|
}
|
|
|
|
@ObfuscatedName("do")
|
|
@ObfuscatedSignature(
|
|
signature = "(I)I",
|
|
garbageValue = "-185115723"
|
|
)
|
|
@Export("percentage")
|
|
public int percentage() {
|
|
if (this.field3128) {
|
|
return 100;
|
|
} else if (super.groups != null) {
|
|
return 99;
|
|
} else {
|
|
int var2 = this.index;
|
|
long var3 = (long)(var2 + 16711680);
|
|
int var1;
|
|
if (NetCache.NetCache_currentResponse != null && var3 == NetCache.NetCache_currentResponse.key) {
|
|
var1 = class336.NetCache_responseArchiveBuffer.offset * 99 / (class336.NetCache_responseArchiveBuffer.array.length - NetCache.NetCache_currentResponse.padding) + 1;
|
|
} else {
|
|
var1 = 0;
|
|
}
|
|
|
|
int var5 = var1;
|
|
if (var1 >= 100) {
|
|
var5 = 99;
|
|
}
|
|
|
|
return var5;
|
|
}
|
|
}
|
|
|
|
@ObfuscatedName("dm")
|
|
@ObfuscatedSignature(
|
|
signature = "(III)V",
|
|
garbageValue = "-288401160"
|
|
)
|
|
@Export("loadIndex")
|
|
void loadIndex(int var1, int var2) {
|
|
this.indexCrc = var1;
|
|
this.indexVersion = var2;
|
|
if (this.masterDisk != null) {
|
|
PlayerType.method4120(this.index, this.masterDisk, this);
|
|
} else {
|
|
Varps.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
|
|
}
|
|
|
|
}
|
|
|
|
@ObfuscatedName("dy")
|
|
@ObfuscatedSignature(
|
|
signature = "(I[BZZB)V",
|
|
garbageValue = "-101"
|
|
)
|
|
@Export("write")
|
|
void write(int var1, byte[] var2, boolean var3, boolean var4) {
|
|
if (var3) {
|
|
if (this.field3128) {
|
|
throw new RuntimeException();
|
|
}
|
|
|
|
if (this.masterDisk != null) {
|
|
class96.method2259(this.index, var2, this.masterDisk);
|
|
}
|
|
|
|
this.decodeIndex(var2);
|
|
this.loadAllLocal();
|
|
} else {
|
|
var2[var2.length - 2] = (byte)(super.groupVersions[var1] >> 8);
|
|
var2[var2.length - 1] = (byte)super.groupVersions[var1];
|
|
if (this.archiveDisk != null) {
|
|
class96.method2259(var1, var2, this.archiveDisk);
|
|
this.validGroups[var1] = true;
|
|
}
|
|
|
|
if (var4) {
|
|
super.groups[var1] = UserComparator8.method3365(var2, false);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
@ObfuscatedName("dd")
|
|
@ObfuscatedSignature(
|
|
signature = "(Lkx;I[BZI)V",
|
|
garbageValue = "-1896487213"
|
|
)
|
|
@Export("load")
|
|
void load(ArchiveDisk var1, int var2, byte[] var3, boolean var4) {
|
|
int var5;
|
|
if (var1 == this.masterDisk) {
|
|
if (this.field3128) {
|
|
throw new RuntimeException();
|
|
} else if (var3 == null) {
|
|
Varps.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
|
|
} else {
|
|
Archive_crc.reset();
|
|
Archive_crc.update(var3, 0, var3.length);
|
|
var5 = (int)Archive_crc.getValue();
|
|
if (var5 != this.indexCrc) {
|
|
Varps.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
|
|
} else {
|
|
Buffer var9 = new Buffer(TaskHandler.decompressBytes(var3));
|
|
int var7 = var9.readUnsignedByte();
|
|
if (var7 != 5 && var7 != 6) {
|
|
throw new RuntimeException(var7 + "," + this.index + "," + var2);
|
|
} else {
|
|
int var8 = 0;
|
|
if (var7 >= 6) {
|
|
var8 = var9.readInt();
|
|
}
|
|
|
|
if (var8 != this.indexVersion) {
|
|
Varps.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
|
|
} else {
|
|
this.decodeIndex(var3);
|
|
this.loadAllLocal();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (!var4 && var2 == this.field3137) {
|
|
this.field3128 = true;
|
|
}
|
|
|
|
if (var3 != null && var3.length > 2) {
|
|
Archive_crc.reset();
|
|
Archive_crc.update(var3, 0, var3.length - 2);
|
|
var5 = (int)Archive_crc.getValue();
|
|
int var6 = ((var3[var3.length - 2] & 255) << 8) + (var3[var3.length - 1] & 255);
|
|
if (var5 == super.groupCrcs[var2] && var6 == super.groupVersions[var2]) {
|
|
this.validGroups[var2] = true;
|
|
if (var4) {
|
|
super.groups[var2] = UserComparator8.method3365(var3, false);
|
|
}
|
|
|
|
} else {
|
|
this.validGroups[var2] = false;
|
|
if (this.field3132 || var4) {
|
|
Varps.requestNetFile(this, this.index, var2, super.groupCrcs[var2], (byte)2, var4);
|
|
}
|
|
|
|
}
|
|
} else {
|
|
this.validGroups[var2] = false;
|
|
if (this.field3132 || var4) {
|
|
Varps.requestNetFile(this, this.index, var2, super.groupCrcs[var2], (byte)2, var4);
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
@ObfuscatedName("dp")
|
|
@ObfuscatedSignature(
|
|
signature = "(I)V",
|
|
garbageValue = "-1002718108"
|
|
)
|
|
@Export("loadAllLocal")
|
|
void loadAllLocal() {
|
|
this.validGroups = new boolean[super.groups.length];
|
|
|
|
int var1;
|
|
for (var1 = 0; var1 < this.validGroups.length; ++var1) {
|
|
this.validGroups[var1] = false;
|
|
}
|
|
|
|
if (this.archiveDisk == null) {
|
|
this.field3128 = true;
|
|
} else {
|
|
this.field3137 = -1;
|
|
|
|
for (var1 = 0; var1 < this.validGroups.length; ++var1) {
|
|
if (super.fileCounts[var1] > 0) {
|
|
Friend.method5190(var1, this.archiveDisk, this);
|
|
this.field3137 = var1;
|
|
}
|
|
}
|
|
|
|
if (this.field3137 == -1) {
|
|
this.field3128 = true;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
@ObfuscatedName("dn")
|
|
@ObfuscatedSignature(
|
|
signature = "(II)Z",
|
|
garbageValue = "305356325"
|
|
)
|
|
public boolean method4283(int var1) {
|
|
return this.validGroups[var1];
|
|
}
|
|
|
|
@ObfuscatedName("de")
|
|
@ObfuscatedSignature(
|
|
signature = "(II)Z",
|
|
garbageValue = "-1930544538"
|
|
)
|
|
public boolean method4261(int var1) {
|
|
return this.getGroupFileIds(var1) != null;
|
|
}
|
|
|
|
@ObfuscatedName("da")
|
|
@ObfuscatedSignature(
|
|
signature = "(B)I",
|
|
garbageValue = "64"
|
|
)
|
|
@Export("loadPercent")
|
|
public int loadPercent() {
|
|
int var1 = 0;
|
|
int var2 = 0;
|
|
|
|
int var3;
|
|
for (var3 = 0; var3 < super.groups.length; ++var3) {
|
|
if (super.fileCounts[var3] > 0) {
|
|
var1 += 100;
|
|
var2 += this.groupLoadPercent(var3);
|
|
}
|
|
}
|
|
|
|
if (var1 == 0) {
|
|
return 100;
|
|
} else {
|
|
var3 = var2 * 100 / var1;
|
|
return var3;
|
|
}
|
|
}
|
|
|
|
@ObfuscatedName("j")
|
|
@ObfuscatedSignature(
|
|
signature = "(Ljava/lang/CharSequence;I)I",
|
|
garbageValue = "1683994137"
|
|
)
|
|
@Export("hashString")
|
|
public static int hashString(CharSequence var0) {
|
|
int var1 = var0.length();
|
|
int var2 = 0;
|
|
|
|
for (int var3 = 0; var3 < var1; ++var3) {
|
|
var2 = (var2 << 5) - var2 + MenuAction.charToByteCp1252(var0.charAt(var3));
|
|
}
|
|
|
|
return var2;
|
|
}
|
|
}
|