From 5035aa5a96dcdc258ed0d81d90c1cd399cd6372f Mon Sep 17 00:00:00 2001 From: Cedric Beck Date: Mon, 14 Oct 2024 11:29:22 +0200 Subject: [PATCH] fixed sinking-rotation, volumeslider; deleted TODO comments --- .../main/java/pp/battleship/client/EffectHandler.java | 1 - .../src/main/java/pp/battleship/client/GameMusic.java | 11 ++++++++++- .../src/main/java/pp/battleship/client/Menu.java | 1 - .../main/java/pp/battleship/client/NetworkDialog.java | 1 - .../main/java/pp/battleship/client/VolumeSlider.java | 2 +- .../pp/battleship/client/gui/MapViewSynchronizer.java | 1 - .../pp/battleship/client/gui/SeaSynchronizer.java | 5 +---- .../java/pp/battleship/client/gui/ShipControl.java | 10 ++++++++-- .../java/pp/battleship/game/client/BattleState.java | 2 -- .../java/pp/battleship/game/client/ShootingState.java | 1 - .../pp/battleship/game/server/ServerGameLogic.java | 1 - .../src/main/java/pp/battleship/model/Shell.java | 1 - 12 files changed, 20 insertions(+), 17 deletions(-) diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/EffectHandler.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/EffectHandler.java index 4c24b979..10908a1f 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/EffectHandler.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/EffectHandler.java @@ -20,7 +20,6 @@ * EffectHandler manages the creation and manipulation of particle effects in the Battleship application. */ public class EffectHandler { - //TODO: Ex. 12 EffectHandler private final BattleshipApp app; private final Map> effects; 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 1ea53cb2..8275cd00 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 @@ -14,7 +14,6 @@ * An application state that plays sounds. */ public class GameMusic extends AbstractAppState { - //TODO: Ex. 10 GameMusic private static final Preferences PREFERENCES = getPreferences(GameMusic.class); private static final String ENABLED_PREF = "enabled"; private static final String VOLUME_PREF = "volume"; @@ -22,6 +21,7 @@ public class GameMusic extends AbstractAppState { private static final String MUSIC_PATH = "Sound/background.wav"; private AudioNode backgroundMusic; + private float volume; /** * Returns whether the music is enabled in the user preferences. @@ -99,7 +99,16 @@ public void stopMusic() { public void setMusicVolume(float volume) { if (backgroundMusic != null) { backgroundMusic.setVolume(volume); + this.volume = volume; PREFERENCES.putFloat(VOLUME_PREF, volume); } } + + /** + * Returns volume stored in class + * @return volume + */ + public float getVolume() { + return this.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 10e34daa..27dec49a 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 @@ -48,7 +48,6 @@ public Menu(BattleshipApp app) { addChild(new Label(lookup("battleship.name"), new ElementId("header"))); //NON-NLS addChild(new Checkbox(lookup("menu.sound-enabled"), new StateCheckboxModel(app, GameSound.class))); - //TODO: Ex. 10 VolumeSlider addChild(new Checkbox(lookup("menu.music-enabled"), new StateCheckboxModel(app, GameMusic.class))); addChild(volumeSlider); diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/NetworkDialog.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/NetworkDialog.java index 887667c0..a396f553 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/NetworkDialog.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/NetworkDialog.java @@ -61,7 +61,6 @@ class NetworkDialog extends SimpleDialog { input.addChild(host, 1); input.addChild(new Label(lookup("port.number") + ": ")); input.addChild(port, 1); - //TODO: Ex. 11 ClientHost Checkbox clientHostCheckbox = new Checkbox("Host Server"); input.addChild(clientHostCheckbox); DialogBuilder.simple(app.getDialogManager()) 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 4268825f..ed582d68 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 @@ -20,7 +20,7 @@ public class VolumeSlider extends Slider { public VolumeSlider(GameMusic gameMusic) { super(); this.gameMusic = gameMusic; - volume = GameMusic.volumeInPreferences(); + volume = gameMusic.getVolume(); getModel().setPercent(volume); } diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/MapViewSynchronizer.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/MapViewSynchronizer.java index d295dba9..c8bb2a97 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/MapViewSynchronizer.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/MapViewSynchronizer.java @@ -126,7 +126,6 @@ public Spatial visit(Battleship ship) { */ @Override public Spatial visit(Shell shell) { - //TODO: Ex. 13 2D Shell final ColorRGBA color = ColorRGBA.Black; Geometry ellipse = new Geometry("ellipse", new Sphere(50, 50, MapView.FIELD_SIZE / 2 * 0.8f)); Material mat = new Material(view.getApp().getAssetManager(), UNSHADED); //NON-NLS diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/SeaSynchronizer.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/SeaSynchronizer.java index 1be9c4e6..df3f4be1 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/SeaSynchronizer.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/SeaSynchronizer.java @@ -92,7 +92,6 @@ private Spatial handleMiss(Shot shot) { private Spatial handleHit(Shot shot) { final Battleship ship = requireNonNull(map.findShipAt(shot), "Missing ship"); final Node shipNode = requireNonNull((Node) getSpatial(ship), "Missing ship node"); - //TODO: Ex. 12 Hit shipNode.getControl(ShipControl.class).hit(shot); if (ship.isDestroyed()) { shipNode.getControl(ShipControl.class).destroyed(); @@ -102,7 +101,7 @@ private Spatial handleHit(Shot shot) { public void run() { handleShipDestroy(shipNode); } - }, 9000); + }, 10000); } return null; } @@ -149,7 +148,6 @@ public Spatial visit(Battleship ship) { final float x = 0.5f * (ship.getMinY() + ship.getMaxY() + 1f); final float z = 0.5f * (ship.getMinX() + ship.getMaxX() + 1f); node.setLocalTranslation(x, 0f, z); - //TODO: Ex. 12 ShipControl node.addControl(new ShipControl(ship, node, app.getEffectHandler())); return node; } @@ -163,7 +161,6 @@ public Spatial visit(Battleship ship) { */ @Override public Spatial visit(Shell shell) { - //TODO: Ex. 13 3D Shell final Spatial model = app.getAssetManager().loadModel("Models/Shell/shell.j3o"); model.setLocalScale(.05f); model.setShadowMode(ShadowMode.CastAndReceive); diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/ShipControl.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/ShipControl.java index fc7c6f76..49498617 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/ShipControl.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/ShipControl.java @@ -15,6 +15,7 @@ import com.jme3.scene.control.AbstractControl; import pp.battleship.client.EffectHandler; import pp.battleship.model.Battleship; +import pp.battleship.model.Rotation; import pp.battleship.model.Shot; import java.util.Timer; @@ -108,7 +109,12 @@ private void handleSinking(float tpf) { if (spatial == null) return; spatial.setLocalTranslation(spatial.getLocalTranslation().add(new Vector3f(0, -1, 0).mult(tpf * SINK_SPEED))); - spatial.rotate(tpf * SINK_ROT_SPEED, 0, 0); + if (battleship.getRot() == Rotation.UP || battleship.getRot() == Rotation.DOWN) { + spatial.rotate(tpf * SINK_ROT_SPEED, 0, 0); + } + else { + spatial.rotate(0, 0, tpf * SINK_ROT_SPEED); + } } // Handles the pitch oscillation to simulate wave movement. @@ -158,4 +164,4 @@ public void hit(Shot shot) { Vector3f firePos = shotWorld.subtract(shipNodePos); shipNode.attachChild(effectHandler.createFire(firePos, battleship)); } -} \ No newline at end of file +} diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/game/client/BattleState.java b/Projekte/battleship/model/src/main/java/pp/battleship/game/client/BattleState.java index d8426e43..ec6785b8 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/game/client/BattleState.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/game/client/BattleState.java @@ -57,10 +57,8 @@ public void receivedEffect(EffectMessage msg) { myTurn = msg.isMyTurn(); logic.setInfoText(msg.getInfoTextKey()); - //TODO: Ex. 13 add shell -> ItemAddedEvent Shell shell = new Shell(msg.getShot()); affectedMap(msg).add(shell); - //TODO: Ex. 13 Shell sound -> GameSound logic.playSound(Sound.SHELL_FLYING); logic.setState(new ShootingState(logic, shell, myTurn, msg)); } diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/game/client/ShootingState.java b/Projekte/battleship/model/src/main/java/pp/battleship/game/client/ShootingState.java index ce75aefe..75312b23 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/game/client/ShootingState.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/game/client/ShootingState.java @@ -26,7 +26,6 @@ public class ShootingState extends ClientState { * @param msg the effect message associated with the shooting action */ public ShootingState(ClientGameLogic logic, Shell shell, boolean myTurn, EffectMessage msg) { - //TODO: Ex. 13 ShootingState super(logic); this.msg = msg; this.myTurn = myTurn; diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/game/server/ServerGameLogic.java b/Projekte/battleship/model/src/main/java/pp/battleship/game/server/ServerGameLogic.java index d136a5e9..c193f375 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/game/server/ServerGameLogic.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/game/server/ServerGameLogic.java @@ -221,7 +221,6 @@ private boolean checkMap(List ships) { */ @Override public void received(ShootMessage msg, int from) { - //TODO: Ex. 13 Server State if (state != ServerState.BATTLE) LOGGER.log(Level.ERROR, "shoot not allowed in {0}", state); //NON-NLS else{ diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/model/Shell.java b/Projekte/battleship/model/src/main/java/pp/battleship/model/Shell.java index c97ef29f..6888cfe5 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/model/Shell.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/model/Shell.java @@ -9,7 +9,6 @@ * a Bezier curve. */ public class Shell implements Item { - //TODO: Ex. 13 Shell /** * Initial position of the shell */