135 lines
3.5 KiB
Java
135 lines
3.5 KiB
Java
import net.runelite.mapping.Export;
|
|
import net.runelite.mapping.Implements;
|
|
import net.runelite.mapping.ObfuscatedName;
|
|
import net.runelite.mapping.ObfuscatedSignature;
|
|
|
|
@ObfuscatedName("ax")
|
|
@Implements("SoundEffect")
|
|
public class SoundEffect {
|
|
@ObfuscatedName("e")
|
|
@ObfuscatedSignature(
|
|
descriptor = "[Lbm;"
|
|
)
|
|
@Export("instruments")
|
|
Instrument[] instruments;
|
|
@ObfuscatedName("v")
|
|
@Export("start")
|
|
int start;
|
|
@ObfuscatedName("y")
|
|
@Export("end")
|
|
int end;
|
|
|
|
@ObfuscatedSignature(
|
|
descriptor = "(Lnt;)V"
|
|
)
|
|
SoundEffect(Buffer var1) {
|
|
this.instruments = new Instrument[10]; // L: 10
|
|
|
|
for (int var2 = 0; var2 < 10; ++var2) { // L: 21
|
|
int var3 = var1.readUnsignedByte(); // L: 22
|
|
if (var3 != 0) { // L: 23
|
|
--var1.offset; // L: 24
|
|
this.instruments[var2] = new Instrument(); // L: 25
|
|
this.instruments[var2].decode(var1); // L: 26
|
|
}
|
|
}
|
|
|
|
this.start = var1.readUnsignedShort(); // L: 28
|
|
this.end = var1.readUnsignedShort(); // L: 29
|
|
} // L: 30
|
|
|
|
@ObfuscatedName("e")
|
|
@ObfuscatedSignature(
|
|
descriptor = "()Lar;"
|
|
)
|
|
@Export("toRawSound")
|
|
public RawSound toRawSound() {
|
|
byte[] var1 = this.mix(); // L: 33
|
|
return new RawSound(22050, var1, this.start * 22050 / 1000, this.end * 22050 / 1000); // L: 34
|
|
}
|
|
|
|
@ObfuscatedName("v")
|
|
@Export("calculateDelay")
|
|
public final int calculateDelay() {
|
|
int var1 = 9999999; // L: 38
|
|
|
|
int var2;
|
|
for (var2 = 0; var2 < 10; ++var2) { // L: 39
|
|
if (this.instruments[var2] != null && this.instruments[var2].offset / 20 < var1) { // L: 40 41
|
|
var1 = this.instruments[var2].offset / 20;
|
|
}
|
|
}
|
|
|
|
if (this.start < this.end && this.start / 20 < var1) { // L: 44
|
|
var1 = this.start / 20;
|
|
}
|
|
|
|
if (var1 != 9999999 && var1 != 0) { // L: 45
|
|
for (var2 = 0; var2 < 10; ++var2) { // L: 46
|
|
if (this.instruments[var2] != null) {
|
|
Instrument var10000 = this.instruments[var2];
|
|
var10000.offset -= var1 * 20; // L: 47
|
|
}
|
|
}
|
|
|
|
if (this.start < this.end) { // L: 49
|
|
this.start -= var1 * 20; // L: 50
|
|
this.end -= var1 * 20; // L: 51
|
|
}
|
|
|
|
return var1; // L: 53
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
@ObfuscatedName("y")
|
|
@Export("mix")
|
|
final byte[] mix() {
|
|
int var1 = 0; // L: 57
|
|
|
|
int var2;
|
|
for (var2 = 0; var2 < 10; ++var2) { // L: 58
|
|
if (this.instruments[var2] != null && this.instruments[var2].duration + this.instruments[var2].offset > var1) { // L: 59 60
|
|
var1 = this.instruments[var2].duration + this.instruments[var2].offset;
|
|
}
|
|
}
|
|
|
|
if (var1 == 0) { // L: 63
|
|
return new byte[0];
|
|
} else {
|
|
var2 = var1 * 22050 / 1000; // L: 64
|
|
byte[] var3 = new byte[var2]; // L: 65
|
|
|
|
for (int var4 = 0; var4 < 10; ++var4) { // L: 66
|
|
if (this.instruments[var4] != null) { // L: 67
|
|
int var5 = this.instruments[var4].duration * 22050 / 1000; // L: 68
|
|
int var6 = this.instruments[var4].offset * 22050 / 1000; // L: 69
|
|
int[] var7 = this.instruments[var4].synthesize(var5, this.instruments[var4].duration); // L: 70
|
|
|
|
for (int var8 = 0; var8 < var5; ++var8) { // L: 71
|
|
int var9 = (var7[var8] >> 8) + var3[var8 + var6]; // L: 72
|
|
if ((var9 + 128 & -256) != 0) { // L: 73
|
|
var9 = var9 >> 31 ^ 127;
|
|
}
|
|
|
|
var3[var8 + var6] = (byte)var9; // L: 74
|
|
}
|
|
}
|
|
}
|
|
|
|
return var3; // L: 78
|
|
}
|
|
}
|
|
|
|
@ObfuscatedName("f")
|
|
@ObfuscatedSignature(
|
|
descriptor = "(Ljp;II)Lax;"
|
|
)
|
|
@Export("readSoundEffect")
|
|
public static SoundEffect readSoundEffect(AbstractArchive var0, int var1, int var2) {
|
|
byte[] var3 = var0.takeFile(var1, var2); // L: 15
|
|
return var3 == null ? null : new SoundEffect(new Buffer(var3)); // L: 16
|
|
}
|
|
}
|