Files
runelite/runescape-client/src/main/java/Archive.java
2022-06-15 22:04:33 +10:00

481 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("lc")
@Implements("Archive")
public class Archive extends AbstractArchive {
@ObfuscatedName("t")
@Export("Archive_crc")
static CRC32 Archive_crc;
@ObfuscatedName("e")
@ObfuscatedSignature(
descriptor = "Lnd;"
)
@Export("archiveDisk")
ArchiveDisk archiveDisk;
@ObfuscatedName("g")
@ObfuscatedSignature(
descriptor = "Lnd;"
)
@Export("masterDisk")
ArchiveDisk masterDisk;
@ObfuscatedName("w")
@ObfuscatedGetter(
intValue = -1616385301
)
@Export("index")
int index;
@ObfuscatedName("y")
@ObfuscatedGetter(
intValue = 1061047975
)
volatile int field3981;
@ObfuscatedName("i")
boolean field3979;
@ObfuscatedName("s")
@Export("validGroups")
volatile boolean[] validGroups;
@ObfuscatedName("z")
@ObfuscatedGetter(
intValue = 2100182859
)
@Export("indexCrc")
int indexCrc;
@ObfuscatedName("r")
@ObfuscatedGetter(
intValue = -121372543
)
@Export("indexVersion")
int indexVersion;
@ObfuscatedName("u")
@ObfuscatedGetter(
intValue = 735655197
)
int field3989;
@ObfuscatedName("k")
boolean field3990;
static {
Archive_crc = new CRC32(); // L: 20
}
@ObfuscatedSignature(
descriptor = "(Lnd;Lnd;IZZZZ)V"
)
public Archive(ArchiveDisk var1, ArchiveDisk var2, int var3, boolean var4, boolean var5, boolean var6, boolean var7) {
super(var4, var5); // L: 27
this.field3981 = 0; // L: 17
this.field3979 = false; // L: 18
this.field3989 = -1;
this.field3990 = false;
this.archiveDisk = var1; // L: 28
this.masterDisk = var2; // L: 29
this.index = var3; // L: 30
this.field3979 = var6; // L: 31
this.field3990 = var7; // L: 32
class93.method2403(this, this.index); // L: 33
} // L: 34
@ObfuscatedName("c")
@ObfuscatedSignature(
descriptor = "(I)Z",
garbageValue = "1214739037"
)
public boolean method5795() {
return this.field3981 == 1; // L: 37
}
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "-1116863257"
)
@Export("percentage")
public int percentage() {
if (this.field3981 != 1 && (!this.field3990 || this.field3981 != 2)) { // L: 41
if (super.groups != null) { // L: 42
return 99;
} else {
int var2 = this.index; // L: 44
long var3 = (long)(var2 + 16711680); // L: 46
int var1;
if (Buddy.NetCache_currentResponse != null && Buddy.NetCache_currentResponse.key == var3) { // L: 47
var1 = ObjectSound.NetCache_responseArchiveBuffer.offset * 99 / (ObjectSound.NetCache_responseArchiveBuffer.array.length - Buddy.NetCache_currentResponse.padding) + 1; // L: 51
} else {
var1 = 0; // L: 48
}
int var5 = var1; // L: 53
if (var1 >= 100) { // L: 54
var5 = 99;
}
return var5; // L: 55
}
} else {
return 100;
}
}
@ObfuscatedName("q")
@ObfuscatedSignature(
descriptor = "(IB)V",
garbageValue = "20"
)
@Export("loadRegionFromGroup")
void loadRegionFromGroup(int var1) {
FloorOverlayDefinition.method3808(this.index, var1); // L: 59
} // L: 60
@ObfuscatedName("f")
@ObfuscatedSignature(
descriptor = "(IB)V",
garbageValue = "22"
)
@Export("loadGroup")
void loadGroup(int var1) {
if (this.archiveDisk != null && this.validGroups != null && this.validGroups[var1]) { // L: 63
ClientPacket.method5191(var1, this.archiveDisk, this);
} else {
ClanChannel.requestNetFile(this, this.index, var1, super.groupCrcs[var1], (byte)2, true); // L: 64
}
} // L: 65
@ObfuscatedName("j")
@ObfuscatedSignature(
descriptor = "(I)V",
garbageValue = "-927514602"
)
void method5822() {
this.field3981 = 2; // L: 68
super.groupIds = new int[0]; // L: 69
super.groupCrcs = new int[0]; // L: 70
super.groupVersions = new int[0]; // L: 71
super.fileCounts = new int[0]; // L: 72
super.fileIds = new int[0][]; // L: 73
super.groups = new Object[0]; // L: 74
super.files = new Object[0][]; // L: 75
} // L: 76
@ObfuscatedName("e")
@ObfuscatedSignature(
descriptor = "(IIB)V",
garbageValue = "28"
)
@Export("loadIndex")
void loadIndex(int var1, int var2) {
this.indexCrc = var1; // L: 79
this.indexVersion = var2; // L: 80
if (this.masterDisk != null) { // L: 81
ClientPacket.method5191(this.index, this.masterDisk, this);
} else {
ClanChannel.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true); // L: 82
}
} // L: 83
@ObfuscatedName("g")
@ObfuscatedSignature(
descriptor = "(I[BZZI)V",
garbageValue = "757512896"
)
@Export("write")
public void write(int var1, byte[] var2, boolean var3, boolean var4) {
if (var3) { // L: 86
if (this.field3981 == 1) { // L: 87
throw new RuntimeException(); // L: 88
}
if (this.masterDisk != null) { // L: 90
class432.method7576(this.index, var2, this.masterDisk);
}
this.decodeIndex(var2); // L: 91
this.loadAllLocal(); // L: 92
} else {
var2[var2.length - 2] = (byte)(super.groupVersions[var1] >> 8); // L: 95
var2[var2.length - 1] = (byte)super.groupVersions[var1]; // L: 96
if (this.archiveDisk != null) { // L: 97
class432.method7576(var1, var2, this.archiveDisk); // L: 98
this.validGroups[var1] = true; // L: 99
}
if (var4) {
super.groups[var1] = WorldMapArea.method4621(var2, false); // L: 101
}
}
} // L: 103
@ObfuscatedName("w")
@ObfuscatedSignature(
descriptor = "(Lnd;I[BZI)V",
garbageValue = "667811563"
)
@Export("load")
public void load(ArchiveDisk var1, int var2, byte[] var3, boolean var4) {
int var5;
if (var1 == this.masterDisk) { // L: 106
if (this.field3981 == 1) { // L: 107
throw new RuntimeException(); // L: 108
}
if (var3 == null) { // L: 110
ClanChannel.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true); // L: 111
return; // L: 112
}
Archive_crc.reset(); // L: 114
Archive_crc.update(var3, 0, var3.length); // L: 115
var5 = (int)Archive_crc.getValue(); // L: 116
if (var5 != this.indexCrc) { // L: 117
ClanChannel.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true); // L: 118
return; // L: 119
}
Buffer var9 = new Buffer(SoundSystem.decompressBytes(var3)); // L: 121
int var7 = var9.readUnsignedByte(); // L: 122
if (var7 != 5 && var7 != 6) { // L: 123
throw new RuntimeException(var7 + "," + this.index + "," + var2);
}
int var8 = 0; // L: 124
if (var7 >= 6) { // L: 125
var8 = var9.readInt();
}
if (var8 != this.indexVersion) { // L: 126
ClanChannel.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true); // L: 127
return; // L: 128
}
this.decodeIndex(var3); // L: 130
this.loadAllLocal(); // L: 131
} else {
if (!var4 && var2 == this.field3989) { // L: 134
this.field3981 = 1; // L: 135
}
if (var3 == null || var3.length <= 2) { // L: 137
this.validGroups[var2] = false; // L: 138
if (this.field3979 || var4) { // L: 139
ClanChannel.requestNetFile(this, this.index, var2, super.groupCrcs[var2], (byte)2, var4);
}
return; // L: 140
}
Archive_crc.reset(); // L: 142
Archive_crc.update(var3, 0, var3.length - 2); // L: 143
var5 = (int)Archive_crc.getValue(); // L: 144
int var6 = ((var3[var3.length - 2] & 255) << 8) + (var3[var3.length - 1] & 255); // L: 145
if (var5 != super.groupCrcs[var2] || var6 != super.groupVersions[var2]) { // L: 146
this.validGroups[var2] = false; // L: 147
if (this.field3979 || var4) { // L: 148
ClanChannel.requestNetFile(this, this.index, var2, super.groupCrcs[var2], (byte)2, var4);
}
return; // L: 149
}
this.validGroups[var2] = true; // L: 151
if (var4) { // L: 152
super.groups[var2] = WorldMapArea.method4621(var3, false);
}
}
} // L: 154
@ObfuscatedName("y")
@ObfuscatedSignature(
descriptor = "(I)V",
garbageValue = "-1883328836"
)
@Export("loadAllLocal")
void loadAllLocal() {
this.validGroups = new boolean[super.groups.length]; // L: 157
int var1;
for (var1 = 0; var1 < this.validGroups.length; ++var1) { // L: 158
this.validGroups[var1] = false;
}
if (this.archiveDisk == null) { // L: 159
this.field3981 = 1; // L: 160
} else {
this.field3989 = -1; // L: 163
for (var1 = 0; var1 < this.validGroups.length; ++var1) { // L: 164
if (super.fileCounts[var1] > 0) { // L: 165
class305.method5764(var1, this.archiveDisk, this); // L: 166
this.field3989 = var1; // L: 167
}
}
if (this.field3989 == -1) { // L: 170
this.field3981 = 1;
}
}
} // L: 161 171
@ObfuscatedName("i")
@ObfuscatedSignature(
descriptor = "(II)I",
garbageValue = "-227114003"
)
@Export("groupLoadPercent")
int groupLoadPercent(int var1) {
if (super.groups[var1] != null) { // L: 174
return 100;
} else if (this.validGroups[var1]) { // L: 175
return 100;
} else {
int var3 = this.index; // L: 177
long var4 = (long)((var3 << 16) + var1); // L: 179
int var2;
if (Buddy.NetCache_currentResponse != null && Buddy.NetCache_currentResponse.key == var4) { // L: 180
var2 = ObjectSound.NetCache_responseArchiveBuffer.offset * 99 / (ObjectSound.NetCache_responseArchiveBuffer.array.length - Buddy.NetCache_currentResponse.padding) + 1; // L: 184
} else {
var2 = 0; // L: 181
}
return var2; // L: 186
}
}
@ObfuscatedName("s")
@ObfuscatedSignature(
descriptor = "(II)Z",
garbageValue = "1110096171"
)
public boolean method5805(int var1) {
return this.validGroups[var1]; // L: 190
}
@ObfuscatedName("t")
@ObfuscatedSignature(
descriptor = "(II)Z",
garbageValue = "2097935878"
)
public boolean method5806(int var1) {
return this.getGroupFileIds(var1) != null; // L: 194
}
@ObfuscatedName("z")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "-1832230483"
)
@Export("loadPercent")
public int loadPercent() {
int var1 = 0; // L: 198
int var2 = 0; // L: 199
int var3;
for (var3 = 0; var3 < super.groups.length; ++var3) { // L: 200
if (super.fileCounts[var3] > 0) { // L: 201
var1 += 100; // L: 202
var2 += this.groupLoadPercent(var3); // L: 203
}
}
if (var1 == 0) { // L: 206
return 100;
} else {
var3 = var2 * 100 / var1; // L: 207
return var3; // L: 208
}
}
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "(IIB)I",
garbageValue = "47"
)
@Export("ItemContainer_getCount")
static int ItemContainer_getCount(int var0, int var1) {
ItemContainer var2 = (ItemContainer)ItemContainer.itemContainers.get((long)var0); // L: 21
if (var2 == null) { // L: 22
return 0;
} else {
return var1 >= 0 && var1 < var2.quantities.length ? var2.quantities[var1] : 0; // L: 23 24
}
}
@ObfuscatedName("kk")
@ObfuscatedSignature(
descriptor = "([Lkb;II)V",
garbageValue = "1365503093"
)
@Export("drawModelComponents")
static final void drawModelComponents(Widget[] var0, int var1) {
for (int var2 = 0; var2 < var0.length; ++var2) { // L: 11771
Widget var3 = var0[var2]; // L: 11772
if (var3 != null && var3.parentId == var1 && (!var3.isIf3 || !Frames.isComponentHidden(var3))) { // L: 11773 11774 11775
int var5;
if (var3.type == 0) { // L: 11776
if (!var3.isIf3 && Frames.isComponentHidden(var3) && var3 != Language.mousedOverWidgetIf1) { // L: 11777
continue;
}
drawModelComponents(var0, var3.id); // L: 11778
if (var3.children != null) { // L: 11779
drawModelComponents(var3.children, var3.id);
}
InterfaceParent var4 = (InterfaceParent)Client.interfaceParents.get((long)var3.id); // L: 11780
if (var4 != null) { // L: 11781
var5 = var4.group; // L: 11782
if (WorldMapSection2.loadInterface(var5)) { // L: 11784
drawModelComponents(SoundCache.Widget_interfaceComponents[var5], -1); // L: 11785
}
}
}
if (var3.type == 6) { // L: 11789
if (var3.sequenceId != -1 || var3.sequenceId2 != -1) { // L: 11790
boolean var7 = ObjectSound.runCs1(var3); // L: 11791
if (var7) { // L: 11793
var5 = var3.sequenceId2;
} else {
var5 = var3.sequenceId; // L: 11794
}
if (var5 != -1) { // L: 11795
SequenceDefinition var6 = ScriptFrame.SequenceDefinition_get(var5); // L: 11796
for (var3.modelFrameCycle += Client.field555; var3.modelFrameCycle > var6.frameLengths[var3.modelFrame]; ChatChannel.invalidateWidget(var3)) { // L: 11797 11798 11805
var3.modelFrameCycle -= var6.frameLengths[var3.modelFrame]; // L: 11799
++var3.modelFrame; // L: 11800
if (var3.modelFrame >= var6.frameIds.length) { // L: 11801
var3.modelFrame -= var6.frameCount; // L: 11802
if (var3.modelFrame < 0 || var3.modelFrame >= var6.frameIds.length) { // L: 11803
var3.modelFrame = 0;
}
}
}
}
}
if (var3.field3373 != 0 && !var3.isIf3) { // L: 11809
int var8 = var3.field3373 >> 16; // L: 11810
var5 = var3.field3373 << 16 >> 16; // L: 11811
var8 *= Client.field555; // L: 11812
var5 *= Client.field555; // L: 11813
var3.modelAngleX = var8 + var3.modelAngleX & 2047; // L: 11814
var3.modelAngleY = var5 + var3.modelAngleY & 2047; // L: 11815
ChatChannel.invalidateWidget(var3); // L: 11816
}
}
}
}
} // L: 11820
}