diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java index e0deff2bcc94289fad94676058d4c6e0881d1a55..4f25db765a951d54e157ae96fc934e71bf9920dd 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java @@ -192,14 +192,14 @@ public class GameSceneController implements Initializable { verticalTileCount, runtimeInfo.getMapDataGame(), biom); - SoundEffects soundEffects = new SoundEffects(); + /* SoundEffects soundEffects = new SoundEffects(); try { soundEffects.playSoundEffect(this, inputHandler); } catch (IOException e) { throw new RuntimeException(e); } catch (InterruptedException e) { throw new RuntimeException(e); - } + }*/ runtimeInfo.setGameState(GameState.PLAYING); diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/MusicPlayer.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/MusicPlayer.java index d0e80a6ad36c54a8e757524d0cebc05bd84c0b5e..a90491b35e0c57d88eb3e7ae6ed85f6df20a4b32 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/MusicPlayer.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/MusicPlayer.java @@ -15,19 +15,15 @@ import org.apache.logging.log4j.LogManager; import java.io.IOException; import java.net.URL; -import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; -import java.util.Random; import java.util.ResourceBundle; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; -import java.util.stream.Stream; -public class MusicPlayer implements Initializable{ +public class MusicPlayer{ @@ -43,25 +39,19 @@ public class MusicPlayer implements Initializable{ public MusicPlayer(){} - @Override - public void initialize(URL url, ResourceBundle resourceBundle) { - currentGameState = GameState.NONE; - startGameStateMonitoring(); - } - private void startGameStateMonitoring(){ + public void startGameStateMonitoring(){ ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); scheduler.scheduleAtFixedRate(()->{ GameState newGameState = RuntimeInfo.getInstance().getGameState(); if(currentGameState != newGameState){ currentGameState = newGameState; - Platform.runLater(()-> updateMusic()); + Platform.runLater(this::updateMusic); } },0,1, TimeUnit.SECONDS); - } - + } private void updateMusic(){ stopMusic(); @@ -99,7 +89,7 @@ public class MusicPlayer implements Initializable{ public void stopMusic(){ if (mediaPlayer != null) { - mediaPlayer.dispose(); // Dispose of the MediaPlayer instance + mediaPlayer.dispose(); // Dispose of the MediaPlayer instance to ensure stoping } } @@ -108,16 +98,14 @@ public class MusicPlayer implements Initializable{ } public void setVolume(int volume){ - Persistence.getInstance().getSettings().setMusicVolume(volume); - mediaPlayer.setVolume(volume / 100); + settings.setMusicVolume(volume); + mediaPlayer.setVolume((double) volume / 100); } public int getVolume(){ - return Persistence.getInstance().getSettings().getMusicVolume(); + return settings.getMusicVolume(); } - public MusicPlayer getInstance(){return musicPlayerSingleton;} - } 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 379e46d797b774c0864156331cc6363943f295d9..cd16b2fa69369ea2c80408de115a6f6d1ac4655a 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 @@ -1,38 +1,36 @@ package de.hdm_stuttgart.battlearena.Model.Sound; import de.hdm_stuttgart.battlearena.Controller.GameSceneController; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.AppSettings; import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; -import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.RuntimeInfo; import de.hdm_stuttgart.battlearena.Model.Entity.IEntity; import de.hdm_stuttgart.battlearena.Model.Inputs.InputHandler; import de.hdm_stuttgart.battlearena.Model.Map.ITile; import de.hdm_stuttgart.battlearena.Model.Map.TileManager; -import javafx.fxml.Initializable; + import javafx.scene.media.AudioClip; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; import java.io.IOException; -import java.net.URL; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; -import java.util.ResourceBundle; + public class SoundEffects { private static final Logger log = LogManager.getLogger(SoundEffects.class); - private int sfxVolume; + private static final SoundEffects sfx = new SoundEffects(); - private RuntimeInfo runtimeInfo; - SoundFileManager fileManager = new SoundFileManager(); - GameSceneController gameSceneController; + public SoundEffects(){}; + SoundFileManager fileManager = new SoundFileManager(); + private AppSettings settings = Persistence.getInstance().getSettings(); public void playSoundEffect(GameSceneController gameSceneController, InputHandler inputHandler) throws IOException, InterruptedException { - MusicPlayer musicPlayer = new MusicPlayer(); log.info(inputHandler); - TileManager tileManager = gameSceneController.getTileManager();// TODO Find out why tileManager is null + TileManager tileManager = gameSceneController.getTileManager(); log.info(tileManager); IEntity player = gameSceneController.getPlayer(); ITile[] tileSet = tileManager.getTileSet(); @@ -46,7 +44,7 @@ public class SoundEffects { while(inputHandler.isMoveDown() || inputHandler.isMoveUp() || inputHandler.isMoveLeft() || inputHandler.isMoveRight()){ playerPosX = player.getMapPosX(); playerPosY = player.getMapPosY(); - mapTile = map[playerPosX][playerPosY]; + mapTile = map[playerPosY/48][playerPosX/48]; //TODO FIND ANOTHER WAY to get to the map tile System.out.println(mapTile); SFXLoop sfx = tileSet[mapTile].getSoundeffect(); System.out.println(playerPosX); @@ -56,9 +54,8 @@ public class SoundEffects { String randomPath = fileManager.getRandomFilePath(sfxPaths); String resource = fileManager.convertPathToResourcePath(randomPath); Thread sfxLoop = new Thread(() -> { - AudioClip effect = new AudioClip(resource); + AudioClip effect = new AudioClip(getClass().getResource(resource).toString()); effect.setVolume((double) Persistence.getInstance().getSettings().getSfxVolume() /100); - effect.setVolume(0.5); //TODO Replace with own Method effect.play(); }); sfxLoop.setDaemon(true); @@ -99,5 +96,6 @@ public class SoundEffects { return Persistence.getInstance().getSettings().getMusicVolume(); } + public SoundEffects getInstance(){return sfx;} }