From eaa0d2e82bf4f073cfbf0cfb0ff5f8d746390fa8 Mon Sep 17 00:00:00 2001 From: cbt24 Date: Wed, 16 Aug 2017 17:22:08 +1200 Subject: [PATCH] Boats bounce away from marks. - Changed onCollisionEnter signature to pass boat info #story[1100] --- .../src/main/java/mock/model/collider/Collider.java | 5 +++-- .../java/mock/model/collider/ColliderRegistry.java | 2 +- racevisionGame/src/main/java/shared/model/Boat.java | 2 +- racevisionGame/src/main/java/shared/model/Mark.java | 10 ++++++++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/racevisionGame/src/main/java/mock/model/collider/Collider.java b/racevisionGame/src/main/java/mock/model/collider/Collider.java index 32fb25eb..93a2a7e0 100644 --- a/racevisionGame/src/main/java/mock/model/collider/Collider.java +++ b/racevisionGame/src/main/java/mock/model/collider/Collider.java @@ -27,7 +27,7 @@ public abstract class Collider extends Observable implements Locatable { if(actualDistance <= distance) { Collision collision = new Collision(relative, distance); // Notify object of collision - onCollisionEnter(collision); + onCollisionEnter(boat, collision); // Notify observers of collision notifyObservers(collision); this.setChanged(); @@ -45,7 +45,8 @@ public abstract class Collider extends Observable implements Locatable { /** * Handle a collision event + * @param collider * @param e details of collision */ - public abstract void onCollisionEnter(Collision e); + public abstract void onCollisionEnter(Boat collider, Collision e); } diff --git a/racevisionGame/src/main/java/mock/model/collider/ColliderRegistry.java b/racevisionGame/src/main/java/mock/model/collider/ColliderRegistry.java index 746b9fa4..69eac91a 100644 --- a/racevisionGame/src/main/java/mock/model/collider/ColliderRegistry.java +++ b/racevisionGame/src/main/java/mock/model/collider/ColliderRegistry.java @@ -39,7 +39,7 @@ public class ColliderRegistry extends Collider implements Observer { } @Override - public void onCollisionEnter(Collision e) {} + public void onCollisionEnter(Boat collider, Collision e) {} @Override public GPSCoordinate getPosition() { diff --git a/racevisionGame/src/main/java/shared/model/Boat.java b/racevisionGame/src/main/java/shared/model/Boat.java index 7aff1222..38128f4b 100644 --- a/racevisionGame/src/main/java/shared/model/Boat.java +++ b/racevisionGame/src/main/java/shared/model/Boat.java @@ -400,6 +400,6 @@ public class Boat extends Collider { } @Override - public void onCollisionEnter(Collision e) { + public void onCollisionEnter(Boat collider, Collision e) { } } diff --git a/racevisionGame/src/main/java/shared/model/Mark.java b/racevisionGame/src/main/java/shared/model/Mark.java index aa123aff..fcf76521 100644 --- a/racevisionGame/src/main/java/shared/model/Mark.java +++ b/racevisionGame/src/main/java/shared/model/Mark.java @@ -24,6 +24,10 @@ public class Mark extends Collider { */ private GPSCoordinate position; + /** + * Repulsion radius of the mark + */ + private double repulsionRadius = 50; /** * Constructs a mark with a given source ID, name, and position. @@ -81,10 +85,12 @@ public class Mark extends Collider { @Override public boolean rayCast(Boat boat) { - return rayCast(boat, 100); + return rayCast(boat, repulsionRadius); } @Override - public void onCollisionEnter(Collision e) { + public void onCollisionEnter(Boat collider, Collision e) { + Azimuth reverseAzimuth = Azimuth.fromDegrees(collider.getBearing().degrees() - 180d); + collider.setPosition(GPSCoordinate.calculateNewPosition(collider.getPosition(), 2 * repulsionRadius, reverseAzimuth)); } }