Files
runelite/runescape-client/src/main/java/MilliClock.java
2019-07-07 21:43:55 +02:00

239 lines
6.5 KiB
Java

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("fd")
@Implements("MilliClock")
public class MilliClock extends Clock {
@ObfuscatedName("qi")
@ObfuscatedSignature(
signature = "Ldp;"
)
@Export("decimator")
static Decimator decimator;
@ObfuscatedName("m")
long[] field517;
@ObfuscatedName("f")
@ObfuscatedGetter(
intValue = 1940981129
)
int field518;
@ObfuscatedName("q")
@ObfuscatedGetter(
intValue = 1217137493
)
int field519;
@ObfuscatedName("w")
@ObfuscatedGetter(
longValue = -8372744267470318611L
)
long field520;
@ObfuscatedName("o")
@ObfuscatedGetter(
intValue = 250272357
)
int field521;
@ObfuscatedName("u")
@ObfuscatedGetter(
intValue = 576555527
)
int field522;
public MilliClock() {
this.field517 = new long[10];
this.field518 = 256;
this.field519 = 1;
this.field521 = 0;
this.field520 = class203.currentTimeMs();
for (int var1 = 0; var1 < 10; ++var1) {
this.field517[var1] = this.field520;
}
}
@ObfuscatedName("m")
@ObfuscatedSignature(
signature = "(B)V",
garbageValue = "61"
)
@Export("mark")
public void mark() {
for (int var1 = 0; var1 < 10; ++var1) {
this.field517[var1] = 0L;
}
}
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(III)I",
garbageValue = "-126803683"
)
@Export("wait")
public int wait(int cycleMs, int minSleepMs) {
int var3 = this.field518;
int var4 = this.field519;
this.field518 = 300;
this.field519 = 1;
this.field520 = class203.currentTimeMs();
if (0L == this.field517[this.field522]) {
this.field518 = var3;
this.field519 = var4;
} else if (this.field520 > this.field517[this.field522]) {
this.field518 = (int)((long)(cycleMs * 2560) / (this.field520 - this.field517[this.field522]));
}
if (this.field518 < 25) {
this.field518 = 25;
}
if (this.field518 > 256) {
this.field518 = 256;
this.field519 = (int)((long)cycleMs - (this.field520 - this.field517[this.field522]) / 10L);
}
if (this.field519 > cycleMs) {
this.field519 = cycleMs;
}
this.field517[this.field522] = this.field520;
this.field522 = (this.field522 + 1) % 10;
int var5;
if (this.field519 > 1) {
for (var5 = 0; var5 < 10; ++var5) {
if (this.field517[var5] != 0L) {
long[] var6 = this.field517;
var6[var5] += (long)this.field519;
}
}
}
if (this.field519 < minSleepMs) {
this.field519 = minSleepMs;
}
class203.method4010((long)this.field519);
for (var5 = 0; this.field521 < 256; this.field521 += this.field518) {
++var5;
}
this.field521 &= 255;
return var5;
}
@ObfuscatedName("q")
@ObfuscatedSignature(
signature = "([Lbt;II[I[II)V",
garbageValue = "-1374398116"
)
static void method3400(World[] var0, int var1, int var2, int[] var3, int[] var4) {
if (var1 < var2) {
int var5 = var1 - 1;
int var6 = var2 + 1;
int var7 = (var2 + var1) / 2;
World var8 = var0[var7];
var0[var7] = var0[var1];
var0[var1] = var8;
while (var5 < var6) {
boolean var9 = true;
int var10;
int var11;
int var12;
do {
--var6;
for (var10 = 0; var10 < 4; ++var10) {
if (var3[var10] == 2) {
var11 = var0[var6].index;
var12 = var8.index;
} else if (var3[var10] == 1) {
var11 = var0[var6].population;
var12 = var8.population;
if (var11 == -1 && var4[var10] == 1) {
var11 = 2001;
}
if (var12 == -1 && var4[var10] == 1) {
var12 = 2001;
}
} else if (var3[var10] == 3) {
var11 = var0[var6].isMembersOnly() ? 1 : 0;
var12 = var8.isMembersOnly() ? 1 : 0;
} else {
var11 = var0[var6].id;
var12 = var8.id;
}
if (var12 != var11) {
if ((var4[var10] != 1 || var11 <= var12) && (var4[var10] != 0 || var11 >= var12)) {
var9 = false;
}
break;
}
if (var10 == 3) {
var9 = false;
}
}
} while(var9);
var9 = true;
do {
++var5;
for (var10 = 0; var10 < 4; ++var10) {
if (var3[var10] == 2) {
var11 = var0[var5].index;
var12 = var8.index;
} else if (var3[var10] == 1) {
var11 = var0[var5].population;
var12 = var8.population;
if (var11 == -1 && var4[var10] == 1) {
var11 = 2001;
}
if (var12 == -1 && var4[var10] == 1) {
var12 = 2001;
}
} else if (var3[var10] == 3) {
var11 = var0[var5].isMembersOnly() ? 1 : 0;
var12 = var8.isMembersOnly() ? 1 : 0;
} else {
var11 = var0[var5].id;
var12 = var8.id;
}
if (var11 != var12) {
if ((var4[var10] != 1 || var11 >= var12) && (var4[var10] != 0 || var11 <= var12)) {
var9 = false;
}
break;
}
if (var10 == 3) {
var9 = false;
}
}
} while(var9);
if (var5 < var6) {
World var13 = var0[var5];
var0[var5] = var0[var6];
var0[var6] = var13;
}
}
method3400(var0, var1, var6, var3, var4);
method3400(var0, var6 + 1, var2, var3, var4);
}
}
}