diff --git a/src/ei/engine/sound/Sound.java b/src/ei/engine/sound/Sound.java index 83f6f1d..c2aa4fc 100644 --- a/src/ei/engine/sound/Sound.java +++ b/src/ei/engine/sound/Sound.java @@ -32,12 +32,16 @@ public class Sound extends Entity{ /** * Play this sound as a sound effect - * - * @param pitch The pitch of the play back - * @param gain The gain of the play back */ - public void play(float pitch, float gain) { - SoundLoader.getInstnace().playSound(buffer, pitch, gain, getLocation()); + public void play() { + SoundLoader.getInstnace().playSound(buffer, getLocation(),false); + } + + /** + * Loop this sound + */ + public void loop() { + SoundLoader.getInstnace().playSound(buffer, getLocation(),true); } public void update() { diff --git a/src/ei/engine/sound/SoundLoader.java b/src/ei/engine/sound/SoundLoader.java index b51389f..7106121 100644 --- a/src/ei/engine/sound/SoundLoader.java +++ b/src/ei/engine/sound/SoundLoader.java @@ -94,7 +94,7 @@ public class SoundLoader { * @param pitch The pitch to play at * @param gain The gain to play at */ - void playSound(int buffer,float pitch,float gain, Vector2f pos) { + void playSound(int buffer, Vector2f pos, boolean loop) { if (soundsEnabled) { nextSource++; if (nextSource >= sourceCount) { @@ -103,14 +103,13 @@ public class SoundLoader { AL10.alSourceStop(sources.get(nextSource)); AL10.alSourcei(sources.get(nextSource), AL10.AL_BUFFER, buffer); - AL10.alSourcef(sources.get(nextSource), AL10.AL_PITCH, pitch); - AL10.alSourcef(sources.get(nextSource), AL10.AL_GAIN, gain); + AL10.alSourcef(sources.get(nextSource), AL10.AL_PITCH, 1.0f); + AL10.alSourcef(sources.get(nextSource), AL10.AL_GAIN, 1.0f); //specify where the sound is comming from by tree axes x,y and z AL10.alSource3f(sources.get(nextSource), AL10.AL_POSITION, pos.getX(), pos.getY(), 0); - //AL10.alSource(sources.get(nextSource), AL10.AL_VELOCITY, sourceVel); - //AL10.alSourcei(sources.get(nextSource), AL10.AL_LOOPING, AL10.AL_TRUE ); + AL10.alSourcei(sources.get(nextSource), AL10.AL_LOOPING, (loop ? AL10.AL_TRUE : AL10.AL_FALSE) ); AL10.alSourcePlay(sources.get(nextSource)); } @@ -139,13 +138,15 @@ public class SoundLoader { InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(ref); String extension = getFileExtension(ref); AL10.alGenBuffers(buf); + if(extension.equals("ogg")){ + //loading ogg format OggDecoder decoder = new OggDecoder(); OggData ogg = decoder.getData(in); AL10.alBufferData(buf.get(0), ogg.channels > 1 ? AL10.AL_FORMAT_STEREO16 : AL10.AL_FORMAT_MONO16, ogg.data, ogg.rate); } else if(extension.equals("wav")){ - // + //loading wav format WaveData wav = WaveData.create(in); AL10.alBufferData(buf.get(0), wav.format, wav.data, wav.samplerate); wav.dispose(); @@ -160,11 +161,9 @@ public class SoundLoader { buffer = buf.get(0); } catch (Exception e) { e.printStackTrace(); - Sys.alert("Error","Failed to load: "+ref+" - "+e.getMessage()); MultiPrintStream.out.println("Failed to load: "+ref+" - "+e.getMessage()); soundsEnabled = false; return -1; - //System.exit(0); } } @@ -175,11 +174,16 @@ public class SoundLoader { return buffer; } + /** + * Returns the file extension + * @param file The path to the file + * @return The file extension + */ private String getFileExtension(String file){ - int dotPlace = file.lastIndexOf ( '.' ); + int dot = file.lastIndexOf ( '.' ); - if ( dotPlace >= 0 ){ - return file.substring(dotPlace + 1, file.length()); + if ( dot >= 0 ){ + return file.substring(dot + 1, file.length()); } else{ return ""; diff --git a/src/ei/game/gamestate/InGameState.java b/src/ei/game/gamestate/InGameState.java index 0bea2fd..7210e54 100644 --- a/src/ei/game/gamestate/InGameState.java +++ b/src/ei/game/gamestate/InGameState.java @@ -17,7 +17,7 @@ public class InGameState extends GameState{ sprite1 = new Sprite("tank","data/units/tank.png"); rootNode.add(sprite1); sound1 = new Sound("sound","data/sounds/test.wav"); - sound1.play(1, 1); + sound1.play(); rootNode.add(sound1); }