From 139acf7e987e2800d633c48994b9f22146eb8bf4 Mon Sep 17 00:00:00 2001 From: jg175 <jg175@hdm-stuttgart.de> Date: Thu, 22 Feb 2024 21:48:14 +0100 Subject: [PATCH] UPDATE: VolumeClass for SoundEffects --- .../Controller/PauseSettingsController.java | 4 +- .../Controller/SettingsController.java | 4 +- .../Model/Entity/GameplayObjects/Bomb.java | 4 +- .../battlearena/Model/Entity/Player.java | 4 +- .../Model/Inputs/InputHandler.java | 1 - .../battlearena/Model/Sound/SoundEffects.java | 54 ------------------- .../Model/Sound/SoundEffectsVolume.java | 17 ++++++ src/test/java/SoundEffectsTest.java | 18 +++---- 8 files changed, 31 insertions(+), 75 deletions(-) delete mode 100644 src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundEffects.java create mode 100644 src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundEffectsVolume.java diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/PauseSettingsController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/PauseSettingsController.java index 802a0b37..d5e86f39 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/PauseSettingsController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/PauseSettingsController.java @@ -3,7 +3,7 @@ package de.hdm_stuttgart.battlearena.Controller; import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader; import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; import de.hdm_stuttgart.battlearena.Model.Sound.MusicPlayer; -import de.hdm_stuttgart.battlearena.Model.Sound.SoundEffects; +import de.hdm_stuttgart.battlearena.Model.Sound.SoundEffectsVolume; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Slider; @@ -21,7 +21,7 @@ public class PauseSettingsController implements Initializable { private int musicVolume, sfxVolume; Persistence persistence = Persistence.getInstance(); MusicPlayer player = MusicPlayer.getInstance(); - SoundEffects sfx = new SoundEffects(); + SoundEffectsVolume sfx = new SoundEffectsVolume(); @Override public void initialize(URL url, ResourceBundle resourceBundle) { diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/SettingsController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/SettingsController.java index f10900fc..fd27fba3 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/SettingsController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/SettingsController.java @@ -5,7 +5,7 @@ import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader; import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.RuntimeInfo; import de.hdm_stuttgart.battlearena.Model.Sound.MusicPlayer; -import de.hdm_stuttgart.battlearena.Model.Sound.SoundEffects; +import de.hdm_stuttgart.battlearena.Model.Sound.SoundEffectsVolume; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; @@ -26,7 +26,7 @@ public class SettingsController implements Initializable { private int musicVolume, sfxVolume; Persistence persistence = Persistence.getInstance(); MusicPlayer player = MusicPlayer.getInstance(); - SoundEffects sfx = new SoundEffects(); + SoundEffectsVolume sfx = new SoundEffectsVolume(); @Override public void initialize(URL url, ResourceBundle resourceBundle) { 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 48e2db0e..64436f22 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,7 +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.SfxOnce; -import de.hdm_stuttgart.battlearena.Model.Sound.SoundEffects; +import de.hdm_stuttgart.battlearena.Model.Sound.SoundEffectsVolume; import javafx.geometry.BoundingBox; import javafx.scene.canvas.GraphicsContext; import javafx.scene.image.Image; @@ -27,7 +27,7 @@ public class Bomb implements IEntity { private BoundingBox boxCollider; private final ObjectType OBJECT_TYPE = ObjectType.BOMB; private ObjectStatus OBJECT_STATUS = ObjectStatus.UNUSED; - private SoundEffects sfx = new SoundEffects(); + private SoundEffectsVolume sfx = new SoundEffectsVolume(); //private SoundEffects soundEffects; public Bomb(int posX, int posY, GraphicsContext graphicsContext) { diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java index e41028d4..85f60922 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java @@ -9,7 +9,7 @@ import de.hdm_stuttgart.battlearena.Model.Inputs.InputHandler; import de.hdm_stuttgart.battlearena.Model.Map.TileManager; import de.hdm_stuttgart.battlearena.Model.Sound.SFX; import de.hdm_stuttgart.battlearena.Model.Sound.SfxOnce; -import de.hdm_stuttgart.battlearena.Model.Sound.SoundEffects; +import de.hdm_stuttgart.battlearena.Model.Sound.SoundEffectsVolume; import de.hdm_stuttgart.battlearena.Model.Sound.WalkEffects; import javafx.geometry.BoundingBox; import javafx.scene.canvas.GraphicsContext; @@ -39,7 +39,7 @@ class Player implements IEntity { private BoundingBox boxCollider; - private SoundEffects sfx = new SoundEffects(); + private SoundEffectsVolume sfx = new SoundEffectsVolume(); private Image directionDownOne, diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Inputs/InputHandler.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Inputs/InputHandler.java index 324829b1..27aed7d1 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Inputs/InputHandler.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Inputs/InputHandler.java @@ -1,6 +1,5 @@ package de.hdm_stuttgart.battlearena.Model.Inputs; -import de.hdm_stuttgart.battlearena.Model.Sound.SoundEffects; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; 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 deleted file mode 100644 index 3e2f33dc..00000000 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundEffects.java +++ /dev/null @@ -1,54 +0,0 @@ -package de.hdm_stuttgart.battlearena.Model.Sound; - -import de.hdm_stuttgart.battlearena.Controller.GameSceneController; -import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; -import javafx.scene.media.Media; -import javafx.scene.media.MediaPlayer; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.io.IOException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - - -public class SoundEffects { - private static final Logger log = LogManager.getLogger(SoundEffects.class); - - private ExecutorService service = Executors.newCachedThreadPool(); - private SoundFileManager fileManager = new SoundFileManager(); - private Persistence persistence = Persistence.getInstance(); - private boolean soundEffectPlayedTest = false; - - - - public void playSoundEffect(GameSceneController gameSceneController) throws IOException, InterruptedException { - - } - - - public void playSoundEffectOnce(SFX soundEffect){ - String path = soundEffect.getPath(); - log.info(path); - String resource = path.substring(18); // Begins at Ressource Folder - 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(); - soundEffectPlayedTest = true; - } - - - public void setSfxVolume(int volume){ - persistence.getSettings().setSfxVolume(volume); - } - - - public boolean isSoundEffectPlayedTest() { - return soundEffectPlayedTest; - } -} diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundEffectsVolume.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundEffectsVolume.java new file mode 100644 index 00000000..dd0e5778 --- /dev/null +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundEffectsVolume.java @@ -0,0 +1,17 @@ +package de.hdm_stuttgart.battlearena.Model.Sound; + +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + + +public class SoundEffectsVolume { + private static final Logger log = LogManager.getLogger(SoundEffectsVolume.class); + + private Persistence persistence = Persistence.getInstance(); + + + public void setSfxVolume(int volume){ + persistence.getSettings().setSfxVolume(volume); + } +} diff --git a/src/test/java/SoundEffectsTest.java b/src/test/java/SoundEffectsTest.java index 149775ef..890ff6f4 100644 --- a/src/test/java/SoundEffectsTest.java +++ b/src/test/java/SoundEffectsTest.java @@ -1,22 +1,19 @@ import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseException; import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; -import de.hdm_stuttgart.battlearena.Model.Sound.SFX; -import de.hdm_stuttgart.battlearena.Model.Sound.SoundEffects; +import de.hdm_stuttgart.battlearena.Model.Sound.SoundEffectsVolume; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; public class SoundEffectsTest { private static final Logger log = LogManager.getLogger(SoundEffectsTest.class); - private SoundEffects soundEffects; + private SoundEffectsVolume soundEffects; private Persistence persistence; @BeforeEach void SetUp(){ - soundEffects = new SoundEffects(); + soundEffects = new SoundEffectsVolume(); persistence = Persistence.getInstance(); try { persistence.loadSettings(); @@ -25,8 +22,8 @@ public class SoundEffectsTest { } } - @Test - void playSoundEffectOnceTest(){ + + /*void playSoundEffectOnceTest(){ soundEffects.playSoundEffectOnce(SFX.BOMB); Assertions.assertTrue(soundEffects.isSoundEffectPlayedTest()); } @@ -39,11 +36,8 @@ public class SoundEffectsTest { Assertions.assertTrue(soundEffects.isSoundEffectPlayedTest()); Assertions.assertEquals(50, persistence.getSettings().getSfxVolume()); }); - } + }*/ - @Test - void playSoundEffectTest(){ - } } -- GitLab