463 lines
13 KiB
Java
463 lines
13 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("ji")
|
|
@Implements("Archive")
|
|
public class Archive extends AbstractArchive {
|
|
@ObfuscatedName("b")
|
|
@Export("Archive_crc")
|
|
static CRC32 Archive_crc;
|
|
@ObfuscatedName("fs")
|
|
@ObfuscatedSignature(
|
|
descriptor = "Lek;"
|
|
)
|
|
@Export("socketTask")
|
|
static Task socketTask;
|
|
@ObfuscatedName("o")
|
|
@ObfuscatedSignature(
|
|
descriptor = "Llw;"
|
|
)
|
|
@Export("archiveDisk")
|
|
ArchiveDisk archiveDisk;
|
|
@ObfuscatedName("g")
|
|
@ObfuscatedSignature(
|
|
descriptor = "Llw;"
|
|
)
|
|
@Export("masterDisk")
|
|
ArchiveDisk masterDisk;
|
|
@ObfuscatedName("l")
|
|
@ObfuscatedGetter(
|
|
intValue = 549068495
|
|
)
|
|
@Export("index")
|
|
int index;
|
|
@ObfuscatedName("z")
|
|
volatile boolean field3586;
|
|
@ObfuscatedName("t")
|
|
boolean field3583;
|
|
@ObfuscatedName("v")
|
|
@Export("validGroups")
|
|
volatile boolean[] validGroups;
|
|
@ObfuscatedName("q")
|
|
@ObfuscatedGetter(
|
|
intValue = -780107283
|
|
)
|
|
@Export("indexCrc")
|
|
int indexCrc;
|
|
@ObfuscatedName("i")
|
|
@ObfuscatedGetter(
|
|
intValue = 519027849
|
|
)
|
|
@Export("indexVersion")
|
|
int indexVersion;
|
|
@ObfuscatedName("x")
|
|
@ObfuscatedGetter(
|
|
intValue = -228949089
|
|
)
|
|
int field3588;
|
|
|
|
static {
|
|
Archive_crc = new CRC32(); // L: 17
|
|
}
|
|
|
|
@ObfuscatedSignature(
|
|
descriptor = "(Llw;Llw;IZZZ)V"
|
|
)
|
|
public Archive(ArchiveDisk var1, ArchiveDisk var2, int var3, boolean var4, boolean var5, boolean var6) {
|
|
super(var4, var5); // L: 23
|
|
this.field3586 = false;
|
|
this.field3583 = false;
|
|
this.field3588 = -1; // L: 20
|
|
this.archiveDisk = var1; // L: 24
|
|
this.masterDisk = var2; // L: 25
|
|
this.index = var3; // L: 26
|
|
this.field3583 = var6; // L: 27
|
|
int var8 = this.index; // L: 29
|
|
if (SecureRandomCallable.NetCache_reference != null) { // L: 31
|
|
SecureRandomCallable.NetCache_reference.offset = var8 * 8 + 5; // L: 32
|
|
int var9 = SecureRandomCallable.NetCache_reference.readInt(); // L: 33
|
|
int var10 = SecureRandomCallable.NetCache_reference.readInt(); // L: 34
|
|
this.loadIndex(var9, var10); // L: 35
|
|
} else {
|
|
class25.requestNetFile((Archive)null, 255, 255, 0, (byte)0, true); // L: 38
|
|
NetCache.NetCache_archives[var8] = this; // L: 39
|
|
}
|
|
|
|
} // L: 41
|
|
|
|
@ObfuscatedName("h")
|
|
@ObfuscatedSignature(
|
|
descriptor = "(I)Z",
|
|
garbageValue = "1381527767"
|
|
)
|
|
public boolean method4822() {
|
|
return this.field3586; // L: 44
|
|
}
|
|
|
|
@ObfuscatedName("c")
|
|
@ObfuscatedSignature(
|
|
descriptor = "(I)I",
|
|
garbageValue = "475592211"
|
|
)
|
|
@Export("percentage")
|
|
public int percentage() {
|
|
if (this.field3586) { // L: 48
|
|
return 100;
|
|
} else if (super.groups != null) { // L: 49
|
|
return 99;
|
|
} else {
|
|
int var2 = this.index; // L: 51
|
|
long var3 = (long)(var2 + 16711680); // L: 53
|
|
int var1;
|
|
if (class7.NetCache_currentResponse != null && var3 == class7.NetCache_currentResponse.key) { // L: 54
|
|
var1 = NetCache.NetCache_responseArchiveBuffer.offset * 99 / (NetCache.NetCache_responseArchiveBuffer.array.length - class7.NetCache_currentResponse.padding) + 1; // L: 58
|
|
} else {
|
|
var1 = 0; // L: 55
|
|
}
|
|
|
|
int var5 = var1; // L: 60
|
|
if (var1 >= 100) { // L: 61
|
|
var5 = 99;
|
|
}
|
|
|
|
return var5; // L: 62
|
|
}
|
|
}
|
|
|
|
@ObfuscatedName("o")
|
|
@ObfuscatedSignature(
|
|
descriptor = "(II)V",
|
|
garbageValue = "-1103942204"
|
|
)
|
|
@Export("loadRegionFromGroup")
|
|
void loadRegionFromGroup(int var1) {
|
|
int var2 = this.index; // L: 66
|
|
long var3 = (long)((var2 << 16) + var1); // L: 68
|
|
NetFileRequest var5 = (NetFileRequest)NetCache.NetCache_pendingWrites.get(var3); // L: 69
|
|
if (var5 != null) { // L: 70
|
|
NetCache.NetCache_pendingWritesQueue.addLast(var5); // L: 71
|
|
}
|
|
|
|
} // L: 73
|
|
|
|
@ObfuscatedName("g")
|
|
@ObfuscatedSignature(
|
|
descriptor = "(II)V",
|
|
garbageValue = "1184960922"
|
|
)
|
|
@Export("loadGroup")
|
|
void loadGroup(int var1) {
|
|
if (this.archiveDisk != null && this.validGroups != null && this.validGroups[var1]) { // L: 76
|
|
ArchiveDisk var2 = this.archiveDisk; // L: 77
|
|
byte[] var4 = null; // L: 80
|
|
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) { // L: 81
|
|
for (ArchiveDiskAction var6 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.last(); var6 != null; var6 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.previous()) { // L: 82
|
|
if (var6.key == (long)var1 && var2 == var6.archiveDisk && var6.type == 0) { // L: 83
|
|
var4 = var6.data; // L: 84
|
|
break; // L: 85
|
|
}
|
|
}
|
|
}
|
|
|
|
if (var4 != null) { // L: 89
|
|
this.load(var2, var1, var4, true); // L: 90
|
|
} else {
|
|
byte[] var5 = var2.read(var1); // L: 93
|
|
this.load(var2, var1, var5, true); // L: 94
|
|
}
|
|
} else {
|
|
class25.requestNetFile(this, this.index, var1, super.groupCrcs[var1], (byte)2, true); // L: 97
|
|
}
|
|
|
|
} // L: 98
|
|
|
|
@ObfuscatedName("l")
|
|
@ObfuscatedSignature(
|
|
descriptor = "(IIB)V",
|
|
garbageValue = "-29"
|
|
)
|
|
@Export("loadIndex")
|
|
void loadIndex(int var1, int var2) {
|
|
this.indexCrc = var1; // L: 101
|
|
this.indexVersion = var2; // L: 102
|
|
if (this.masterDisk != null) { // L: 103
|
|
int var3 = this.index; // L: 104
|
|
ArchiveDisk var4 = this.masterDisk; // L: 105
|
|
byte[] var6 = null; // L: 108
|
|
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) { // L: 109
|
|
for (ArchiveDiskAction var8 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.last(); var8 != null; var8 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.previous()) { // L: 110
|
|
if ((long)var3 == var8.key && var4 == var8.archiveDisk && var8.type == 0) { // L: 111
|
|
var6 = var8.data; // L: 112
|
|
break; // L: 113
|
|
}
|
|
}
|
|
}
|
|
|
|
if (var6 != null) { // L: 117
|
|
this.load(var4, var3, var6, true); // L: 118
|
|
} else {
|
|
byte[] var7 = var4.read(var3); // L: 121
|
|
this.load(var4, var3, var7, true); // L: 122
|
|
}
|
|
} else {
|
|
class25.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true); // L: 125
|
|
}
|
|
|
|
} // L: 126
|
|
|
|
@ObfuscatedName("z")
|
|
@ObfuscatedSignature(
|
|
descriptor = "(I[BZZS)V",
|
|
garbageValue = "-32096"
|
|
)
|
|
@Export("write")
|
|
void write(int var1, byte[] var2, boolean var3, boolean var4) {
|
|
if (var3) { // L: 129
|
|
if (this.field3586) { // L: 130
|
|
throw new RuntimeException(); // L: 131
|
|
}
|
|
|
|
if (this.masterDisk != null) { // L: 133
|
|
int var5 = this.index; // L: 134
|
|
ArchiveDisk var6 = this.masterDisk; // L: 135
|
|
ArchiveDiskAction var7 = new ArchiveDiskAction(); // L: 137
|
|
var7.type = 0; // L: 138
|
|
var7.key = (long)var5; // L: 139
|
|
var7.data = var2; // L: 140
|
|
var7.archiveDisk = var6; // L: 141
|
|
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) { // L: 142
|
|
ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.addFirst(var7); // L: 143
|
|
} // L: 144
|
|
|
|
class43.method486(); // L: 145
|
|
}
|
|
|
|
this.decodeIndex(var2); // L: 148
|
|
this.loadAllLocal(); // L: 149
|
|
} else {
|
|
var2[var2.length - 2] = (byte)(super.groupVersions[var1] >> 8); // L: 152
|
|
var2[var2.length - 1] = (byte)super.groupVersions[var1]; // L: 153
|
|
if (this.archiveDisk != null) { // L: 154
|
|
ArchiveDisk var11 = this.archiveDisk; // L: 155
|
|
ArchiveDiskAction var14 = new ArchiveDiskAction(); // L: 157
|
|
var14.type = 0; // L: 158
|
|
var14.key = (long)var1; // L: 159
|
|
var14.data = var2; // L: 160
|
|
var14.archiveDisk = var11; // L: 161
|
|
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) { // L: 162
|
|
ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.addFirst(var14); // L: 163
|
|
} // L: 164
|
|
|
|
class43.method486(); // L: 165
|
|
this.validGroups[var1] = true; // L: 167
|
|
}
|
|
|
|
if (var4) {
|
|
super.groups[var1] = class34.method388(var2, false); // L: 169
|
|
}
|
|
}
|
|
|
|
} // L: 171
|
|
|
|
@ObfuscatedName("t")
|
|
@ObfuscatedSignature(
|
|
descriptor = "(Llw;I[BZI)V",
|
|
garbageValue = "-1720270185"
|
|
)
|
|
@Export("load")
|
|
void load(ArchiveDisk var1, int var2, byte[] var3, boolean var4) {
|
|
int var5;
|
|
if (var1 == this.masterDisk) { // L: 174
|
|
if (this.field3586) { // L: 175
|
|
throw new RuntimeException(); // L: 176
|
|
}
|
|
|
|
if (var3 == null) { // L: 178
|
|
class25.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true); // L: 179
|
|
return; // L: 180
|
|
}
|
|
|
|
Archive_crc.reset(); // L: 182
|
|
Archive_crc.update(var3, 0, var3.length); // L: 183
|
|
var5 = (int)Archive_crc.getValue(); // L: 184
|
|
if (var5 != this.indexCrc) { // L: 185
|
|
class25.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true); // L: 186
|
|
return; // L: 187
|
|
}
|
|
|
|
Buffer var9 = new Buffer(ObjectSound.decompressBytes(var3)); // L: 189
|
|
int var7 = var9.readUnsignedByte(); // L: 190
|
|
if (var7 != 5 && var7 != 6) { // L: 191
|
|
throw new RuntimeException(var7 + "," + this.index + "," + var2);
|
|
}
|
|
|
|
int var8 = 0; // L: 192
|
|
if (var7 >= 6) { // L: 193
|
|
var8 = var9.readInt();
|
|
}
|
|
|
|
if (var8 != this.indexVersion) { // L: 194
|
|
class25.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true); // L: 195
|
|
return; // L: 196
|
|
}
|
|
|
|
this.decodeIndex(var3); // L: 198
|
|
this.loadAllLocal(); // L: 199
|
|
} else {
|
|
if (!var4 && var2 == this.field3588) { // L: 202
|
|
this.field3586 = true; // L: 203
|
|
}
|
|
|
|
if (var3 == null || var3.length <= 2) { // L: 205
|
|
this.validGroups[var2] = false; // L: 206
|
|
if (this.field3583 || var4) { // L: 207
|
|
class25.requestNetFile(this, this.index, var2, super.groupCrcs[var2], (byte)2, var4);
|
|
}
|
|
|
|
return; // L: 208
|
|
}
|
|
|
|
Archive_crc.reset(); // L: 210
|
|
Archive_crc.update(var3, 0, var3.length - 2); // L: 211
|
|
var5 = (int)Archive_crc.getValue(); // L: 212
|
|
int var6 = ((var3[var3.length - 2] & 255) << 8) + (var3[var3.length - 1] & 255); // L: 213
|
|
if (var5 != super.groupCrcs[var2] || var6 != super.groupVersions[var2]) { // L: 214
|
|
this.validGroups[var2] = false; // L: 215
|
|
if (this.field3583 || var4) { // L: 216
|
|
class25.requestNetFile(this, this.index, var2, super.groupCrcs[var2], (byte)2, var4);
|
|
}
|
|
|
|
return; // L: 217
|
|
}
|
|
|
|
this.validGroups[var2] = true; // L: 219
|
|
if (var4) { // L: 220
|
|
super.groups[var2] = class34.method388(var3, false);
|
|
}
|
|
}
|
|
|
|
} // L: 222
|
|
|
|
@ObfuscatedName("v")
|
|
@ObfuscatedSignature(
|
|
descriptor = "(I)V",
|
|
garbageValue = "-117239087"
|
|
)
|
|
@Export("loadAllLocal")
|
|
void loadAllLocal() {
|
|
this.validGroups = new boolean[super.groups.length]; // L: 225
|
|
|
|
int var1;
|
|
for (var1 = 0; var1 < this.validGroups.length; ++var1) { // L: 226
|
|
this.validGroups[var1] = false;
|
|
}
|
|
|
|
if (this.archiveDisk == null) { // L: 227
|
|
this.field3586 = true; // L: 228
|
|
} else {
|
|
this.field3588 = -1; // L: 231
|
|
|
|
for (var1 = 0; var1 < this.validGroups.length; ++var1) { // L: 232
|
|
if (super.fileCounts[var1] > 0) { // L: 233
|
|
GrandExchangeOfferNameComparator.method4987(var1, this.archiveDisk, this); // L: 234
|
|
this.field3588 = var1; // L: 235
|
|
}
|
|
}
|
|
|
|
if (this.field3588 == -1) { // L: 238
|
|
this.field3586 = true;
|
|
}
|
|
|
|
}
|
|
} // L: 229 239
|
|
|
|
@ObfuscatedName("b")
|
|
@ObfuscatedSignature(
|
|
descriptor = "(II)I",
|
|
garbageValue = "-1290183138"
|
|
)
|
|
@Export("groupLoadPercent")
|
|
int groupLoadPercent(int var1) {
|
|
if (super.groups[var1] != null) { // L: 242
|
|
return 100;
|
|
} else if (this.validGroups[var1]) { // L: 243
|
|
return 100;
|
|
} else {
|
|
int var3 = this.index; // L: 245
|
|
long var4 = (long)((var3 << 16) + var1); // L: 247
|
|
int var2;
|
|
if (class7.NetCache_currentResponse != null && var4 == class7.NetCache_currentResponse.key) { // L: 248
|
|
var2 = NetCache.NetCache_responseArchiveBuffer.offset * 99 / (NetCache.NetCache_responseArchiveBuffer.array.length - class7.NetCache_currentResponse.padding) + 1; // L: 252
|
|
} else {
|
|
var2 = 0; // L: 249
|
|
}
|
|
|
|
return var2; // L: 254
|
|
}
|
|
}
|
|
|
|
@ObfuscatedName("q")
|
|
@ObfuscatedSignature(
|
|
descriptor = "(II)Z",
|
|
garbageValue = "1085562127"
|
|
)
|
|
public boolean method4831(int var1) {
|
|
return this.validGroups[var1]; // L: 258
|
|
}
|
|
|
|
@ObfuscatedName("i")
|
|
@ObfuscatedSignature(
|
|
descriptor = "(IB)Z",
|
|
garbageValue = "123"
|
|
)
|
|
public boolean method4842(int var1) {
|
|
return this.getGroupFileIds(var1) != null; // L: 262
|
|
}
|
|
|
|
@ObfuscatedName("x")
|
|
@ObfuscatedSignature(
|
|
descriptor = "(B)I",
|
|
garbageValue = "-55"
|
|
)
|
|
@Export("loadPercent")
|
|
public int loadPercent() {
|
|
int var1 = 0; // L: 266
|
|
int var2 = 0; // L: 267
|
|
|
|
int var3;
|
|
for (var3 = 0; var3 < super.groups.length; ++var3) { // L: 268
|
|
if (super.fileCounts[var3] > 0) { // L: 269
|
|
var1 += 100; // L: 270
|
|
var2 += this.groupLoadPercent(var3); // L: 271
|
|
}
|
|
}
|
|
|
|
if (var1 == 0) { // L: 274
|
|
return 100;
|
|
} else {
|
|
var3 = var2 * 100 / var1; // L: 275
|
|
return var3; // L: 276
|
|
}
|
|
}
|
|
|
|
@ObfuscatedName("h")
|
|
@ObfuscatedSignature(
|
|
descriptor = "(S)J",
|
|
garbageValue = "6233"
|
|
)
|
|
@Export("currentTimeMillis")
|
|
public static final synchronized long currentTimeMillis() {
|
|
long var0 = System.currentTimeMillis(); // L: 14
|
|
if (var0 < class379.field4152) { // L: 15
|
|
class379.field4153 += class379.field4152 - var0; // L: 16
|
|
}
|
|
|
|
class379.field4152 = var0; // L: 18
|
|
return var0 + class379.field4153; // L: 19
|
|
}
|
|
}
|