481 lines
13 KiB
Java
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
|
|
}
|