diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java b/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java index 466f0a5fb534b1989daa40b817575dfdf6df4961..d3551b39bf8a7f264a942e2024266d4535eff3df 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java @@ -30,10 +30,11 @@ public class Main extends Application { stage.setTitle("BattleArena"); stage.setScene(scene); SoundManager soundManager = new SoundManager(); - //soundManager.playSound(); - soundManager.playSoundEffect(SFX.WALKING, true); + + soundManager.playSound("/sound/music/musicPlaceholder.wav", SFX.WALKING, true); + //soundManager.playMusic("/sound/music/musicPlaceholder.mp3"); //soundManager.playSoundEffect(SFX.WALKING, false); stage.show(); log.debug("Project started successfully!"); diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/ISoundManager.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/ISoundManager.java index f0afdceddee527386d39c294af83ced6c8e18dbe..45336b0965da74c3e9744e4a5354532ec3086f5d 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/ISoundManager.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/ISoundManager.java @@ -6,7 +6,10 @@ import java.nio.file.Path; import java.util.List; public interface ISoundManager { - void playSound(); + + void playSound(String path, SFX soundEffect, boolean playLoop) throws InterruptedException, MalformedURLException; + + void playMusic (String musicPath); void playSoundEffect(SFX effects, boolean playLoop) throws InterruptedException, MalformedURLException; diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundManager.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundManager.java index b251954356a08c62d3e69c6669bb4b55f32ea6b4..ffe950c84cb365520789318c73b7d66c5d61ae1b 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundManager.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundManager.java @@ -1,5 +1,6 @@ package de.hdm_stuttgart.battlearena.Model.Sound; +import javafx.application.Platform; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; @@ -8,6 +9,8 @@ import javafx.scene.media.Media; import javafx.scene.media.MediaPlayer; import javafx.util.Duration; +import javax.sound.sampled.*; +import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.nio.file.Files; @@ -27,20 +30,52 @@ public class SoundManager implements ISoundManager { private ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(5); + private ThreadPoolExecutor musicexecutor = (ThreadPoolExecutor) Executors.newFixedThreadPool(5); private volatile boolean stopLoop = false; private List<Path> walkingSFXPaths; + @Override + public void playSound(String path, SFX soundEffect, boolean playLoop) { + musicexecutor.execute(()->{ + playMusic(path); + + try { + playSoundEffect(soundEffect, playLoop); + } catch (InterruptedException | MalformedURLException e) { + throw new RuntimeException(e); + } + }); + } + @Override - public void playSound() { - Media music = new Media(getClass().getResource("/sound/music/musicPlaceholder.mp3").toExternalForm()); - MediaPlayer player = new MediaPlayer(music); - player.setVolume(10); - player.setStartTime(new Duration(0.0)); - executor.execute(()->player.play()); + public void playMusic(String musicPath) { + File file = new File("src/main/resources/sound/music/musicPlaceholder.wav" ); + if(file.exists()){ + AudioInputStream audioInputStream = null; + try { + audioInputStream = AudioSystem.getAudioInputStream(file); + } catch (UnsupportedAudioFileException | IOException e) { + throw new RuntimeException(e); + } + Clip clip = null; + try { + clip = AudioSystem.getClip(); + } catch (LineUnavailableException e) { + throw new RuntimeException(e); + } + try { + clip.open(audioInputStream); + } catch (LineUnavailableException | IOException e) { + throw new RuntimeException(e); + } + clip.start(); + }else { + System.out.println("File does not exist..."); + } } @Override diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 7723b69968c6d988b05b7eefdad84ff38b4cba01..a9c717ba06cb5d374558234cda58149a7f3b725c 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -3,10 +3,11 @@ module gui { requires javafx.fxml; requires javafx.media; requires org.apache.logging.log4j; - //requires spring.core; + requires java.desktop; + opens de.hdm_stuttgart.battlearena to javafx.fxml; - //opens de.hdm_stuttgart.battlearena.Model.Sound to javafx.media, spring.core; + opens de.hdm_stuttgart.battlearena.Model.Sound to javafx.media; exports de.hdm_stuttgart.battlearena.Main; exports de.hdm_stuttgart.battlearena.Controller; } diff --git a/src/main/resources/sound/music/musicPlaceholder.wav b/src/main/resources/sound/music/musicPlaceholder.wav new file mode 100644 index 0000000000000000000000000000000000000000..e10258b8b48d0253ca1a3141482ee600c96d58e9 Binary files /dev/null and b/src/main/resources/sound/music/musicPlaceholder.wav differ