diff --git a/src/main/java/seng302/Model/BoatInRace.java b/src/main/java/seng302/Model/BoatInRace.java index 9317ae70..4d86b201 100644 --- a/src/main/java/seng302/Model/BoatInRace.java +++ b/src/main/java/seng302/Model/BoatInRace.java @@ -260,9 +260,13 @@ public class BoatInRace extends Boat { public boolean addTrackPoint(GPSCoordinate coordinate) { Boolean added = System.currentTimeMillis() >= nextValidTime; + long currentTime = System.currentTimeMillis(); if (added && this.started) { - nextValidTime = System.currentTimeMillis() + TRACK_POINT_TIME_INTERVAL; - track.add(new TrackPoint(coordinate, System.currentTimeMillis(), TRACK_POINT_LIMIT*TRACK_POINT_TIME_INTERVAL)); + nextValidTime = currentTime + TRACK_POINT_TIME_INTERVAL; + track.add(new TrackPoint(coordinate, currentTime, TRACK_POINT_LIMIT * TRACK_POINT_TIME_INTERVAL)); + } + if (track.size() > 0 && track.element().getTimeAdded() + TRACK_POINT_LIMIT * TRACK_POINT_TIME_INTERVAL <= currentTime) { + track.remove(); } return added; } diff --git a/src/main/java/seng302/Model/TrackPoint.java b/src/main/java/seng302/Model/TrackPoint.java index 27ee25e2..fe898417 100644 --- a/src/main/java/seng302/Model/TrackPoint.java +++ b/src/main/java/seng302/Model/TrackPoint.java @@ -23,6 +23,13 @@ public class TrackPoint { } public double getAlpha() { - return Double.max(minAlpha,1.0 - (double)(System.currentTimeMillis() - timeAdded)/expiry); + if (System.currentTimeMillis() >= timeAdded + expiry) { + return 0; + } + return Double.max(minAlpha,1.0 - (double)(System.currentTimeMillis() - timeAdded) / expiry); + } + + public long getTimeAdded() { + return timeAdded; } }