@ -17,6 +17,7 @@ import java.util.List;
* /
public abstract class Race implements Runnable {
protected final ObservableList < Boat > startingBoats ;
protected final ObservableList < Marker > boatMarkers ;
protected final List < Leg > legs ;
private RaceController controller ;
protected FinishController finishController ;
@ -33,9 +34,10 @@ public abstract class Race implements Runnable {
* @param controller race controller
* @param scaleFactor for race
* /
private Race ( List < Boat > boats , List < Leg> legs , RaceController controller , int scaleFactor ) {
private Race ( List < Boat > boats , List < Marker> boatMarkers , List < Leg> legs , RaceController controller , int scaleFactor ) {
this . startingBoats = FXCollections . observableArrayList ( boats ) ;
this . boatMarkers = FXCollections . observableArrayList ( boatMarkers ) ;
this . legs = legs ;
this . legs . add ( new Leg ( "Finish" , this . legs . size ( ) ) ) ;
this . controller = controller ;
@ -45,7 +47,7 @@ public abstract class Race implements Runnable {
}
protected Race ( RaceDataSource raceData , RaceController controller , int scaleFactor ) {
this ( raceData . getBoats ( ) , raceData . get Legs( ) , controller , scaleFactor ) ;
this ( raceData . getBoats ( ) , raceData . get Markers( ) , raceData . get Legs( ) , controller , scaleFactor ) ;
}
/ * *
@ -56,7 +58,7 @@ public abstract class Race implements Runnable {
* @param scaleFactor factor to scale by
* /
public Race ( Boat [ ] startingBoats , List < Leg > legs , RaceController controller , int scaleFactor ) {
this ( Arrays . asList ( startingBoats ) , legs , controller , scaleFactor ) ;
this ( Arrays . asList ( startingBoats ) , null , legs , controller , scaleFactor ) ;
}
public void setController ( RaceController controller ) {
@ -80,6 +82,8 @@ public abstract class Race implements Runnable {
* /
protected abstract void checkPosition ( Boat boat , long timeElapsed ) ;
protected abstract void updateMarker ( Marker mark ) ;
/ * *
* Updates the boat ' s gps coordinates
*
@ -140,12 +144,17 @@ public abstract class Race implements Runnable {
boatsFinished + + ;
}
}
for ( Marker mark : boatMarkers ) {
if ( mark ! = null ) {
updateMarker ( mark ) ;
}
}
//System.out.println(boatsFinished + ":" + startingBoats.size());
} else {
controller . finishRace ( startingBoats ) ;
stop ( ) ;
}
controller . updateMap ( startingBoats );
controller . updateMap ( startingBoats , boatMarkers );
fps + + ;
if ( ( System . currentTimeMillis ( ) - timeCurrent ) > 1000 ) {
updateFPS ( fps ) ;