Boats now reverse smoothly when colliding

- Collision objects specify which boat is colliding
- RaceLogic sets up an observable CollisionCommand when collision bubbles up
- Boats now selectively identify observers of collision

#story[1196]
This commit is contained in:
cbt24
2017-09-07 16:57:07 +12:00
parent 9cba3934ea
commit a6db06a82c
7 changed files with 69 additions and 25 deletions
@@ -403,10 +403,6 @@ public class Boat extends Collider {
public boolean isSailsOut() {
return sailsOut;
}
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) {
@@ -416,9 +412,11 @@ public class Boat extends Collider {
}
@Override
public void onCollisionEnter(Boat collider, Collision e) {
public void onCollisionEnter(Collision e) {
if(e.getBearing().degrees() > 270 || e.getBearing().degrees() < 90) {
collider.bounce(100);
// Notify observers of collision
this.setChanged();
notifyObservers(e);
}
}
}
@@ -101,7 +101,8 @@ public class Mark extends Collider{
}
@Override
public void onCollisionEnter(Boat collider, Collision e) {
collider.bounce(repulsionRadius);
public void onCollisionEnter(Collision e) {
this.setChanged();
notifyObservers(e);
}
}