package ddddbb.sound;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineEvent;
import javax.sound.sampled.LineListener;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import ddddbb.game.Settings;
public class SoundEnum {
// public static final Sound MOVINGCOMPOUND = new Sound("3060_SpeedY_UFOblip.wav",false);
public static final Sound MOVINGCOMPOUND = new Sound("58154_suonho_ambienta3.wav",false);
// public static final Sound MOVINGCOMPOUND = new Sound("movingCompound_22050.wav",false); //it can not read this
// public static final Sound ROTATINGCOMPOUND = new Sound("28855_junggle_btn045.wav",false);
public static final Sound ROTATINGCOMPOUND = new Sound("rotatingCompound.wav",false);
// public static final Sound BARRINGCOMPOUND = new Sound("52754_Corsica_S_space_blip4_1.wav",false);
public static final Sound BARRINGCOMPOUND = new Sound("8103_suonho.wav",false);
// public static final Sound SNAPPINGCOMPOUNDS = new Sound("39762_altemark_cmb5.wav",false);
// public static final Sound SNAPPINGCOMPOUNDS = new Sound("38500_Corsica_S_blip12.flac",false);
public static final Sound SNAPPINGCOMPOUNDS = new Sound("snappingCompounds.wav",false);
// public static final Sound GOALREACHED = new Sound("goalReached.wav",true);
public static final Sound GOALREACHED = new Sound("22125_Connum_bach2.wav",true);
public static final Sound GOALMISSED = new Sound("goalMissed.wav",true);
// public static final Sound SHOWGOAL = new Sound("showGoal.wav",false);
public static final Sound SHOWGOAL = new Sound("36742_zuben_Frenetic_2.wav",false);
// public static final Sound MOUSEOVER = new Sound("39771_altemark_fx17.wav",false);
public static final Sound MOUSEOVER = new Sound("29042_junggle_btn232.wav",false);
public static final Sound SWITCH = new Sound("3061_SpeedY_beat.wav",false);
public static final Sound GAMECOMPLETED = new Sound("49325_hammerklavier_BAROQUE_2.aif",true);
public static class Sound {
//public final AudioClip clip;
public Clip clip;
private volatile boolean isPlaying = true;
private final boolean wait2end;
Sound(String filename,boolean _wait2end) {
wait2end = _wait2end;
try {
InputStream istream = getClass().getResourceAsStream(filename);
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new BufferedInputStream(istream));
clip = AudioSystem.getClip();
clip.open(audioInputStream);
if (true) {
clip.addLineListener(new LineListener() {
@Override
public void update(LineEvent event) {
if (event.getType() == LineEvent.Type.STOP) {
isPlaying = false;
clip.stop();
}
// if (event.getType() == LineEvent.Type.START) {
// isPlaying = true;
// }
}});
}
}
catch (UnsupportedAudioFileException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (LineUnavailableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void play() {
if (clip != null && Settings.soundOn.isSelected()) {
// clip.stop();
clip.setFramePosition(0);
clip.start();
}
if (wait2end) {
while (isPlaying) {}
}
isPlaying = true; //just to reset the value, otherwise there is a time gap between start and while
}
// public void play2end() {
// if (clip != null && Settings.soundOn.isSelected()) {
// clip.setFramePosition(0);
// clip.start();
// clip.drain();
// }
// }
}
}