This commit is contained in:
Tamino Mueller 2024-10-13 20:34:01 +02:00
parent c8621e02c6
commit c0a3e8b37a
5 changed files with 30 additions and 22 deletions

View File

@ -272,12 +272,15 @@ public class BattleshipApp extends SimpleApplication implements BattleshipClient
stateManager.attachAll(new EditorAppState(), new BattleAppState(), new SeaAppState()); stateManager.attachAll(new EditorAppState(), new BattleAppState(), new SeaAppState());
} }
private void attachGameMusic() { private void atttachGameMusic() {
final GameMusic gameMusic = new GameMusic(); final GameMusic gameSound = new GameMusic();
gameMusic.setEnabled(GameMusic.enabledInPreferences()); gameSound.setEnabled(GameMusic.enabledInPreferences());
stateManager.attach(gameMusic); stateManager.attach(gameSound);
} }
/** /**
* Attaches the game sound state and sets its initial enabled state. * Attaches the game sound state and sets its initial enabled state.
* *

View File

@ -12,6 +12,8 @@ import com.jme3.app.state.AbstractAppState;
import com.jme3.app.state.AppStateManager; import com.jme3.app.state.AppStateManager;
import pp.battleship.game.client.ClientGameLogic; import pp.battleship.game.client.ClientGameLogic;
/** /**
* Abstract class representing a state in the Battleship game. * Abstract class representing a state in the Battleship game.
* Extends the AbstractAppState from jMonkeyEngine to manage state behavior. * Extends the AbstractAppState from jMonkeyEngine to manage state behavior.

View File

@ -87,7 +87,7 @@ public class GameSound extends AbstractAppState implements GameEventListener {
* @param name The name of the sound file. * @param name The name of the sound file.
* @return The loaded AudioNode. * @return The loaded AudioNode.
*/ */
private AudioNode loadSound(Application app, String name) { public AudioNode loadSound(Application app, String name) {
try { try {
final AudioNode sound = new AudioNode(app.getAssetManager(), name, AudioData.DataType.Buffer); final AudioNode sound = new AudioNode(app.getAssetManager(), name, AudioData.DataType.Buffer);
sound.setLooping(false); sound.setLooping(false);

View File

@ -32,7 +32,7 @@ class Menu extends Dialog {
private static final Preferences PREFERENCES = getPreferences(Menu.class); private static final Preferences PREFERENCES = getPreferences(Menu.class);
private static final String LAST_PATH = "last.file.path"; private static final String LAST_PATH = "last.file.path";
private final VolumeSlider slider; // private final VolumeSlider slider;
private final BattleshipApp app; private final BattleshipApp app;
private final Button loadButton = new Button(lookup("menu.map.load")); private final Button loadButton = new Button(lookup("menu.map.load"));
private final Button saveButton = new Button(lookup("menu.map.save")); private final Button saveButton = new Button(lookup("menu.map.save"));
@ -42,13 +42,14 @@ class Menu extends Dialog {
* *
* @param app the BattleshipApp instance * @param app the BattleshipApp instance
*/ */
public Menu(BattleshipApp app) { public Menu(BattleshipApp app) {
super(app.getDialogManager()); super(app.getDialogManager());
this.app = app; this.app = app;
addChild(new Label(lookup("battleship.name"), new ElementId("header"))); //NON-NLS addChild(new Label(lookup("battleship.name"), new ElementId("header"))); //NON-NLS
addChild(new Checkbox(lookup("menu.sound-enabled"), addChild(new Checkbox(lookup("menu.sound-enabled"),
new StateCheckboxModel(app, GameSound.class))); new StateCheckboxModel(app, GameSound.class)));
slider = new VolumeSlider(app.getStateManager().getState(GameMusic.class)); // slider = new VolumeSlider(app.getStateManager().getState(GameMusic.class));
addChild(loadButton) addChild(loadButton)
.addClickCommands(s -> ifTopDialog(this::loadDialog)); .addClickCommands(s -> ifTopDialog(this::loadDialog));
addChild(saveButton) addChild(saveButton)
@ -61,8 +62,7 @@ class Menu extends Dialog {
addChild(new Checkbox(lookup("menu.sound-enabled"), new StateCheckboxModel(app, GameSound.class))); addChild(new Checkbox(lookup("menu.sound-enabled"), new StateCheckboxModel(app, GameSound.class)));
addChild(new Checkbox(lookup("menu.background-sound-enabled"), new StateCheckboxModel(app, GameMusic.class))); addChild(new Checkbox(lookup("menu.background-sound-enabled"), new StateCheckboxModel(app, GameMusic.class)));
// addChild(slider);
addChild(slider);
} }
@ -74,11 +74,15 @@ class Menu extends Dialog {
loadButton.setEnabled(app.getGameLogic().mayLoadMap()); loadButton.setEnabled(app.getGameLogic().mayLoadMap());
saveButton.setEnabled(app.getGameLogic().maySaveMap()); saveButton.setEnabled(app.getGameLogic().maySaveMap());
} }
@Override
public void update(float delta){ /* @Override
public void update(float delta) {
slider.update(); slider.update();
} }
*/
/** /**
* As an escape action, this method closes the menu if it is the top dialog. * As an escape action, this method closes the menu if it is the top dialog.
*/ */

View File

@ -1,12 +1,5 @@
package pp.battleship.game.client; package pp.battleship.game.client;
import static pp.util.PreferencesUtils.getPreferences;
import java.lang.System.Logger;
import java.lang.System.Logger.Level;
import java.util.prefs.Preferences;
import com.jme3.app.Application; import com.jme3.app.Application;
import com.jme3.app.state.AbstractAppState; import com.jme3.app.state.AbstractAppState;
import com.jme3.app.state.AppStateManager; import com.jme3.app.state.AppStateManager;
@ -15,6 +8,12 @@ import com.jme3.asset.AssetNotFoundException;
import com.jme3.audio.AudioData; import com.jme3.audio.AudioData;
import com.jme3.audio.AudioNode; import com.jme3.audio.AudioNode;
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{ public class GameMusic extends AbstractAppState{
private static final Logger LOGGER = System.getLogger(GameMusic.class.getName()); private static final Logger LOGGER = System.getLogger(GameMusic.class.getName());
private static final Preferences PREFERENCES = getPreferences(GameMusic.class); private static final Preferences PREFERENCES = getPreferences(GameMusic.class);
@ -43,7 +42,7 @@ public class GameMusic extends AbstractAppState{
/** /**
* Initializes the sound effects for the game. * Initializes the sound effects for the game.
* Overrides {@link AbstractAppState#initialize(AppStateManager, Application)} * Overrides {@link com.jme3.app.state.AbstractAppState#initialize(com.jme3.app.state.AppStateManager, com.jme3.app.Application)}
* *
* @param stateManager The state manager * @param stateManager The state manager
* @param app The application * @param app The application
@ -51,7 +50,7 @@ public class GameMusic extends AbstractAppState{
@Override @Override
public void initialize(AppStateManager stateManager, Application app) { public void initialize(AppStateManager stateManager, Application app) {
super.initialize(stateManager, app); super.initialize(stateManager, app);
music = loadSound(app, "Sound/DasBootMenu.ogg"); music = loadSoundb(app, "Sound/Music/My_heart_will_go_on.ogg");
setVolume(volumeInPreferences()); setVolume(volumeInPreferences());
music.setLooping(true); music.setLooping(true);
if (isEnabled() && music != null) { if (isEnabled() && music != null) {
@ -66,7 +65,7 @@ public class GameMusic extends AbstractAppState{
* @param name The name of the sound file. * @param name The name of the sound file.
* @return The loaded AudioNode. * @return The loaded AudioNode.
*/ */
/* private AudioNode loadSound(Application app, String name) { private AudioNode loadSoundb(Application app, String name) {
try{ try{
final AudioNode sound = new AudioNode(app.getAssetManager(), name, AudioData.DataType.Buffer); final AudioNode sound = new AudioNode(app.getAssetManager(), name, AudioData.DataType.Buffer);
sound.setLooping(false); sound.setLooping(false);
@ -79,7 +78,7 @@ public class GameMusic extends AbstractAppState{
return null; return null;
} }
*/
/** /**
* Sets the enabled state of this AppState. * Sets the enabled state of this AppState.