From 30a735bd6ebe94f8bf906613594e646e624008dd Mon Sep 17 00:00:00 2001 From: Benjamin Feyer Date: Thu, 10 Oct 2024 22:23:55 +0200 Subject: [PATCH] added 'Shell' and 'ShellControl' and editet the two visitors 'Visitor' and 'VoidVisitor' --- .../battleship/client/gui/ShellControl.java | 41 +++++++++++++++++++ .../main/java/pp/battleship/model/Shell.java | 31 ++++++++++++++ .../java/pp/battleship/model/Visitor.java | 2 + .../java/pp/battleship/model/VoidVisitor.java | 2 + 4 files changed, 76 insertions(+) create mode 100644 Projekte/battleship/client/src/main/java/pp/battleship/client/gui/ShellControl.java create mode 100644 Projekte/battleship/model/src/main/java/pp/battleship/model/Shell.java 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 new file mode 100644 index 00000000..edf23b34 --- /dev/null +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/ShellControl.java @@ -0,0 +1,41 @@ +package pp.battleship.client.gui; + +import com.jme3.renderer.RenderManager; +import com.jme3.renderer.ViewPort; +import com.jme3.scene.Spatial; +import com.jme3.scene.control.AbstractControl; +import pp.battleship.model.Shell; +import pp.battleship.model.ShipMap; + +public class ShellControl extends AbstractControl { + + private Shell shell; + private ShipMap map; + + private static final Float HEIGHT = 0f; + + public ShellControl(Shell shell, ShipMap map){ + this.shell=shell; + this.map=map; + } + + @Override + protected void controlUpdate(float tpf) { + if (spatial == null) return; + if(spatial.getLocalTranslation().getY()<=HEIGHT){ + spatial.getParent().detachChild(spatial); + } + else{ + spatial.move(0,-0.5f*tpf,0); + } + } + + @Override + protected void controlRender(RenderManager rm, ViewPort vp) { + + } + + public Shell getShell(){ + return shell; + } +} 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 new file mode 100644 index 00000000..d485c257 --- /dev/null +++ b/Projekte/battleship/model/src/main/java/pp/battleship/model/Shell.java @@ -0,0 +1,31 @@ +package pp.battleship.model; + +public class Shell implements Item { + + private IntPoint target; + + public Shell(IntPoint target){ + this.target=target; + } + + + + + + + + + @Override + public T accept(Visitor visitor) { + return visitor.visit(this); + } + + @Override + public void accept(VoidVisitor visitor) { + visitor.visit(this); + } + + public IntPoint getTarget(){ + return target; + } +} diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/model/Visitor.java b/Projekte/battleship/model/src/main/java/pp/battleship/model/Visitor.java index f490451d..1046142b 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/model/Visitor.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/model/Visitor.java @@ -28,4 +28,6 @@ public interface Visitor { * @return the result of visiting the Battleship element */ T visit(Battleship ship); + + T visit(Shell shell); } diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/model/VoidVisitor.java b/Projekte/battleship/model/src/main/java/pp/battleship/model/VoidVisitor.java index 871c0635..3bde11a1 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/model/VoidVisitor.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/model/VoidVisitor.java @@ -25,4 +25,6 @@ public interface VoidVisitor { * @param ship the Battleship element to visit */ void visit(Battleship ship); + + void visit(Shell shell); }