Boats no longer change colour during a race and fixed the sparklines for the boats to be in the correct position #story[876]
This commit is contained in:
@@ -10,9 +10,7 @@ import seng302.Mock.StreamedCourse;
|
||||
import seng302.RaceDataSource;
|
||||
import seng302.RaceMap;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* This creates a JavaFX Canvas that is fills it's parent.
|
||||
@@ -31,6 +29,7 @@ public class ResizableRaceCanvas extends ResizableCanvas {
|
||||
private List<Color> colours;
|
||||
private final List<Marker> markers;
|
||||
private final RaceDataSource raceData;
|
||||
private Map<Integer, Color> boatColours = new HashMap<>();
|
||||
|
||||
public ResizableRaceCanvas(RaceDataSource raceData) {
|
||||
super();
|
||||
@@ -54,6 +53,7 @@ public class ResizableRaceCanvas extends ResizableCanvas {
|
||||
*/
|
||||
public void setBoats(List<Boat> boats) {
|
||||
this.boats = boats;
|
||||
mapBoatColours();
|
||||
}
|
||||
|
||||
|
||||
@@ -276,27 +276,27 @@ public class ResizableRaceCanvas extends ResizableCanvas {
|
||||
* Draws boats while race in progress, when leg heading is set.
|
||||
*/
|
||||
private void updateBoats() {
|
||||
int currentColour = 0;
|
||||
if (boats != null) {
|
||||
if (boatColours.size() < boats.size()) mapBoatColours();
|
||||
for (Boat boat : boats) {
|
||||
boolean finished = boat.getCurrentLeg().getName().equals("Finish") || boat.getCurrentLeg().getName().equals("DNF");
|
||||
boolean isStart = boat.isStarted();
|
||||
int sourceID = boat.getSourceID();
|
||||
if (!finished && isStart) {
|
||||
displayBoat(boat, boat.getHeading(), colours.get(currentColour));
|
||||
displayBoat(boat, boat.getHeading(), boatColours.get(sourceID));
|
||||
GraphCoordinate wakeFrom = this.map.convertGPS(boat.getCurrentPosition());
|
||||
GraphCoordinate wakeTo = this.map.convertGPS(boat.getWake());
|
||||
displayLine(wakeFrom, wakeTo, colours.get(currentColour));
|
||||
displayLine(wakeFrom, wakeTo, boatColours.get(sourceID));
|
||||
} else if (!isStart) {
|
||||
displayBoat(boat, boat.getHeading(), colours.get(currentColour));
|
||||
displayBoat(boat, boat.getHeading(), boatColours.get(sourceID));
|
||||
} else {
|
||||
displayBoat(boat, 0, colours.get(currentColour));
|
||||
displayBoat(boat, 0, boatColours.get(sourceID));
|
||||
}
|
||||
|
||||
if (raceAnno)
|
||||
displayText(boat.toString(), boat.getAbbrev(), boat.getVelocity(), this.map.convertGPS(boat.getCurrentPosition()));
|
||||
//TODO this needs to be fixed.
|
||||
drawTrack(boat, colours.get(currentColour));
|
||||
currentColour = (currentColour + 1) % colours.size();
|
||||
drawTrack(boat, boatColours.get(sourceID));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -330,4 +330,14 @@ public class ResizableRaceCanvas extends ResizableCanvas {
|
||||
));
|
||||
}
|
||||
|
||||
private void mapBoatColours() {
|
||||
int currentColour = 0;
|
||||
for (Boat boat : boats) {
|
||||
if (!boatColours.containsKey(boat.getSourceID())) {
|
||||
boatColours.put(boat.getSourceID(), colours.get(currentColour));
|
||||
}
|
||||
currentColour = (currentColour + 1) % colours.size();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user