3D spaceshooter with online scoreboard, online demos, ship building. Now entirely defunct, but might be resurrected
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
sector/src/net/sector/sounds/Sounds.java

220 lines
5.9 KiB

package net.sector.sounds;
import java.nio.FloatBuffer;
import java.util.Random;
import net.sector.Constants;
import net.sector.GameConfig;
import net.sector.util.Log;
import org.lwjgl.openal.AL10;
import org.newdawn.slick.openal.SoundStore;
import com.porcupine.coord.Coord;
import com.porcupine.math.Calc;
/**
* Preloaded sounds.
*
* @author Ondřej Hruška (MightyPork)
*/
@SuppressWarnings("javadoc")
public class Sounds {
private static final int EXPLODE_CNT = 5;
public static AudioX shield_loop;
public static AudioX shield_hit;
public static AudioX timer_loop;
public static AudioX timer_end;
public static AudioX shot_laser;
public static AudioX shot_laser_acid;
public static AudioX shot_plasma1;
public static AudioX shot_plasma2;
public static AudioX shot_emp;
public static AudioX shot_emp_hit;
public static AudioX shot_gun1;
public static AudioX shot_gun2;
public static AudioX shot_gun3;
public static AudioX shot_fireball;
public static AudioX rocket;
private static AudioX[] explode = new AudioX[EXPLODE_CNT];
public static AudioX beep_popup;
public static AudioX beep_slow1;
public static AudioX beep_slow2;
public static AudioX beep_soft;
public static AudioX beep_soft_short;
public static AudioX des_level_up;
public static AudioX des_level_down;
public static AudioX des_repair;
public static AudioX click1;
public static AudioX click2;
public static AudioX shutter;
public static AudioX appear;
public static AudioX powerup1;
public static AudioX powerup2;
public static AudioX powerdown1;
protected static AudioX musIntro;
protected static AudioX musIngameLoop;
protected static AudioX musMenuLoop;
protected static AudioX musDesignerLoop;
public static SoundStore soundManager = SoundStore.get();
public static void loadForSplash() {
if (GameConfig.enableSplash) {
musIntro = loadSound("res/sounds/music/intro.ogg");
} else {
musIntro = loadSound("res/sounds/music/intro-nosplash.ogg");
}
shutter = loadSound("res/sounds/effect/shutter.ogg");
}
/**
* Load sounds
*/
public static void load() {
musIngameLoop = loadSound("res/sounds/music/random-loop.ogg");
musMenuLoop = loadSound("res/sounds/music/cosmic-journey.ogg");
musDesignerLoop = loadSound("res/sounds/music/dust-loop.ogg");
shot_fireball = loadSound("res/sounds/effect/shot-fireball2.ogg");
shot_laser = loadSound("res/sounds/effect/shot-laser.ogg");
shot_laser_acid = loadSound("res/sounds/effect/shot-laser-acid.ogg");
shot_plasma1 = loadSound("res/sounds/effect/shot-plasma1.ogg");
shot_plasma2 = loadSound("res/sounds/effect/shot-plasma2.ogg");
shot_emp = loadSound("res/sounds/effect/shot-emp.ogg");
shot_emp_hit = loadSound("res/sounds/effect/shot-emp-sparks.ogg");
shot_gun1 = loadSound("res/sounds/effect/shot-gun1.ogg");
shot_gun2 = loadSound("res/sounds/effect/shot-gun2.ogg");
shot_gun3 = loadSound("res/sounds/effect/shot-gun3.ogg");
explode[0] = loadSound("res/sounds/effect/explode1.ogg");
explode[1] = loadSound("res/sounds/effect/explode2.ogg");
explode[2] = loadSound("res/sounds/effect/explode3.ogg");
explode[3] = loadSound("res/sounds/effect/explode4.ogg");
explode[4] = loadSound("res/sounds/effect/explode5.ogg");
rocket = loadSound("res/sounds/effect/shot-rocket.ogg");
powerup2 = loadSound("res/sounds/effect/powerup2.ogg");
powerup1 = loadSound("res/sounds/effect/powerup.ogg");
powerdown1 = loadSound("res/sounds/effect/powerdown.ogg");
appear = loadSound("res/sounds/effect/appear.ogg");
timer_loop = loadSound("res/sounds/effect/timer-loop.ogg");
timer_end = loadSound("res/sounds/effect/timer-end.ogg");
beep_popup = loadSound("res/sounds/effect/beep-popup.ogg");
beep_slow1 = loadSound("res/sounds/effect/beep-slow1.ogg");
beep_slow2 = loadSound("res/sounds/effect/beep-slow2.ogg");
beep_soft = loadSound("res/sounds/effect/beep-soft.ogg");
beep_soft_short = loadSound("res/sounds/effect/beep-soft-short.ogg");
des_level_up = loadSound("res/sounds/effect/beep-des-levelup.ogg");
des_level_down = loadSound("res/sounds/effect/beep-des-leveldown.ogg");
des_repair = loadSound("res/sounds/effect/beep-des-repair.ogg");
click1 = loadSound("res/sounds/effect/click1.ogg");
click2 = loadSound("res/sounds/effect/click2.ogg");
shield_hit = loadSound("res/sounds/effect/shield-hit.ogg");
shield_loop = loadSound("res/sounds/effect/shield-loop.ogg");
Music.prepareLoops();
}
public static Coord listener = new Coord();
private static Random rand = new Random();
/**
* Get random explode sound
*
* @return
*/
public static AudioX explosion() {
return explode[rand.nextInt(EXPLODE_CNT)];
}
/**
* Set listener pos
*
* @param pos
*/
public static void setListener(Coord pos) {
listener.setTo(pos);
FloatBuffer buf3 = Calc.Buffers.mkBuff(3);
FloatBuffer buf6 = Calc.Buffers.mkBuff(6);
buf3.clear();
Calc.Buffers.fillBuff(buf3, (float) pos.x, (float) pos.y, (float) pos.z);
AL10.alListener(AL10.AL_POSITION, buf3);
buf3.clear();
Calc.Buffers.fillBuff(buf3, 0, 0, 0);
AL10.alListener(AL10.AL_VELOCITY, buf3);
buf6.clear();
Calc.Buffers.fillBuff(buf6, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f);
AL10.alListener(AL10.AL_ORIENTATION, buf6);
buf3 = buf6 = null;
}
/**
* load one sound
*
* @param path file path
* @return the sound
*/
private static AudioX loadSound(String path) {
try {
String ext = path.substring(path.length() - 3).toLowerCase();
AudioX audio = null;
if (ext.equals("ogg")) {
audio = new AudioX(soundManager.getOgg(path));
}
if (ext.equals("wav")) {
audio = new AudioX(soundManager.getWAV(path));
}
if (ext.equals("aif")) {
audio = new AudioX(soundManager.getAIF(path));
}
if (ext.equals("mod")) {
audio = new AudioX(soundManager.getMOD(path));
}
if (Constants.LOG_SOUNDS) Log.f2("Sound " + path + " loaded.");
return audio;
} catch (Exception e) {
Log.e("ERROR WHILE LOADING: " + path);
throw new RuntimeException(e);
}
}
}