forked from 2009Scape/Server
173 lines
7.6 KiB
Java
173 lines
7.6 KiB
Java
package org.runite.client;
|
|
|
|
import java.util.Objects;
|
|
|
|
public final class AudioHandler {
|
|
|
|
|
|
public static int[] soundEffectDelayArray = new int[50];
|
|
public static int musicVolume = 255;
|
|
static int currentSoundEffectCount = 0;
|
|
static int soundEffectVolume = 127;
|
|
static int currentTrack = -1;
|
|
static boolean musicEffectPlaying = false;
|
|
static int[] soundEffectVolumeArray = new int[50];
|
|
static int[] soundEffectIDs = new int[50];
|
|
static SynthSound[] soundEffects = new SynthSound[50];
|
|
static int[] soundEffectCoordinates = new int[50];
|
|
|
|
public static void musicHandler(int var1) {
|
|
try {
|
|
if (-1 == var1 && !musicEffectPlaying) {
|
|
GameObject.method1870();
|
|
} else if (var1 != -1 && (currentTrack != var1 || CSConfigCachefile.method1391(-1)) && musicVolume != 0 && !musicEffectPlaying) {
|
|
method2099(var1, CacheIndex.musicIndex, musicVolume);
|
|
}
|
|
currentTrack = var1;
|
|
} catch (RuntimeException var3) {
|
|
throw ClientErrorException.clientError(var3, "li.B(" + true + ',' + var1 + ')');
|
|
}
|
|
}
|
|
|
|
public static void soundEffectHandler(int soundEffectVolume, int soundEffectID, int soundEffectDelay) {
|
|
try {
|
|
System.out.println("Playing " + soundEffectID + " DELAY: " + soundEffectDelay + " VOLUME: " + soundEffectVolume);
|
|
if (soundEffectDelay != -1 && soundEffectVolume != 0 && currentSoundEffectCount < 50 && soundEffectID != -1) {
|
|
soundEffectVolumeArray[currentSoundEffectCount] = soundEffectVolume;
|
|
soundEffectIDs[currentSoundEffectCount] = soundEffectID;
|
|
soundEffectDelayArray[currentSoundEffectCount] = soundEffectDelay;
|
|
soundEffects[currentSoundEffectCount] = null;
|
|
soundEffectCoordinates[currentSoundEffectCount] = 0;
|
|
currentSoundEffectCount++;
|
|
}
|
|
|
|
} catch (RuntimeException var5) {
|
|
throw ClientErrorException.clientError(var5, "ca.C(" + soundEffectVolume + ',' + soundEffectID + ',' + soundEffectDelay + ',' + -799 + ')');
|
|
}
|
|
}
|
|
|
|
static void method132() {
|
|
try {
|
|
for (int var1 = 0; var1 < currentSoundEffectCount; ++var1) {
|
|
--soundEffectDelayArray[var1];
|
|
if (soundEffectDelayArray[var1] < -10) {
|
|
--currentSoundEffectCount;
|
|
|
|
for (int var2 = var1; var2 < currentSoundEffectCount; ++var2) {
|
|
soundEffectIDs[var2] = soundEffectIDs[var2 + 1];
|
|
soundEffects[var2] = soundEffects[var2 + 1];
|
|
soundEffectVolumeArray[var2] = soundEffectVolumeArray[1 + var2];
|
|
soundEffectDelayArray[var2] = soundEffectDelayArray[1 + var2];
|
|
soundEffectCoordinates[var2] = soundEffectCoordinates[var2 + 1];
|
|
}
|
|
|
|
--var1;
|
|
} else {
|
|
SynthSound var11 = soundEffects[var1];
|
|
if (null == var11) {
|
|
var11 = SynthSound.create(CacheIndex.soundFXIndex, soundEffectIDs[var1], 0);
|
|
if (null == var11) {
|
|
continue;
|
|
}
|
|
|
|
soundEffectDelayArray[var1] += var11.getStart();
|
|
soundEffects[var1] = var11;
|
|
}
|
|
|
|
if (0 > soundEffectDelayArray[var1]) {
|
|
int var3;
|
|
if (soundEffectCoordinates[var1] == 0) {
|
|
var3 = soundEffectVolume;
|
|
} else {
|
|
int var4 = (soundEffectCoordinates[var1] & 0xFF) * 128;
|
|
int var7 = soundEffectCoordinates[var1] >> 8 & 0xFF;
|
|
int var5 = soundEffectCoordinates[var1] >> 16 & 0xFF;
|
|
int var8 = -Class102.player.zAxis + 64 + 128 * var7;
|
|
if (var8 < 0) {
|
|
var8 = -var8;
|
|
}
|
|
|
|
int var6 = -Class102.player.xAxis + 64 + var5 * 128;
|
|
if (0 > var6) {
|
|
var6 = -var6;
|
|
}
|
|
|
|
int var9 = -128 + var6 + var8;
|
|
if (var9 > var4) {
|
|
soundEffectDelayArray[var1] = -100;
|
|
continue;
|
|
}
|
|
|
|
if (var9 < 0) {
|
|
var9 = 0;
|
|
}
|
|
|
|
var3 = Sprites.ambientVolume * (var4 + -var9) / var4;
|
|
}
|
|
|
|
if (var3 > 0) {
|
|
PcmSound var12 = var11.toPCMSound().method151(Class27.resampler);
|
|
Class3_Sub24_Sub1 var13 = Class3_Sub24_Sub1.method437(var12, var3);
|
|
Objects.requireNonNull(var13).method429(soundEffectVolumeArray[var1] - 1);
|
|
Class3_Sub26.aClass3_Sub24_Sub2_2563.method457(var13);
|
|
}
|
|
|
|
soundEffectDelayArray[var1] = -100;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (musicEffectPlaying && CSConfigCachefile.method1391(-1)) {
|
|
if (0 != musicVolume && currentTrack != -1) {
|
|
Class70.method1285(CacheIndex.musicIndex, currentTrack, musicVolume);
|
|
}
|
|
|
|
musicEffectPlaying = false;
|
|
} else if (musicVolume != 0 && currentTrack != -1 && CSConfigCachefile.method1391((byte) -92 + 91)) {
|
|
TextureOperation12.outgoingBuffer.putOpcode(137);
|
|
TextureOperation12.outgoingBuffer.writeInt(currentTrack);
|
|
currentTrack = -1;
|
|
}
|
|
|
|
} catch (RuntimeException var10) {
|
|
throw ClientErrorException.clientError(var10, "ed.C(" + (byte) -92 + ')');
|
|
}
|
|
}
|
|
|
|
public static void method2099(int var1, CacheIndex var3, int var5) {
|
|
try {
|
|
Class101.aClass153_1423 = var3;
|
|
Class132.anInt1741 = 0;
|
|
TextureOperation8.anInt3463 = var1;
|
|
Unsorted.aBoolean2311 = false;
|
|
Unsorted.anInt154 = 1;
|
|
GraphicDefinition.anInt546 = 2;
|
|
|
|
TextureOperation36.anInt3423 = var5;
|
|
} catch (RuntimeException var8) {
|
|
throw ClientErrorException.clientError(var8, "v.Q(" + true + ',' + var1 + ',' + 0 + ',' + (var3 != null ? "{...}" : "null") + ',' + false + ',' + var5 + ',' + 2 + ')');
|
|
}
|
|
}
|
|
|
|
static void method897(Class3_Sub24_Sub4 var1, CacheIndex var2, CacheIndex var3, CacheIndex var4) {
|
|
try {
|
|
Class124.aClass153_1661 = var2;
|
|
Class40.aClass153_679 = var4;
|
|
Class3_Sub28_Sub20.aClass153_3786 = var3;
|
|
Class101.aClass3_Sub24_Sub4_1421 = var1;
|
|
} catch (RuntimeException var6) {
|
|
throw ClientErrorException.clientError(var6, "ck.C(" + (var1 != null ? "{...}" : "null") + ',' + (var2 != null ? "{...}" : "null") + ',' + (var3 != null ? "{...}" : "null") + ',' + (var4 != null ? "{...}" : "null") + ')');
|
|
}
|
|
}
|
|
|
|
public static void musicEffectHandler(int var1) {
|
|
try {
|
|
if (musicVolume != 0 && var1 != -1) {
|
|
Class70.method1285(CacheIndex.music2Index, var1, musicVolume);
|
|
musicEffectPlaying = true;
|
|
}
|
|
} catch (RuntimeException var4) {
|
|
throw ClientErrorException.clientError(var4, "wj.D(" + ',' + var1 + ',' + (byte) -1 + ')');
|
|
}
|
|
}
|
|
}
|