diff --git a/src/main/java/seng302/Model/BoatInRace.java b/src/main/java/seng302/Model/BoatInRace.java index dd4f8133..248cd1ba 100644 --- a/src/main/java/seng302/Model/BoatInRace.java +++ b/src/main/java/seng302/Model/BoatInRace.java @@ -28,10 +28,9 @@ public class BoatInRace extends Boat { private StringProperty currentLegName; private boolean started = false; private StringProperty position; - private Queue track = new ConcurrentLinkedQueue(); private long nextValidTime = 0; - private final int TRACK_POINT_TIME_INTERVAL = 1000; // every 2 seconds + private final int TRACK_POINT_TIME_INTERVAL = 1000; // every 1 seconds private final int TRACK_POINT_LIMIT = 10; private boolean trackVisible = false; @@ -261,7 +260,7 @@ public class BoatInRace extends Boat { public boolean addTrackPoint(GPSCoordinate coordinate) { Boolean added = System.currentTimeMillis() >= nextValidTime; - if (added && this.started && !this.finished) { + if (added && this.started) { nextValidTime = System.currentTimeMillis() + TRACK_POINT_TIME_INTERVAL; track.add(coordinate); if (track.size() > TRACK_POINT_LIMIT) { @@ -282,4 +281,11 @@ public class BoatInRace extends Boat { public void setTrackVisible(boolean trackVisible) { this.trackVisible = trackVisible; } + + public Color getTrackPointColour(int queuePos) { + float alphaScale = 1f / (float) (TRACK_POINT_LIMIT); + float alpha = 1f - (float) (this.track.size() - queuePos) * alphaScale; + Color boatColour = this.colour; + return new Color(boatColour.getRed(), boatColour.getBlue(), boatColour.getGreen(), alpha); + } } diff --git a/src/main/java/seng302/Model/Race.java b/src/main/java/seng302/Model/Race.java index c29dccfc..42a928ef 100644 --- a/src/main/java/seng302/Model/Race.java +++ b/src/main/java/seng302/Model/Race.java @@ -209,15 +209,17 @@ public abstract class Race implements Runnable { } } - if (controller != null) controller.updateMap(startingBoats); +// if (controller != null) controller.updateMap(startingBoats); if (timerEnabled) updateTime(calcTimer()); - } else { - //Exit animation timer - updateTime(calcTimer()); - updateFPS(0); //race ended so fps = 0 - stop(); //exit animation timer } + controller.updateMap(startingBoats); +// } else { +// //Exit animation timer +// updateTime(calcTimer()); +// updateFPS(0); //race ended so fps = 0 +// stop(); //exit animation timer +// } fps++; if ((System.currentTimeMillis() - timeCurrent) > 1000) { updateFPS(fps); diff --git a/src/main/java/seng302/Model/ResizableRaceCanvas.java b/src/main/java/seng302/Model/ResizableRaceCanvas.java index 5da4bdc4..2d3b7b03 100644 --- a/src/main/java/seng302/Model/ResizableRaceCanvas.java +++ b/src/main/java/seng302/Model/ResizableRaceCanvas.java @@ -290,10 +290,13 @@ public class ResizableRaceCanvas extends Canvas { } private void drawTrackPoint(BoatInRace boat) { + int queuePos = 0; for (GPSCoordinate coordinate : boat.getTrack()) { GraphCoordinate scaledCoordinate = this.map.convertGPS(coordinate); - gc.setFill(boat.getColour()); + Color colour = boat.getTrackPointColour(queuePos); + gc.setFill(colour); gc.fillOval(scaledCoordinate.getX(), scaledCoordinate.getY(), 5, 5); + queuePos++; } }