@ -104,19 +104,18 @@ public class VisualiserBoat extends Boat {
/ * *
/ * *
* Attempts to add a new point to boat ' s track .
* Attempts to add a new point to boat ' s track .
* It only adds a new point if the boat is still racing ( see { @link # getStatus ( ) } and { @link BoatStatusEnum # RACING } ) , and if at least { @link # trackPointTimeInterval } milliseconds have occurred .
* It only adds a new point if the boat is still racing ( see { @link # getStatus ( ) } and { @link BoatStatusEnum # RACING } ) , and if at least { @link # trackPointTimeInterval } milliseconds have occurred , using race time .
* @param coordinate The { @link GPSCoordinate } of the trackpoint .
* @param coordinate The { @link GPSCoordinate } of the trackpoint .
* @param currentTime The current race time .
* @see TrackPoint
* @see TrackPoint
* /
* /
public void addTrackPoint ( GPSCoordinate coordinate ) {
public void addTrackPoint ( GPSCoordinate coordinate , ZonedDateTime currentTime ) {
//TODO bugfix: instead of creating a track point every #trackPointTimeInterval milliseconds of real time, we should base it off of race time, so that we will create a consistent number of track points regardless of what the race time scale is.
//Get current time.
//Get current time.
long currentTime = System. currentTimeMillis ( ) ;
long currentTime Milli = currentTime. toInstant ( ) . toEpoch Milli( ) ;
//Check if enough time has passed to create a new track point.
//Check if enough time has passed to create a new track point.
Boolean canBeAdded = currentTime > = nextValidTime ;
Boolean canBeAdded = currentTime Milli > = nextValidTime ;
//If it has, and if we are still racing, create the point.
//If it has, and if we are still racing, create the point.
if ( canBeAdded & & ( getStatus ( ) = = BoatStatusEnum . RACING ) ) {
if ( canBeAdded & & ( getStatus ( ) = = BoatStatusEnum . RACING ) ) {
@ -125,11 +124,11 @@ public class VisualiserBoat extends Boat {
long expiryPeriod = trackPointTimeInterval * trackPointLimit ;
long expiryPeriod = trackPointTimeInterval * trackPointLimit ;
//Create and add point.
//Create and add point.
TrackPoint trackPoint = new TrackPoint ( coordinate , currentTime , expiryPeriod ) ;
TrackPoint trackPoint = new TrackPoint ( coordinate , currentTime Milli , expiryPeriod ) ;
track . add ( trackPoint ) ;
track . add ( trackPoint ) ;
//Update the nextValidTime for the next track point.
//Update the nextValidTime for the next track point.
nextValidTime = currentTime + trackPointTimeInterval ;
nextValidTime = currentTime Milli + trackPointTimeInterval ;
}
}
}
}