From 400b458e29516440aabc7348fc64e4868eba54ea Mon Sep 17 00:00:00 2001
From: jg175 <jg175@hdm-stuttgart.de>
Date: Fri, 23 Feb 2024 21:07:47 +0100
Subject: [PATCH] FIX: End of gamestatemonitoring in Login Scene ADD: Logging

---
 .../Controller/PlayerCreateController.java           |  3 +++
 .../battlearena/Model/Sound/MusicPlayer.java         |  6 ++++++
 .../battlearena/Model/Sound/SfxOnce.java             |  3 +--
 .../battlearena/Model/Sound/SoundFileManager.java    |  8 ++++++++
 .../battlearena/Model/Sound/WalkEffects.java         |  1 +
 src/main/resources/player/playerStatsLocal.json      | 12 ++++++------
 6 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/PlayerCreateController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/PlayerCreateController.java
index 0d86f9f9..42c0d0d4 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/PlayerCreateController.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/PlayerCreateController.java
@@ -1,6 +1,7 @@
 package de.hdm_stuttgart.battlearena.Controller;
 
 import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader;
+import de.hdm_stuttgart.battlearena.Model.Sound.MusicPlayer;
 import javafx.fxml.FXML;
 import javafx.scene.layout.VBox;
 import javafx.stage.Stage;
@@ -9,6 +10,7 @@ public class PlayerCreateController {
     @FXML
     private VBox parent;
     private final SceneLoader sceneLoader = new SceneLoader();
+    private final MusicPlayer player = MusicPlayer.getInstance();
 
     private void switchScene(String name) {
         parent.getChildren().clear();
@@ -28,6 +30,7 @@ public class PlayerCreateController {
     @FXML
     private void exit() {
         Stage stage = (Stage) parent.getScene().getWindow();
+        player.getScheduler().shutdown();
         stage.close();
     }
 }
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 5e4fa7cf..e0bcbd74 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
@@ -32,19 +32,23 @@ public class MusicPlayer {
     }
 
     public void startGameStateMonitoring() {
+        log.info("gamestatemonitoring started");
         scheduler = Executors.newSingleThreadScheduledExecutor();
         scheduler.scheduleAtFixedRate(() -> {
             GameState newGameState = RuntimeInfo.getInstance().getGameState();
             if (currentGameState != newGameState) {
                 currentGameState = newGameState;
                 updateMusic();
+                log.info("gamestate changed");
             }
         }, 0, 1, TimeUnit.MILLISECONDS);
     }
 
     private void updateMusic() {
+        log.info("updating music...");
         stopMusic();
         playRandomMusic();
+
     }
 
     private void playRandomMusic() {
@@ -83,6 +87,7 @@ public class MusicPlayer {
 
     private void stopMusic() {
         if (mediaPlayer != null) {
+            log.info("stop music");
             mediaPlayer.dispose(); // Dispose of the MediaPlayer instance to ensure stoping
         }
     }
@@ -92,6 +97,7 @@ public class MusicPlayer {
         mediaPlayer.setVolume((double) volume / 100);
     }
     public ScheduledExecutorService getScheduler() {
+        log.info("gamestatemonitoring stopped");
         return scheduler;
     }
 
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SfxOnce.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SfxOnce.java
index 1a54dde4..2094ba42 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SfxOnce.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SfxOnce.java
@@ -21,14 +21,13 @@ public class SfxOnce extends Thread {
         AudioClip audioClip = new AudioClip(Objects.requireNonNull(getClass().getResource(resource)).toExternalForm());
         audioClip.setVolume((double) persistence.getSettings().getSfxVolume() / 100);
         this.isNotPlaying = false;
+        log.info("played soundeffect once");
         audioClip.play();
     }
 
     public void startSound(SFX sfx) {
             this.sfx = sfx;
-
             start();
-
     }
 
     public boolean isNotPlaying() {
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundFileManager.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundFileManager.java
index 9beacfbf..19e08738 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundFileManager.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/SoundFileManager.java
@@ -1,5 +1,8 @@
 package de.hdm_stuttgart.battlearena.Model.Sound;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -10,12 +13,15 @@ import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 class SoundFileManager {
+
+    private static final Logger log = LogManager.getLogger(MusicPlayer.class);
     protected List<Path> getFilePathsFromResources(Path folderPath) throws IOException {
         List<Path> result;
         try (Stream<Path> walk = Files.walk(folderPath)) {
             result = walk.filter(Files::isRegularFile)
                     .collect(Collectors.toList());
         }
+        log.info("retrieved file paths");
         return result;
     }
 
@@ -24,10 +30,12 @@ class SoundFileManager {
         int min = 0;
         int max = paths.size() - 1;
         int randomIndex = random.nextInt(max - min + 1 ) + min;
+        log.info("choose random file");
         return paths.get(randomIndex).toString();
     }
     protected String convertPathToResourcePath(String randomPath){
         String normalizedPath = Paths.get(randomPath).toString().replace('\\', '/');
+        log.info("converted filepaths");
         return normalizedPath.substring(18);
     }
 }
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/WalkEffects.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/WalkEffects.java
index 4c5cdf1a..fc4a6d0b 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/WalkEffects.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Sound/WalkEffects.java
@@ -45,6 +45,7 @@ public class WalkEffects extends Thread{
                 AudioClip effect = new AudioClip(Objects.requireNonNull(getClass().getResource(resource)).toString());
                 effect.setVolume((double) persistence.getSettings().getSfxVolume() /100);
                 effect.play();
+                log.info("played walk sound");
 
             sfxPaths.clear();
         }
diff --git a/src/main/resources/player/playerStatsLocal.json b/src/main/resources/player/playerStatsLocal.json
index f12f154b..5e8195f7 100644
--- a/src/main/resources/player/playerStatsLocal.json
+++ b/src/main/resources/player/playerStatsLocal.json
@@ -1,8 +1,8 @@
 {
-  "gamesLost": 5000,
-  "gamesWon": 500,
-  "kills": 500,
-  "deaths": 500,
-  "blocksDestroyed": 5000,
-  "gameTime": 5000
+  "gamesWon": 0,
+  "gamesLost": 0,
+  "kills": 0,
+  "deaths": 0,
+  "blocksDestroyed": 0,
+  "gameTime": 0
 }
\ No newline at end of file
-- 
GitLab