diff --git a/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/BoatCollisionCommand.java b/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/BoatCollisionCommand.java index c3046d18..48d19d09 100644 --- a/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/BoatCollisionCommand.java +++ b/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/BoatCollisionCommand.java @@ -3,6 +3,8 @@ package visualiser.Commands.VisualiserRaceCommands; import javafx.scene.media.AudioClip; import mock.model.commandFactory.Command; import network.Messages.YachtEvent; +import shared.exceptions.BoatNotFoundException; +import visualiser.model.VisualiserBoat; import visualiser.model.VisualiserRaceState; /** @@ -34,6 +36,11 @@ public class BoatCollisionCommand implements Command { sound.play(); } - //System.out.println("Collision command executed!"); + try { + VisualiserBoat boat = visualiserRace.getBoat(yachtEvent.getSourceID()); + boat.setHasCollided(true); + } catch (BoatNotFoundException e) { + e.printStackTrace(); + } } } diff --git a/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java index 51d9c451..ba641ad4 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java @@ -311,6 +311,7 @@ public class RaceController extends Controller { } boat.legProperty().addListener((o, prev, curr) -> swapColours(curr)); + boat.hasCollidedProperty().addListener((o, prev, curr) -> showCollision(boat)); } // Fix initial bird's-eye position view3D.updatePivot(new Translate(250, 0, 210)); @@ -368,6 +369,10 @@ public class RaceController extends Controller { }); } + private void showCollision(VisualiserBoat boat) { + System.out.println(boat.getSourceID() + " has collided"); + } + private void addThirdPersonAnnotations(Subject3D subject3D) { viewSubjects.add(nextMarkArrow); diff --git a/racevisionGame/src/main/java/visualiser/model/VisualiserBoat.java b/racevisionGame/src/main/java/visualiser/model/VisualiserBoat.java index 555def15..5e66c02a 100644 --- a/racevisionGame/src/main/java/visualiser/model/VisualiserBoat.java +++ b/racevisionGame/src/main/java/visualiser/model/VisualiserBoat.java @@ -1,6 +1,8 @@ package visualiser.model; +import javafx.beans.property.BooleanProperty; import javafx.beans.property.ObjectProperty; +import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.scene.paint.Color; import network.Messages.Enums.BoatStatusEnum; @@ -62,6 +64,7 @@ public class VisualiserBoat extends Boat { private ObjectProperty positionProperty; private ObjectProperty bearingProperty; + private BooleanProperty hasCollided; /** @@ -74,6 +77,7 @@ public class VisualiserBoat extends Boat { super(boat.getSourceID(), boat.getName(), boat.getCountry()); this.color = color; + this.hasCollided = new SimpleBooleanProperty(false); } @@ -253,10 +257,6 @@ public class VisualiserBoat extends Boat { this.positionProperty.set(position); } - public ObjectProperty positionProperty() { - return positionProperty; - } - @Override public Bearing getBearing() { return bearingProperty.get(); @@ -270,7 +270,15 @@ public class VisualiserBoat extends Boat { this.bearingProperty.set(bearing); } - public ObjectProperty bearingProperty() { - return bearingProperty; + public boolean hasCollided() { + return hasCollided.get(); + } + + public BooleanProperty hasCollidedProperty() { + return hasCollided; + } + + public void setHasCollided(boolean hasCollided) { + this.hasCollided.set(hasCollided); } }