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); }