diff --git a/racevisionGame/src/main/java/shared/model/Boat.java b/racevisionGame/src/main/java/shared/model/Boat.java index 38128f4b..7d86afbf 100644 --- a/racevisionGame/src/main/java/shared/model/Boat.java +++ b/racevisionGame/src/main/java/shared/model/Boat.java @@ -392,6 +392,11 @@ public class Boat extends Collider { this.timeAtLastMark = timeAtLastMark; } + public void bounce(double repulsionRadius) { + Azimuth reverseAzimuth = Azimuth.fromDegrees(getBearing().degrees() - 180d); + setPosition(GPSCoordinate.calculateNewPosition(getPosition(), 2 * repulsionRadius, reverseAzimuth)); + } + @Override public boolean rayCast(Boat boat) { if(boat != this) { @@ -401,5 +406,8 @@ public class Boat extends Collider { @Override public void onCollisionEnter(Boat collider, Collision e) { + if(e.getBearing().degrees() > 270 || e.getBearing().degrees() < 90) { + collider.bounce(100); + } } } diff --git a/racevisionGame/src/main/java/shared/model/Mark.java b/racevisionGame/src/main/java/shared/model/Mark.java index fcf76521..77a59ede 100644 --- a/racevisionGame/src/main/java/shared/model/Mark.java +++ b/racevisionGame/src/main/java/shared/model/Mark.java @@ -90,7 +90,6 @@ public class Mark extends Collider { @Override public void onCollisionEnter(Boat collider, Collision e) { - Azimuth reverseAzimuth = Azimuth.fromDegrees(collider.getBearing().degrees() - 180d); - collider.setPosition(GPSCoordinate.calculateNewPosition(collider.getPosition(), 2 * repulsionRadius, reverseAzimuth)); + collider.bounce(repulsionRadius); } }