From 539bdd3a216580e8c1141d992588377c6e09e916 Mon Sep 17 00:00:00 2001
From: Martin <ms618@hdm-stuttgart.de>
Date: Tue, 16 Jan 2024 13:43:50 +0100
Subject: [PATCH] Update: AppSettings.java (both fields now type "int", because
 volume ist stored in percentage) Update: Persistence.java (fixed appSettings
 reset method) Update: Parser.java (added method for parsing volume) Update:
 ParserTest.java (added test for testing volume parser) Update:
 RuntimeInfo.java (moved method to calculate ingametime in hours to
 PlayerStatistics.java)

---
 .../Model/DataStorage/Classes/AppSettings.java    | 14 +++++++-------
 .../Model/DataStorage/Classes/Persistence.java    |  4 ++--
 .../Model/DataStorage/Classes/RuntimeInfo.java    | 13 +++----------
 .../DataStorage/Classes/Utilities/Parser.java     |  8 ++++++++
 .../DataStorage/Classes/Utilities/ParserTest.java | 15 +++++++++++++++
 5 files changed, 35 insertions(+), 19 deletions(-)

diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/AppSettings.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/AppSettings.java
index a21c4d93..710cf9ca 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/AppSettings.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/AppSettings.java
@@ -2,28 +2,28 @@ package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes;
 
 public class AppSettings {
 
-    private Double sfxVolume;
-    private Double musicVolume;
+    private int sfxVolume;      //values from 0 to 100 (volume in percent)
+    private int musicVolume;    //values from 0 to 100 (volume in percent)
 
 
-    public AppSettings(Double sfxVolume, Double musicVolume) {
+    public AppSettings(int sfxVolume, int musicVolume) {
         this.sfxVolume = sfxVolume;
         this.musicVolume = musicVolume;
     }
 
-    public void setSfxVolume(Double sfxVolume) {
+    public void setSfxVolume(int sfxVolume) {
         this.sfxVolume = sfxVolume;
     }
 
-    public Double getSfxVolume() {
+    public int getSfxVolume() {
         return sfxVolume;
     }
 
-    public void setMusicVolume(Double musicVolume) {
+    public void setMusicVolume(int musicVolume) {
         this.musicVolume = musicVolume;
     }
 
-    public Double getMusicVolume() {
+    public int getMusicVolume() {
         return musicVolume;
     }
 
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Persistence.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Persistence.java
index c3f29bd8..0a7b2eb8 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Persistence.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Persistence.java
@@ -421,8 +421,8 @@ public class Persistence {
     }
 
     public void resetSettings(){
-        settings.setSfxVolume(0.5);
-        settings.setMusicVolume(0.5);
+        settings.setSfxVolume(50);
+        settings.setMusicVolume(50);
         try {
             gsonHandler.saveSettings(settings);
         }
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/RuntimeInfo.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/RuntimeInfo.java
index 4ed49570..bc262585 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/RuntimeInfo.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/RuntimeInfo.java
@@ -9,17 +9,14 @@ import de.hdm_stuttgart.battlearena.Model.Entity.EntityClass;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
-import java.util.ArrayList;
-
 public class RuntimeInfo {
 
     private static final Logger log = LogManager.getLogger(RuntimeInfo.class);
     private static final RuntimeInfo runtimeInfoSingleton = new RuntimeInfo();
     private final Persistence persistenceInst = Persistence.getInstance();
-    protected String mapDataGame;
-    protected MapData mapGame;
-    protected boolean offlineMode;  //if Account-Type is online but no SQL connection: start game without stats tracking
-
+    private String mapDataGame;
+    private MapData mapGame;
+    private boolean offlineMode;  //if Account-Type is online but no SQL connection: start game without stats tracking
     private GameState gameState = GameState.MENU; //Default value: MENU
     private GameMode gameMode = GameMode.LOCAL; //Default value: LOCAL
 
@@ -92,8 +89,4 @@ public class RuntimeInfo {
         this.playerTwoClass = playerTwoClass;
     }
 
-    public int gameTimeInHours(){
-        return persistenceInst.getStatistics().getGameTime() / 3600;
-    }
-
 }
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/Parser.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/Parser.java
index a98f5bc2..29639d0b 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/Parser.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/Parser.java
@@ -350,4 +350,12 @@ public class Parser {
         }
     }
 
+    public static void volumeValid(int volume) throws ParserException{
+
+        if(volume > 100 | volume < 0){
+            throw new ParserException("Volume must be between 0 and 100!");
+        }
+
+    }
+
 }
diff --git a/src/test/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/ParserTest.java b/src/test/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/ParserTest.java
index 0ffdfca9..07406e5e 100644
--- a/src/test/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/ParserTest.java
+++ b/src/test/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Utilities/ParserTest.java
@@ -251,4 +251,19 @@ class ParserTest {
         assertTrue(testMe.getMessage().contains("Player statistics data corrupted - Minimum value for ingame time is 0 seconds!"));
     }
 
+    @ParameterizedTest
+    @ValueSource(ints = {0, 100, 50})
+    void volumeValid(int test){
+        assertDoesNotThrow(() -> Parser.volumeValid(test));
+    }
+
+    @Test
+    void volumeInvalid(){
+        ParserException testMe = assertThrows(ParserException.class, () -> Parser.volumeValid(-1));
+        assertTrue(testMe.getMessage().contains("Volume must be between 0 and 100!"));
+
+        testMe = assertThrows(ParserException.class, () -> Parser.volumeValid(101));
+        assertTrue(testMe.getMessage().contains("Volume must be between 0 and 100!"));
+    }
+
 }
\ No newline at end of file
-- 
GitLab