Files
runelite/runescape-client/src/main/java/SoundCache.java
Ganom cb57ab26b3 project: update from 184 to 184 (#1675)
* 184

* checkstyle

* project: fix exports.
2019-09-28 18:37:36 +01:00

210 lines
4.8 KiB
Java

import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("dq")
@Implements("SoundCache")
public class SoundCache {
@ObfuscatedName("z")
@ObfuscatedSignature(
signature = "Lhp;"
)
@Export("soundEffectIndex")
AbstractArchive soundEffectIndex;
@ObfuscatedName("n")
@ObfuscatedSignature(
signature = "Lhp;"
)
@Export("musicSampleIndex")
AbstractArchive musicSampleIndex;
@ObfuscatedName("v")
@ObfuscatedSignature(
signature = "Llq;"
)
@Export("musicSamples")
NodeHashTable musicSamples;
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "Llq;"
)
@Export("rawSounds")
NodeHashTable rawSounds;
@ObfuscatedSignature(
signature = "(Lhp;Lhp;)V"
)
public SoundCache(AbstractArchive var1, AbstractArchive var2) {
this.musicSamples = new NodeHashTable(256);
this.rawSounds = new NodeHashTable(256);
this.soundEffectIndex = var1;
this.musicSampleIndex = var2;
}
@ObfuscatedName("z")
@ObfuscatedSignature(
signature = "(II[II)Lch;",
garbageValue = "1393796182"
)
@Export("getSoundEffect0")
RawSound getSoundEffect0(int var1, int var2, int[] var3) {
int var4 = var2 ^ (var1 << 4 & 65535 | var1 >>> 12);
var4 |= var1 << 16;
long var5 = (long)var4;
RawSound var7 = (RawSound)this.rawSounds.get(var5);
if (var7 != null) {
return var7;
} else if (var3 != null && var3[0] <= 0) {
return null;
} else {
SoundEffect var8 = SoundEffect.readSoundEffect(this.soundEffectIndex, var1, var2);
if (var8 == null) {
return null;
} else {
var7 = var8.toRawSound();
this.rawSounds.put(var7, var5);
if (var3 != null) {
var3[0] -= var7.samples.length;
}
return var7;
}
}
}
@ObfuscatedName("n")
@ObfuscatedSignature(
signature = "(II[II)Lch;",
garbageValue = "2026666010"
)
@Export("getMusicSample0")
RawSound getMusicSample0(int var1, int var2, int[] var3) {
int var4 = var2 ^ (var1 << 4 & 65535 | var1 >>> 12);
var4 |= var1 << 16;
long var5 = (long)var4 ^ 4294967296L;
RawSound var7 = (RawSound)this.rawSounds.get(var5);
if (var7 != null) {
return var7;
} else if (var3 != null && var3[0] <= 0) {
return null;
} else {
VorbisSample var8 = (VorbisSample)this.musicSamples.get(var5);
if (var8 == null) {
var8 = VorbisSample.readMusicSample(this.musicSampleIndex, var1, var2);
if (var8 == null) {
return null;
}
this.musicSamples.put(var8, var5);
}
var7 = var8.toRawSound(var3);
if (var7 == null) {
return null;
} else {
var8.remove();
this.rawSounds.put(var7, var5);
return var7;
}
}
}
@ObfuscatedName("v")
@ObfuscatedSignature(
signature = "(I[II)Lch;",
garbageValue = "223393704"
)
@Export("getSoundEffect")
public RawSound getSoundEffect(int var1, int[] var2) {
if (this.soundEffectIndex.getGroupCount() == 1) {
return this.getSoundEffect0(0, var1, var2);
} else if (this.soundEffectIndex.getGroupFileCount(var1) == 1) {
return this.getSoundEffect0(var1, 0, var2);
} else {
throw new RuntimeException();
}
}
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(I[II)Lch;",
garbageValue = "-1432840715"
)
@Export("getMusicSample")
public RawSound getMusicSample(int var1, int[] var2) {
if (this.musicSampleIndex.getGroupCount() == 1) {
return this.getMusicSample0(0, var1, var2);
} else if (this.musicSampleIndex.getGroupFileCount(var1) == 1) {
return this.getMusicSample0(var1, 0, var2);
} else {
throw new RuntimeException();
}
}
@ObfuscatedName("p")
@ObfuscatedSignature(
signature = "(Ljava/lang/CharSequence;IZI)I",
garbageValue = "2108549296"
)
@Export("parseIntCustomRadix")
static int parseIntCustomRadix(CharSequence var0, int var1, boolean var2) {
if (var1 >= 2 && var1 <= 36) {
boolean var3 = false;
boolean var4 = false;
int var5 = 0;
int var6 = var0.length();
for (int var7 = 0; var7 < var6; ++var7) {
char var8 = var0.charAt(var7);
if (var7 == 0) {
if (var8 == '-') {
var3 = true;
continue;
}
if (var8 == '+') {
continue;
}
}
int var10;
if (var8 >= '0' && var8 <= '9') {
var10 = var8 - '0';
} else if (var8 >= 'A' && var8 <= 'Z') {
var10 = var8 - '7';
} else {
if (var8 < 'a' || var8 > 'z') {
throw new NumberFormatException();
}
var10 = var8 - 'W';
}
if (var10 >= var1) {
throw new NumberFormatException();
}
if (var3) {
var10 = -var10;
}
int var9 = var5 * var1 + var10;
if (var9 / var1 != var5) {
throw new NumberFormatException();
}
var5 = var9;
var4 = true;
}
if (!var4) {
throw new NumberFormatException();
} else {
return var5;
}
} else {
throw new IllegalArgumentException("" + var1);
}
}
}