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