From bf16a18b71253b8c68278d7356cbad1a062c0729 Mon Sep 17 00:00:00 2001 From: Lukas Bauer <157071544+Heady045@users.noreply.github.com> Date: Fri, 11 Oct 2024 14:23:49 +0200 Subject: [PATCH] Aufgabe 13 edited class BattleState in order to implement the 2D map feature edited class GameSound to add the Missile launch sound edited class MapViewSynchronizer in order to implement the 2D map feature edited class ImpactEffectManager removed unused import edited class SeaSynchronizer removed unused code edited class Shell in order to implement the 2D map feature edited class ShellControl in order to implement the 2D map feature edited Sound added Missile launch enum edited FloatMath to improve the animation for the 2D projectile added missileLaunch.wav --- .../java/pp/battleship/client/GameSound.java | 11 ++- .../client/gui/ImpactEffectManager.java | 16 ----- .../client/gui/MapViewSynchronizer.java | 21 +++++- .../client/gui/SeaSynchronizer.java | 8 +-- .../battleship/client/gui/ShellControl.java | 68 +++++++++++------- .../resources/Sound/Effects/missileLaunch.wav | Bin 0 -> 118894 bytes .../battleship/game/client/BattleState.java | 4 +- .../main/java/pp/battleship/model/Shell.java | 60 ++++++++++++---- .../pp/battleship/notification/Sound.java | 6 +- .../src/main/java/pp/util/FloatMath.java | 45 ++++++++++++ .../java/pp/view/ModelViewSynchronizer.java | 2 +- 11 files changed, 176 insertions(+), 65 deletions(-) create mode 100644 Projekte/battleship/client/src/main/resources/Sound/Effects/missileLaunch.wav diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/GameSound.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/GameSound.java index e7215002..e915a995 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/GameSound.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/GameSound.java @@ -34,6 +34,7 @@ public class GameSound extends AbstractAppState implements GameEventListener { private AudioNode splashSound; private AudioNode shipDestroyedSound; private AudioNode explosionSound; + private AudioNode missileLaunch; /** * Checks if sound is enabled in the preferences. @@ -78,6 +79,7 @@ public void initialize(AppStateManager stateManager, Application app) { shipDestroyedSound = loadSound(app, "Sound/Effects/sunken.wav"); //NON-NLS splashSound = loadSound(app, "Sound/Effects/splash.wav"); //NON-NLS explosionSound = loadSound(app, "Sound/Effects/explosion.wav"); //NON-NLS + missileLaunch = loadSound(app, "Sound/Effects/missileLaunch.wav"); } /** @@ -93,13 +95,16 @@ private AudioNode loadSound(Application app, String name) { sound.setLooping(false); sound.setPositional(false); return sound; - } - catch (AssetLoadException | AssetNotFoundException ex) { + } catch (AssetLoadException | AssetNotFoundException ex) { LOGGER.log(Level.ERROR, ex.getMessage(), ex); } return null; } + public void missileLaunch() { + missileLaunch.playInstance(); + } + /** * Plays the splash sound effect. */ @@ -126,6 +131,7 @@ public void shipDestroyed() { /** * Checks the according case for the soundeffect + * * @param event the received event */ @Override @@ -134,6 +140,7 @@ public void receivedEvent(SoundEvent event) { case EXPLOSION -> explosion(); case SPLASH -> splash(); case DESTROYED_SHIP -> shipDestroyed(); + case MISSILE_LAUNCH -> missileLaunch(); } } } diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/ImpactEffectManager.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/ImpactEffectManager.java index 1f7be2f6..37591791 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/ImpactEffectManager.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/ImpactEffectManager.java @@ -1,6 +1,5 @@ package pp.battleship.client.gui; -import com.jme3.app.Application; import com.jme3.asset.AssetManager; import com.jme3.effect.ParticleEmitter; import com.jme3.effect.ParticleMesh.Type; @@ -105,29 +104,16 @@ private ParticleEmitter createParticleEmitter(String name, int count, ColorRGBA private static class EffectCleanupControl extends AbstractControl { private final ParticleEmitter emitter; -// private final Node attachedNode; private float currentTime = 0; private final float duration = 3.5f; - /** - * Constructor for managing cleanup when a particle emitter is attached to a specific node. - * - * @param emitter The particle emitter to manage. - * @param attachedNode The node to which the emitter is attached. - */ -// public EffectCleanupControl(ParticleEmitter emitter, Node attachedNode) { -// this.emitter = emitter; -// this.attachedNode = attachedNode; -// } - /** * Constructor for managing cleanup of a standalone particle emitter. * * @param emitter The particle emitter to manage. */ public EffectCleanupControl(ParticleEmitter emitter) { -// this(emitter, null); this.emitter = emitter; } @@ -140,10 +126,8 @@ public EffectCleanupControl(ParticleEmitter emitter) { protected void controlUpdate(float tpf) { currentTime += tpf; if (currentTime <= duration) { - } if (currentTime >= 1f && currentTime <= 1.1) { - //Start emitter.setNumParticles(50); emitter.setParticlesPerSec(50); 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 2e2c840d..7e7f0c48 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 @@ -12,9 +12,13 @@ import com.jme3.scene.Node; import com.jme3.scene.Spatial; import pp.battleship.model.Battleship; +import pp.battleship.model.IntPoint; import pp.battleship.model.Shell; import pp.battleship.model.Shot; +import pp.util.FloatMath; +import pp.util.FloatPoint; import pp.util.Position; +import java.lang.System.Logger; /** * Synchronizes the visual representation of the ship map with the game model. @@ -28,6 +32,8 @@ class MapViewSynchronizer extends ShipMapSynchronizer { private static final float SHIP_DEPTH = 0f; private static final float INDENT = 4f; + private static final float SHELL_DEPTH = 8f; + // Colors used for different visual elements private static final ColorRGBA HIT_COLOR = ColorRGBA.Red; private static final ColorRGBA MISS_COLOR = ColorRGBA.Blue; @@ -110,9 +116,22 @@ public Spatial visit(Battleship ship) { return shipNode; } + /** + * + * @param shell + * @return + */ @Override public Spatial visit(Shell shell) { - return null; + LOGGER.log(Logger.Level.DEBUG, "Visiting {0}", shell); + final Node shellNode = new Node("shell"); + final Position startPosition = view.modelToView(shell.getCurrentPosition().x,shell.getCurrentPosition().z); + + shellNode.attachChild(view.getApp().getDraw().makeRectangle(startPosition.getX(),startPosition.getY(), SHELL_DEPTH, 30, 30, ColorRGBA.Black)); + + shellNode.addControl(new ShellControl(shell, this.view, shell.getLogic())); + return shellNode; + } /** 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 ea72e7b5..f93d0ea6 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 @@ -109,7 +109,7 @@ private Geometry createCylinder(Shot shot) { geometry.setMaterial(createColoredMaterial(color)); geometry.rotate(HALF_PI, 0f, 0f); - // compute the center of the shot in world coordinates + geometry.setLocalTranslation(shot.getY() + 0.5f, 0f, shot.getX() + 0.5f); return geometry; @@ -140,14 +140,14 @@ public Spatial visit(Shell shell) { final Spatial bombModel = app.getAssetManager().loadModel(BOMB); // Apply transformations to the bomb model (scale, rotate, etc. if needed) - bombModel.scale(0.05f); // Adjust the scale based on your model size - bombModel.rotate(-HALF_PI, 0f, 0f); // Rotate the model if necessary + bombModel.scale(0.05f); + bombModel.rotate(-HALF_PI, 0f, 0f); // Set the position of the bomb at the shell's current position bombModel.setLocalTranslation(shell.getCurrentPosition()); // Add a control to animate the bomb's movement (similar to the previous cylinder animation) - bombModel.addControl(new ShellControl(shell)); + bombModel.addControl(new ShellControl(shell,shell.getLogic())); return bombModel; } diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/ShellControl.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/ShellControl.java index df196946..f448f1ad 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/ShellControl.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/ShellControl.java @@ -12,8 +12,13 @@ import com.jme3.renderer.RenderManager; import com.jme3.renderer.ViewPort; import com.jme3.scene.control.AbstractControl; +import pp.battleship.game.client.ClientGameLogic; +import pp.battleship.message.server.EffectMessage; import pp.battleship.model.Battleship; import pp.battleship.model.Shell; +import pp.battleship.notification.Sound; +import pp.util.FloatPoint; +import pp.util.Position; import java.lang.System.Logger; import java.lang.System.Logger.Level; @@ -28,21 +33,6 @@ * The ship oscillates to simulate a realistic movement on water, based on its orientation and length. */ class ShellControl extends AbstractControl { - /** - * The axis of rotation for the ship's pitch (tilting forward and backward). - */ - private final Vector3f axis; - - /** - * The duration of one complete oscillation cycle in seconds. - */ - private final float cycle; - - /** - * The amplitude of the pitch oscillation in radians, determining how much the ship tilts. - */ - private final float amplitude; - /** * A quaternion representing the ship's current pitch rotation. */ @@ -54,6 +44,10 @@ class ShellControl extends AbstractControl { private float time; private Shell shell; + private MapView view; + private ClientGameLogic logic; + private EffectMessage msg; + private boolean hasPlayedSound = false; /** * Logger for logging messages related to ShipControl operations. */ @@ -66,14 +60,22 @@ class ShellControl extends AbstractControl { * * @param shell the Battleship object to control */ - public ShellControl(Shell shell) { + public ShellControl(Shell shell, ClientGameLogic clientGameLogic) { this.shell = shell; - // Determine the axis of rotation based on the ship's orientation - axis = Vector3f.UNIT_X; + this.logic = clientGameLogic; + this.msg = shell.getMsg(); + } - // Set the cycle duration and amplitude based on the ship's length - cycle = 1 * 2f; - amplitude = 5f * DEG_TO_RAD / 1; + /** + * @param shell + * @param view + * @param clientGameLogic + */ + public ShellControl(Shell shell, MapView view, ClientGameLogic clientGameLogic) { + this.shell = shell; + this.view = view; + this.logic = clientGameLogic; + this.msg = shell.getMsg(); } /** @@ -85,11 +87,25 @@ public ShellControl(Shell shell) { @Override protected void controlUpdate(float tpf) { // If spatial is null, do nothing - if (spatial == null) return; - - shell.updatePosition(tpf); - spatial.setLocalTranslation(shell.getCurrentPosition()); - + if (spatial == null) + return; + if (shell.isFinished() && !hasPlayedSound) { + if (!msg.getShot().isHit()) + logic.playSound(Sound.SPLASH); + else if (msg.getDestroyedShip() == null) + logic.playSound(Sound.EXPLOSION); + else + logic.playSound(Sound.DESTROYED_SHIP); + hasPlayedSound = true; + } + if (view == null) { + shell.updatePosition(tpf); + spatial.setLocalTranslation(shell.getCurrentPosition()); + } else { + shell.updatePosition(tpf); + Position pos2d = view.modelToView(shell.getCurrentPosition().x - 0.3f, shell.getCurrentPosition().z - 0.3f); + spatial.setLocalTranslation(pos2d.getY(), pos2d.getX(), 0); + } } /** diff --git a/Projekte/battleship/client/src/main/resources/Sound/Effects/missileLaunch.wav b/Projekte/battleship/client/src/main/resources/Sound/Effects/missileLaunch.wav new file mode 100644 index 0000000000000000000000000000000000000000..092b0bf7097aafad2b774f52f1b2cc66a23f96ca GIT binary patch literal 118894 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 TLp!^}?mxRUxBL6?Z+h?(omhqw literal 0 HcmV?d00001 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 19915410..675ba3f2 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 @@ -55,11 +55,11 @@ else if (logic.getOpponentMap().isValid(pos)) @Override public void receivedEffect(EffectMessage msg) { ClientGameLogic.LOGGER.log(Level.INFO, "report effect: {0}", msg); //NON-NLS - playSound(msg); myTurn = msg.isMyTurn(); + logic.playSound(Sound.MISSILE_LAUNCH); logic.setInfoText(msg.getInfoTextKey()); affectedMap(msg).add(msg.getShot()); - affectedMap(msg).add(new Shell(new Vector3f(0, 10, 0), new Vector3f(msg.getShot().getY() + 0.5f, -0.4f, msg.getShot().getX() + 0.5f), 1f)); + affectedMap(msg).add(new Shell(new Vector3f(0, 50, 0), new Vector3f(msg.getShot().getY() + 0.5f, -0.4f, msg.getShot().getX() + 0.5f), 1f,msg,logic)); if (destroyedOpponentShip(msg)) logic.getOpponentMap().add(msg.getDestroyedShip()); if (msg.isGameOver()) { 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 7ea8e708..48762264 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 @@ -1,6 +1,8 @@ package pp.battleship.model; import com.jme3.math.Vector3f; +import pp.battleship.game.client.ClientGameLogic; +import pp.battleship.message.server.EffectMessage; import pp.util.FloatMath; public class Shell implements Item { @@ -8,26 +10,38 @@ public class Shell implements Item { private Vector3f targetPosition; // Zielposition des Geschosses0 private Vector3f currentPosition; // Aktuelle Position des Geschosses private float speed; // Geschwindigkeit des Geschosses + private EffectMessage msg; + private ClientGameLogic logic; - private float progress; + private float progress; - public Shell(Vector3f startPosition, Vector3f targetPosition, float speed) { + /** + * @param startPosition + * @param targetPosition + * @param speed + * @param msg + * @param logic + */ + public Shell(Vector3f startPosition, Vector3f targetPosition, float speed, EffectMessage msg, ClientGameLogic logic) { this.startPosition = startPosition; this.targetPosition = targetPosition; this.currentPosition = new Vector3f(startPosition); // Initiale Position ist die Startposition this.speed = speed; + this.msg = msg; + this.logic = logic; } // Methode, um die Position des Geschosses basierend auf der Zeit zu aktualisieren public void updatePosition(float deltaTime) { - progress+=deltaTime*speed; + progress += deltaTime * speed; + progress = FloatMath.clamp(progress, 0.0f, 1.0f); + + float t = FloatMath.easeInOutElastic(progress); // Interpoliere die Position zwischen Start- und Zielposition basierend auf dem Fortschritt - currentPosition.x = FloatMath.interpolateLinear(progress,startPosition.x,targetPosition.x); - currentPosition.y = FloatMath.interpolateLinear(progress,startPosition.y,targetPosition.y); - currentPosition.z = FloatMath.interpolateLinear(progress,startPosition.z,targetPosition.z); - - //currentPosition.interpolateLocal(startPosition, targetPosition, progress); + currentPosition.y = FloatMath.extrapolateLinear(t, startPosition.y, targetPosition.y); + currentPosition.x = FloatMath.extrapolateLinear(t, startPosition.x, targetPosition.x); + currentPosition.z = FloatMath.extrapolateLinear(t, startPosition.z, targetPosition.z); } // Aktuelle Position des Geschosses @@ -40,22 +54,44 @@ public boolean isAtTarget() { return currentPosition.distance(targetPosition) < 0.0001f; // Toleranz für die Zielgenauigkeit } - + /** + * @param visitor the visitor performing operations on the item + * @param + * @return + */ @Override public T accept(Visitor visitor) { return visitor.visit(this); } /** - * Accepts a visitor that does not return a value. This method is part of the - * Visitor design pattern. - * * @param visitor the visitor to accept */ @Override public void accept(VoidVisitor visitor) { visitor.visit(this); } + + /** + * @return + */ + public boolean isFinished() { + return progress >= 1; + } + + /** + * @return + */ + public EffectMessage getMsg() { + return msg; + } + + /** + * @return + */ + public ClientGameLogic getLogic() { + return logic; + } } diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/notification/Sound.java b/Projekte/battleship/model/src/main/java/pp/battleship/notification/Sound.java index d82ab698..c963674a 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/notification/Sound.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/notification/Sound.java @@ -22,5 +22,9 @@ public enum Sound { /** * Sound of a ship being destroyed. */ - DESTROYED_SHIP + DESTROYED_SHIP, + /** + * Sound of a fired Missile + */ + MISSILE_LAUNCH } diff --git a/Projekte/common/src/main/java/pp/util/FloatMath.java b/Projekte/common/src/main/java/pp/util/FloatMath.java index 3e00a284..afc32871 100644 --- a/Projekte/common/src/main/java/pp/util/FloatMath.java +++ b/Projekte/common/src/main/java/pp/util/FloatMath.java @@ -96,6 +96,51 @@ public static float extrapolateLinear(float scale, float startValue, float endVa return ((1f - scale) * startValue) + (scale * endValue); } + /** + * Interpolates a value to range [0,1] after given easing function + * https://easings.net/#easeInOutElastic + * @param value the value to interpolate + * @return A new value in range [0,1] + */ + public static float easeInOutElastic(float value) { + var c5 = (2 * Math.PI) / 4.5; + + return value == 0 + ? 0 + : (float) (value == 1 + ? 1 + : value < 0.5 + ? -(Math.pow(2, 20 * value - 10) * Math.sin((20 * value - 11.125) * c5)) / 2 + : (Math.pow(2, -20 * value + 10) * Math.sin((20 * value - 11.125) * c5)) / 2 + 1); + + } + + /** + * Fancy effect for 2D Map animation + * @param x Progress state of animation + * @return new Value for animation + */ + public static float easeOutBounce(float x) { + float n1 = 7.5625f; + float d1 = 2.75f; + + if (x < 1 / d1) { + return n1 * x * x; + } else if (x < 2 / d1) { + return (float) (n1 * (x -= 1.5 / d1) * x + 0.75); + } else if (x < 2.5 / d1) { + return (float) (n1 * (x -= 2.25 / d1) * x + 0.9375); + } else { + return (float) (n1 * (x -= 2.625 / d1) * x + 0.984375); + } + } + + public static float easeInBounce(float x) { + return 1 - easeOutBounce(1 - x); + } + + + /** * Returns the arc cosine of a value.
* Special cases: diff --git a/Projekte/jme-common/src/main/java/pp/view/ModelViewSynchronizer.java b/Projekte/jme-common/src/main/java/pp/view/ModelViewSynchronizer.java index 02538ce8..32e4c938 100644 --- a/Projekte/jme-common/src/main/java/pp/view/ModelViewSynchronizer.java +++ b/Projekte/jme-common/src/main/java/pp/view/ModelViewSynchronizer.java @@ -19,7 +19,7 @@ * Abstract base class for keeping the scene graph (=view) in sync with the model. */ public abstract class ModelViewSynchronizer { - private static final Logger LOGGER = System.getLogger(ModelViewSynchronizer.class.getName()); + protected static final Logger LOGGER = System.getLogger(ModelViewSynchronizer.class.getName()); private final Node itemNode = new Node("items"); //NON-NLS private final Map itemMap = new HashMap<>();