Files
runelite/runescape-client/src/main/java/PcmPlayer.java
2021-02-24 08:08:39 -05:00

584 lines
16 KiB
Java

import java.util.concurrent.ScheduledExecutorService;
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("dh")
@Implements("PcmPlayer")
public class PcmPlayer {
@ObfuscatedName("h")
@Export("PcmPlayer_stereo")
public static boolean PcmPlayer_stereo;
@ObfuscatedName("e")
@Export("soundSystemExecutor")
static ScheduledExecutorService soundSystemExecutor;
@ObfuscatedName("q")
@ObfuscatedGetter(
intValue = 967437073
)
public static int field1419;
@ObfuscatedName("l")
@ObfuscatedSignature(
descriptor = "Ldp;"
)
@Export("soundSystem")
static SoundSystem soundSystem;
@ObfuscatedName("ai")
@Export("hasFocus")
protected static boolean hasFocus;
@ObfuscatedName("w")
@Export("samples")
protected int[] samples;
@ObfuscatedName("k")
@ObfuscatedSignature(
descriptor = "Ldw;"
)
@Export("stream")
PcmStream stream;
@ObfuscatedName("i")
@ObfuscatedGetter(
intValue = -464372219
)
int field1424 = 32;
@ObfuscatedName("x")
@ObfuscatedGetter(
longValue = 2749366115172109131L
)
@Export("timeMs")
long timeMs = Tiles.currentTimeMillis();
@ObfuscatedName("f")
@ObfuscatedGetter(
intValue = 167448973
)
@Export("capacity")
int capacity;
@ObfuscatedName("g")
@ObfuscatedGetter(
intValue = 237802631
)
int field1427;
@ObfuscatedName("u")
@ObfuscatedGetter(
intValue = -1086019069
)
int field1430;
@ObfuscatedName("t")
@ObfuscatedGetter(
longValue = 5727430496503551515L
)
long field1429 = 0L;
@ObfuscatedName("p")
@ObfuscatedGetter(
intValue = 319512497
)
int field1428 = 0;
@ObfuscatedName("m")
@ObfuscatedGetter(
intValue = 1292152149
)
int field1439 = 0;
@ObfuscatedName("r")
@ObfuscatedGetter(
intValue = -264782125
)
int field1432 = 0;
@ObfuscatedName("o")
@ObfuscatedGetter(
longValue = 4709147703826691947L
)
long field1425 = 0L;
@ObfuscatedName("j")
boolean field1433 = true;
@ObfuscatedName("aq")
@ObfuscatedGetter(
intValue = 1127821299
)
int field1417 = 0;
@ObfuscatedName("at")
@ObfuscatedSignature(
descriptor = "[Ldw;"
)
PcmStream[] field1437 = new PcmStream[8];
@ObfuscatedName("ak")
@ObfuscatedSignature(
descriptor = "[Ldw;"
)
PcmStream[] field1438 = new PcmStream[8];
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "(B)V",
garbageValue = "0"
)
@Export("init")
protected void init() throws Exception {
}
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "(II)V",
garbageValue = "-1929759603"
)
@Export("open")
protected void open(int var1) throws Exception {
}
@ObfuscatedName("d")
@ObfuscatedSignature(
descriptor = "(S)I",
garbageValue = "6543"
)
@Export("position")
protected int position() throws Exception {
return this.capacity;
}
@ObfuscatedName("c")
@Export("write")
protected void write() throws Exception {
}
@ObfuscatedName("y")
@ObfuscatedSignature(
descriptor = "(B)V",
garbageValue = "64"
)
@Export("close")
protected void close() {
}
@ObfuscatedName("h")
@ObfuscatedSignature(
descriptor = "(I)V",
garbageValue = "-674709942"
)
@Export("discard")
protected void discard() throws Exception {
}
@ObfuscatedName("am")
@ObfuscatedSignature(
descriptor = "(Ldw;I)V",
garbageValue = "-1612898797"
)
@Export("setStream")
public final synchronized void setStream(PcmStream var1) {
this.stream = var1;
}
@ObfuscatedName("ag")
@ObfuscatedSignature(
descriptor = "(I)V",
garbageValue = "-310510465"
)
@Export("run")
public final synchronized void run() {
if (this.samples != null) {
long var1 = Tiles.currentTimeMillis();
try {
if (this.field1429 != 0L) {
if (var1 < this.field1429) {
return;
}
this.open(this.capacity);
this.field1429 = 0L;
this.field1433 = true;
}
int var3 = this.position();
if (this.field1432 - var3 > this.field1428) {
this.field1428 = this.field1432 - var3;
}
int var4 = this.field1427 + this.field1430;
if (var4 + 256 > 16384) {
var4 = 16128;
}
if (var4 + 256 > this.capacity) {
this.capacity += 1024;
if (this.capacity > 16384) {
this.capacity = 16384;
}
this.close();
this.open(this.capacity);
var3 = 0;
this.field1433 = true;
if (var4 + 256 > this.capacity) {
var4 = this.capacity - 256;
this.field1430 = var4 - this.field1427;
}
}
while(var3 < var4) {
this.fill(this.samples, 256);
this.write();
var3 += 256;
}
if (var1 > this.field1425) {
if (!this.field1433) {
if (this.field1428 == 0 && this.field1439 == 0) {
this.close();
this.field1429 = 2000L + var1;
return;
}
this.field1430 = Math.min(this.field1439, this.field1428);
this.field1439 = this.field1428;
} else {
this.field1433 = false;
}
this.field1428 = 0;
this.field1425 = 2000L + var1;
}
this.field1432 = var3;
} catch (Exception var7) {
this.close();
this.field1429 = 2000L + var1;
}
try {
if (var1 > 500000L + this.timeMs) {
var1 = this.timeMs;
}
while(var1 > this.timeMs + 5000L) {
this.skip(256);
this.timeMs += (long)(256000 / (StructComposition.field3338 * 22050));
}
} catch (Exception var6) {
this.timeMs = var1;
}
}
}
@ObfuscatedName("ae")
@ObfuscatedSignature(
descriptor = "(B)V",
garbageValue = "1"
)
public final void method2612() {
this.field1433 = true;
}
@ObfuscatedName("ac")
@ObfuscatedSignature(
descriptor = "(B)V",
garbageValue = "-44"
)
@Export("tryDiscard")
public final synchronized void tryDiscard() {
this.field1433 = true;
try {
this.discard();
} catch (Exception var2) {
this.close();
this.field1429 = Tiles.currentTimeMillis() + 2000L;
}
}
@ObfuscatedName("aq")
@ObfuscatedSignature(
descriptor = "(S)V",
garbageValue = "10262"
)
@Export("shutdown")
public final synchronized void shutdown() {
if (soundSystem != null) {
boolean var1 = true;
for(int var2 = 0; var2 < 2; ++var2) {
if (this == soundSystem.players[var2]) {
soundSystem.players[var2] = null;
}
if (soundSystem.players[var2] != null) {
var1 = false;
}
}
if (var1) {
soundSystemExecutor.shutdownNow();
soundSystemExecutor = null;
soundSystem = null;
}
}
this.close();
this.samples = null;
}
@ObfuscatedName("at")
@ObfuscatedSignature(
descriptor = "(II)V",
garbageValue = "-108727695"
)
@Export("skip")
final void skip(int var1) {
this.field1417 -= var1;
if (this.field1417 < 0) {
this.field1417 = 0;
}
if (this.stream != null) {
this.stream.skip(var1);
}
}
@ObfuscatedName("ak")
@Export("fill")
final void fill(int[] var1, int var2) {
int var3 = var2;
if (PcmPlayer_stereo) {
var3 = var2 << 1;
}
class311.clearIntArray(var1, 0, var3);
this.field1417 -= var2;
if (this.stream != null && this.field1417 <= 0) {
this.field1417 += StructComposition.field3338 * 22050 >> 4;
ReflectionCheck.PcmStream_disable(this.stream);
this.method2658(this.stream, this.stream.vmethod2880());
int var4 = 0;
int var5 = 255;
int var6;
PcmStream var10;
label109:
for(var6 = 7; var5 != 0; --var6) {
int var7;
int var8;
if (var6 < 0) {
var7 = var6 & 3;
var8 = -(var6 >> 2);
} else {
var7 = var6;
var8 = 0;
}
for(int var9 = var5 >>> var7 & 286331153; var9 != 0; var9 >>>= 4) {
if ((var9 & 1) != 0) {
var5 &= ~(1 << var7);
var10 = null;
PcmStream var11 = this.field1437[var7];
label103:
while(true) {
while(true) {
if (var11 == null) {
break label103;
}
AbstractSound var12 = var11.sound;
if (var12 != null && var12.position > var8) {
var5 |= 1 << var7;
var10 = var11;
var11 = var11.after;
} else {
var11.active = true;
int var13 = var11.vmethod4099();
var4 += var13;
if (var12 != null) {
var12.position += var13;
}
if (var4 >= this.field1424) {
break label109;
}
PcmStream var14 = var11.firstSubStream();
if (var14 != null) {
for(int var15 = var11.field1511; var14 != null; var14 = var11.nextSubStream()) {
this.method2658(var14, var15 * var14.vmethod2880() >> 8);
}
}
PcmStream var18 = var11.after;
var11.after = null;
if (var10 == null) {
this.field1437[var7] = var18;
} else {
var10.after = var18;
}
if (var18 == null) {
this.field1438[var7] = var10;
}
var11 = var18;
}
}
}
}
var7 += 4;
++var8;
}
}
for(var6 = 0; var6 < 8; ++var6) {
PcmStream var16 = this.field1437[var6];
PcmStream[] var17 = this.field1437;
this.field1438[var6] = null;
for(var17[var6] = null; var16 != null; var16 = var10) {
var10 = var16.after;
var16.after = null;
}
}
}
if (this.field1417 < 0) {
this.field1417 = 0;
}
if (this.stream != null) {
this.stream.fill(var1, 0, var2);
}
this.timeMs = Tiles.currentTimeMillis();
}
@ObfuscatedName("ar")
@ObfuscatedSignature(
descriptor = "(Ldw;IB)V",
garbageValue = "-16"
)
final void method2658(PcmStream var1, int var2) {
int var3 = var2 >> 5;
PcmStream var4 = this.field1438[var3];
if (var4 == null) {
this.field1437[var3] = var1;
} else {
var4.after = var1;
}
this.field1438[var3] = var1;
var1.field1511 = var2;
}
@ObfuscatedName("ho")
@ObfuscatedSignature(
descriptor = "(IIZI)V",
garbageValue = "-392680019"
)
static final void method2661(int var0, int var1, boolean var2) {
if (!var2 || var0 != class3.field24 || class39.field284 != var1) {
class3.field24 = var0;
class39.field284 = var1;
ItemContainer.updateGameState(25);
WorldMapIcon_1.drawLoadingMessage("Loading - please wait.", true);
int var3 = GrandExchangeOfferNameComparator.baseX * 64;
int var4 = NetCache.baseY * 64;
GrandExchangeOfferNameComparator.baseX = (var0 - 6) * 8;
NetCache.baseY = (var1 - 6) * 8;
int var5 = GrandExchangeOfferNameComparator.baseX * 64 - var3;
int var6 = NetCache.baseY * 64 - var4;
var3 = GrandExchangeOfferNameComparator.baseX * 64;
var4 = NetCache.baseY * 64;
int var7;
int var9;
for(var7 = 0; var7 < 32768; ++var7) {
NPC var19 = Client.npcs[var7];
if (var19 != null) {
for(var9 = 0; var9 < 10; ++var9) {
var19.pathX[var9] -= var5;
var19.pathY[var9] -= var6;
}
var19.x -= var5 * 128;
var19.y -= var6 * 128;
}
}
for(var7 = 0; var7 < 2048; ++var7) {
Player var22 = Client.players[var7];
if (var22 != null) {
for(var9 = 0; var9 < 10; ++var9) {
var22.pathX[var9] -= var5;
var22.pathY[var9] -= var6;
}
var22.x -= var5 * 128;
var22.y -= var6 * 128;
}
}
byte var20 = 0;
byte var8 = 104;
byte var21 = 1;
if (var5 < 0) {
var20 = 103;
var8 = -1;
var21 = -1;
}
byte var10 = 0;
byte var11 = 104;
byte var12 = 1;
if (var6 < 0) {
var10 = 103;
var11 = -1;
var12 = -1;
}
int var14;
for(int var13 = var20; var13 != var8; var13 += var21) {
for(var14 = var10; var11 != var14; var14 += var12) {
int var15 = var5 + var13;
int var16 = var6 + var14;
for(int var17 = 0; var17 < 4; ++var17) {
if (var15 >= 0 && var16 >= 0 && var15 < 104 && var16 < 104) {
Client.groundItems[var17][var13][var14] = Client.groundItems[var17][var15][var16];
} else {
Client.groundItems[var17][var13][var14] = null;
}
}
}
}
for(PendingSpawn var18 = (PendingSpawn)Client.pendingSpawns.last(); var18 != null; var18 = (PendingSpawn)Client.pendingSpawns.previous()) {
var18.x -= var5;
var18.y -= var6;
if (var18.x < 0 || var18.y < 0 || var18.x >= 104 || var18.y >= 104) {
var18.remove();
}
}
if (Client.destinationX != 0) {
Client.destinationX -= var5;
Client.destinationY -= var6;
}
Client.soundEffectCount = 0;
Client.isCameraLocked = false;
SecureRandomFuture.cameraX -= var5 << 7;
ObjectSound.cameraZ -= var6 << 7;
HealthBarUpdate.oculusOrbFocalPointX -= var5 << 7;
ApproximateRouteStrategy.oculusOrbFocalPointY -= var6 << 7;
Client.field889 = -1;
Client.graphicsObjects.clear();
Client.projectiles.clear();
for(var14 = 0; var14 < 4; ++var14) {
Client.collisionMaps[var14].clear();
}
}
}
}