- 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]main
parent
9cba3934ea
commit
a6db06a82c
@ -0,0 +1,39 @@
|
||||
package mock.model.commandFactory;
|
||||
|
||||
import mock.model.MockBoat;
|
||||
import mock.model.MockRace;
|
||||
import shared.model.Azimuth;
|
||||
import shared.model.GPSCoordinate;
|
||||
|
||||
import java.util.Observable;
|
||||
|
||||
/**
|
||||
* Created by cbt24 on 7/09/17.
|
||||
*/
|
||||
public class CollisionCommand extends ObserverCommand {
|
||||
private GPSCoordinate startingPosition;
|
||||
private Azimuth azimuth;
|
||||
private double distance;
|
||||
|
||||
public CollisionCommand(MockRace race, MockBoat boat) {
|
||||
super(race, boat);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
this.azimuth = Azimuth.fromDegrees(boat.getBearing().degrees() - 180d);
|
||||
this.startingPosition = boat.getPosition();
|
||||
this.distance = 30;
|
||||
boat.setVelocityDefault(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Observable o, Object arg) {
|
||||
if(GPSCoordinate.calculateDistanceMeters(boat.getPosition(), startingPosition) < distance) {
|
||||
boat.setPosition(GPSCoordinate.calculateNewPosition(boat.getPosition(), 2, azimuth));
|
||||
} else {
|
||||
race.deleteObserver(this);
|
||||
boat.setVelocityDefault(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue