diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/Bomb.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/Bomb.java index 1296989db0e4e94746af4f3342737bc60099c93c..4923e3686c523d57c95bbb5df3c07c3e0b6b6b50 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/Bomb.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/Bomb.java @@ -5,6 +5,7 @@ import de.hdm_stuttgart.battlearena.Model.Entity.EntityDirection; import de.hdm_stuttgart.battlearena.Model.Entity.IEntity; import de.hdm_stuttgart.battlearena.Model.Sound.SFX; import de.hdm_stuttgart.battlearena.Model.Sound.SoundEffects; +import de.hdm_stuttgart.battlearena.Model.Sound.TestThread; import javafx.geometry.BoundingBox; import javafx.scene.canvas.GraphicsContext; import javafx.scene.image.Image; @@ -79,17 +80,22 @@ public class Bomb implements IEntity { } public void renderEntity(GraphicsContext graphicsContext) { + graphicsContext.drawImage(frames[frameIndex], posX, posY, 48, 48); updateAnimation(); } private void updateAnimation() { //Easily add more frames - sfx.playSoundEffectOnce(SFX.BOMB); + + frameCounter++; if (frameCounter > 17) { if (frameIndex == 0) { + //sfx.playSoundEffectOnce(SFX.BOMB); + TestThread t = new TestThread(); + t.startSound(SFX.BOMB); frameIndex = 1; //PLayer.spawnExplosion(); } else if (frameIndex == 1) { diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SFX.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SFX.java index e4c38057c02294e1dc8e200ea275a6d00bc493fa..48159e63a2120b5a777ca5c9bd59c76c82c8072d 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SFX.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SFX.java @@ -6,7 +6,7 @@ public enum SFX { COIN_COLLECTED("src/main/resources/sound/sfx/otSFX/powerups/drop-coins.mp3"), //Bomb - BOMB("src/main/resources/sound/sfx/otSFX/bomb/BombSound.wav"), + BOMB("src/main/resources/sound/sfx/otSFX/bomb/Bomb2.wav"), //Attack Sounds diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundEffects.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundEffects.java index d01d6bc6ee70bf0d2baacdb27dea168581509dcd..05fa151b7521ce896a08f71a40c0665bd339691a 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundEffects.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundEffects.java @@ -6,6 +6,8 @@ import de.hdm_stuttgart.battlearena.Model.Entity.IEntity; import de.hdm_stuttgart.battlearena.Model.Map.ITile; import de.hdm_stuttgart.battlearena.Model.Map.TileManager; import javafx.scene.media.AudioClip; +import javafx.scene.media.Media; +import javafx.scene.media.MediaPlayer; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -41,14 +43,13 @@ public class SoundEffects { List<Path> sfxPaths = fileManager.getFilePathsFromResources(path); String randomPath = fileManager.getRandomFilePath(sfxPaths); String resource = fileManager.convertPathToResourcePath(randomPath); - ///Thread sfxLoop = new Thread - service.execute(() -> { + Thread sfxLoop = new Thread(() -> { AudioClip effect = new AudioClip(getClass().getResource(resource).toString()); effect.setVolume((double) persistence.getSettings().getSfxVolume() /100); effect.play(); }); - //sfxLoop.setDaemon(true); - //sfxLoop.start(); + sfxLoop.setDaemon(true); + sfxLoop.start(); sfxPaths.clear(); } } @@ -58,13 +59,14 @@ public class SoundEffects { String path = soundEffect.getPath(); log.info(path); String resource = path.substring(18); // Begins at Ressource Folder - service.execute(()->{ - AudioClip audioClip = new AudioClip(getClass().getResource(resource).toExternalForm()); - audioClip.setVolume((double) persistence.getSettings().getSfxVolume()/100); - audioClip.play(); + Thread sfx = new Thread(()->{ + Media media = new Media(getClass().getResource(resource).toExternalForm()); + MediaPlayer mediaPlayer = new MediaPlayer(media); + mediaPlayer.setVolume(persistence.getSettings().getSfxVolume()); + mediaPlayer.play(); }); - //sfx.setDaemon(true); - //sfx.start(); + sfx.setDaemon(true); + sfx.start(); soundEffectPlayedTest = true; } diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/TestThread.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/TestThread.java new file mode 100644 index 0000000000000000000000000000000000000000..1cdbe841ed45656ae88fe3aa76bb3ac601566220 --- /dev/null +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/TestThread.java @@ -0,0 +1,28 @@ +package de.hdm_stuttgart.battlearena.Model.Sound; + +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; +import javafx.scene.media.AudioClip; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class TestThread extends Thread { + private static final Logger log = LogManager.getLogger(TestThread.class); + private SFX sfx; + private Persistence persistence = Persistence.getInstance(); + + @Override + public void run() { + String path = sfx.getPath(); + log.info(path); + String resource = path.substring(18); // Begins at Ressource Folder + AudioClip audioClip = new AudioClip(getClass().getResource(resource).toExternalForm()); + audioClip.setVolume((double) persistence.getSettings().getSfxVolume() / 100); + audioClip.play(); + log.info("bla"); + } + + public void startSound(SFX sfx) { + this.sfx = sfx; + start(); + } +} diff --git a/src/main/resources/player/appSettings.json b/src/main/resources/player/appSettings.json index c253782d6e6eba3463e66cde502d281427a2926b..9aaeff02f7c09b9db845b33c365be83b2f92a20b 100644 --- a/src/main/resources/player/appSettings.json +++ b/src/main/resources/player/appSettings.json @@ -1,4 +1,4 @@ { - "sfxVolume": 16, - "musicVolume": 16 + "sfxVolume": 29, + "musicVolume": 0 } \ No newline at end of file