diff --git a/res/snd/OpenChest.wav b/res/snd/OpenChest.wav index 10588e0..2a5cdfe 100644 Binary files a/res/snd/OpenChest.wav and b/res/snd/OpenChest.wav differ diff --git a/src/cl/cromer/azaraka/Lienzo.java b/src/cl/cromer/azaraka/Lienzo.java index 1549018..02f98e0 100644 --- a/src/cl/cromer/azaraka/Lienzo.java +++ b/src/cl/cromer/azaraka/Lienzo.java @@ -159,7 +159,7 @@ public class Lienzo extends Canvas implements Constantes { try { backgroundMusic = escenario.getSounds().get(Sound.SoundType.BACKGROUND); backgroundMusic.setLoops(Clip.LOOP_CONTINUOUSLY); - backgroundMusic.run(); + backgroundMusic.play(); } catch (SoundException e) { logger.warning(e.getMessage()); @@ -259,7 +259,12 @@ public class Lienzo extends Canvas implements Constantes { if (!gameOverRan) { stopBackgroundMusic(); - new Thread(escenario.getSounds().get(Sound.SoundType.GAME_OVER)).start(); + try { + escenario.getSounds().get(Sound.SoundType.GAME_OVER).play(); + } + catch (SoundException e) { + logger.warning(e.getMessage()); + } stopThreads(); @@ -323,7 +328,12 @@ public class Lienzo extends Canvas implements Constantes { public void win() { stopBackgroundMusic(); - new Thread(escenario.getSounds().get(Sound.SoundType.SUCCESS)).start(); + try { + escenario.getSounds().get(Sound.SoundType.SUCCESS).play(); + } + catch (SoundException e) { + logger.warning(e.getMessage()); + } stopThreads(); JOptionPane.showMessageDialog(null, "Ganaste!"); diff --git a/src/cl/cromer/azaraka/object/Enemy.java b/src/cl/cromer/azaraka/object/Enemy.java index 0a87a3d..487ac90 100644 --- a/src/cl/cromer/azaraka/object/Enemy.java +++ b/src/cl/cromer/azaraka/object/Enemy.java @@ -19,6 +19,7 @@ import cl.cromer.azaraka.Celda; import cl.cromer.azaraka.Constantes; import cl.cromer.azaraka.Escenario; import cl.cromer.azaraka.sound.Sound; +import cl.cromer.azaraka.sound.SoundException; import cl.cromer.azaraka.sprite.Animation; import cl.cromer.azaraka.sprite.AnimationException; import cl.cromer.azaraka.sprite.SheetException; @@ -183,7 +184,12 @@ public class Enemy extends Object implements Constantes { if (getEscenario().getCanvas().getPlayer().getHealth() > 0) { logger.info("Attacked player at x: " + x + " y: " + y); - new Thread(getEscenario().getSounds().get(Sound.SoundType.ENEMY_ATTACK)).start(); + try { + getEscenario().getSounds().get(Sound.SoundType.ENEMY_ATTACK).play(); + } + catch (SoundException e) { + e.printStackTrace(); + } getEscenario().getCanvas().getPlayer().loseHealth(2); try { diff --git a/src/cl/cromer/azaraka/object/Player.java b/src/cl/cromer/azaraka/object/Player.java index 1f67e00..d731d6b 100644 --- a/src/cl/cromer/azaraka/object/Player.java +++ b/src/cl/cromer/azaraka/object/Player.java @@ -389,11 +389,11 @@ public class Player extends Object implements Constantes { if (keySound.isPlaying()) { keySound.stop(); } + keySound.play(); } catch (SoundException e) { logger.warning(e.getMessage()); } - keySound.run(); } /** @@ -413,11 +413,11 @@ public class Player extends Object implements Constantes { if (chestSound.isPlaying()) { chestSound.stop(); } + chestSound.play(); } catch (SoundException e) { logger.warning(e.getMessage()); } - chestSound.run(); gainHealth(1); diff --git a/src/cl/cromer/azaraka/sound/Sound.java b/src/cl/cromer/azaraka/sound/Sound.java index 6ab64e7..4ed2d7a 100644 --- a/src/cl/cromer/azaraka/sound/Sound.java +++ b/src/cl/cromer/azaraka/sound/Sound.java @@ -26,7 +26,7 @@ import java.util.logging.Logger; /** * This class handles sound */ -public class Sound implements Runnable, Constantes { +public class Sound implements Constantes { /** * The sound clip to play */ @@ -61,12 +61,11 @@ public class Sound implements Runnable, Constantes { logger.warning(e.getMessage()); } try { - /*DataLine.Info info = null; + DataLine.Info info = null; if (audioInputStream != null) { info = new DataLine.Info(Clip.class, audioInputStream.getFormat()); } - sound = (Clip) AudioSystem.getLine(info);*/ - sound = AudioSystem.getClip(); + sound = (Clip) AudioSystem.getLine(info); } catch (LineUnavailableException e) { logger.warning(e.getMessage()); @@ -74,6 +73,7 @@ public class Sound implements Runnable, Constantes { try { if (audioInputStream != null) { sound.open(audioInputStream); + sound.stop(); } } catch (LineUnavailableException | IOException e) { @@ -87,7 +87,7 @@ public class Sound implements Runnable, Constantes { * Play the sound * @throws SoundException Thrown if the sound clip is null */ - private void play() throws SoundException { + public void play() throws SoundException { if (sound == null) { throw new SoundException("Sound is null!"); } @@ -143,19 +143,6 @@ public class Sound implements Runnable, Constantes { sound.loop(loops); } - /** - * Run the sound in a thread - */ - @Override - public void run() { - try { - play(); - } - catch (SoundException e) { - logger.warning(e.getMessage()); - } - } - /** * Set the volume of the sound *