From 8275778d66903e24273f22c1761f1cacb690a60d Mon Sep 17 00:00:00 2001 From: Cedric Beck Date: Sat, 5 Oct 2024 11:28:15 +0200 Subject: [PATCH] Added functionality for preferences in 'GameMusic' --- .../pp/battleship/client/BattleshipApp.java | 5 +- .../java/pp/battleship/client/GameMusic.java | 30 ++++++-- .../main/java/pp/battleship/client/Menu.java | 2 +- .../client/SliderRangedValueModel.java | 71 ------------------- .../pp/battleship/client/VolumeSlider.java | 9 +-- 5 files changed, 29 insertions(+), 88 deletions(-) delete mode 100644 Projekte/battleship/client/src/main/java/pp/battleship/client/SliderRangedValueModel.java diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/BattleshipApp.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/BattleshipApp.java index db31edac..0062e4e5 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/BattleshipApp.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/BattleshipApp.java @@ -275,10 +275,9 @@ private void setupStates() { */ private void attachGameMusic() { //TODO: start volume - final GameMusic gameMusic = new GameMusic(0.5f); + final GameMusic gameMusic = new GameMusic(); logic.addListener(gameMusic); - gameMusic.setEnabled(true); -// gameMusic.setEnabled(GameSound.enabledInPreferences()); + gameMusic.setEnabled(GameMusic.enabledInPreferences()); stateManager.attach(gameMusic); } diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/GameMusic.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/GameMusic.java index a27003bf..44d93896 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/GameMusic.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/GameMusic.java @@ -11,22 +11,36 @@ import java.lang.System.Logger; import java.lang.System.Logger.Level; +import java.util.prefs.Preferences; + +import static pp.util.PreferencesUtils.getPreferences; public class GameMusic extends AbstractAppState implements GameEventListener { private static final Logger LOGGER = System.getLogger(GameMusic.class.getName()); - private AudioNode backgroundMusic; - private float startVolume; + private static final Preferences PREFERENCES = getPreferences(GameMusic.class); + private static final String ENABLED_PREF = "enabled"; + private static final String VOLUME_PREF = "volume"; - public GameMusic(float startVolume){ - this. startVolume = startVolume; + private static final String MUSIC_PATH = "Sound/background.wav"; + + private AudioNode backgroundMusic; + + public static boolean enabledInPreferences(){ + return PREFERENCES.getBoolean(ENABLED_PREF, true); } + public static float volumeInPreferences(){ + return PREFERENCES.getFloat(VOLUME_PREF, 0.5f); + } + + + @Override public void initialize(AppStateManager stateManager, Application app) { super.initialize(stateManager, app); - backgroundMusic = loadSound(app, "Sound/background.wav"); - setMusicVolume(startVolume); - playMusic(); + backgroundMusic = loadSound(app, MUSIC_PATH); + setMusicVolume(volumeInPreferences()); + if (isEnabled()) playMusic(); } private AudioNode loadSound(Application app, String name) { @@ -51,6 +65,7 @@ else if(!enabled && isEnabled()){ stopMusic(); } super.setEnabled(enabled); + PREFERENCES.putBoolean(ENABLED_PREF, enabled); } public void playMusic(){ @@ -71,6 +86,7 @@ public void stopMusic(){ public void setMusicVolume(float volume){ if(backgroundMusic != null){ backgroundMusic.setVolume(volume); + PREFERENCES.putFloat(VOLUME_PREF, volume); } } } diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/Menu.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/Menu.java index 470d194e..9fe019ce 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/Menu.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/Menu.java @@ -45,7 +45,7 @@ class Menu extends Dialog { public Menu(BattleshipApp app) { super(app.getDialogManager()); this.app = app; - volumeSlider = new VolumeSlider(0.5f, app.getStateManager().getState(GameMusic.class)); + volumeSlider = new VolumeSlider(app.getStateManager().getState(GameMusic.class)); addChild(new Label(lookup("battleship.name"), new ElementId("header"))); //NON-NLS addChild(new Checkbox(lookup("menu.sound-enabled"), diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/SliderRangedValueModel.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/SliderRangedValueModel.java deleted file mode 100644 index 506bbe20..00000000 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/SliderRangedValueModel.java +++ /dev/null @@ -1,71 +0,0 @@ -package pp.battleship.client; - -import com.simsilica.lemur.RangedValueModel; -import com.simsilica.lemur.core.VersionedReference; - -public class SliderRangedValueModel implements RangedValueModel { - - SliderRangedValueModel(){ - - } - - - @Override - public void setValue( double val ){ - System.out.println(val); - } - - @Override - public double getValue(){ - - return 0; - } - - @Override - public void setPercent( double val ){ - System.out.println(val); - } - - @Override - public double getPercent(){ - - return 0; - } - - @Override - public void setMaximum( double max ){ - - } - - @Override - public double getMaximum(){ - - return 0; - } - - @Override - public void setMinimum( double min ){ - - } - - @Override - public double getMinimum(){ - - return 0; - } - - @Override - public long getVersion() { - return 0; - } - - @Override - public Double getObject() { - return 0.0; - } - - @Override - public VersionedReference createReference() { - return null; - } -} diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/VolumeSlider.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/VolumeSlider.java index 4ca22a9e..ba2d1662 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/VolumeSlider.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/VolumeSlider.java @@ -6,18 +6,15 @@ public class VolumeSlider extends Slider { private GameMusic gameMusic; private float volume; - public VolumeSlider(float startVolume, GameMusic gameMusic){ + public VolumeSlider(GameMusic gameMusic){ super(); - getModel().setPercent(startVolume); this.gameMusic = gameMusic; - this.volume = (float) getModel().getPercent(); - gameMusic.setMusicVolume(volume); - System.out.println("init"); + volume = GameMusic.volumeInPreferences(); + getModel().setPercent(volume); } public void update(){ if(getModel().getPercent() != volume){ - System.out.println(volume); this.volume = (float) getModel().getPercent(); gameMusic.setMusicVolume(volume); }