@ -1,6 +1,9 @@
package seng302.Model ;
import javafx.collections.FXCollections ;
import javafx.collections.ObservableArray ;
import javafx.collections.ObservableList ;
import seng302.Controllers.RaceController ;
import seng302.GPSCoordinate ;
@ -11,7 +14,8 @@ import java.util.*;
* Created by fwy13 on 3 / 03 / 17.
* /
public abstract class Race implements Runnable {
protected BoatInRace [ ] startingBoats ;
//protected BoatInRace[] startingBoats;
protected ObservableList < BoatInRace > startingBoats ;
protected ArrayList < Leg > legs ;
protected RaceController controller ;
protected int boatsFinished = 0 ;
@ -25,7 +29,7 @@ public abstract class Race implements Runnable {
* @param legs Number of marks in order that the boats pass in order to complete the race .
* /
public Race ( BoatInRace [ ] boats , ArrayList < Leg > legs , RaceController controller ) {
this . startingBoats = boats;
this . startingBoats = FXCollections. observableArrayList ( boats) ;
this . legs = legs ;
this . legs . add ( new Leg ( "Finish" ) ) ;
this . controller = controller ;
@ -45,9 +49,9 @@ public abstract class Race implements Runnable {
//show the boats participating.
System . out . println ( "Boats Participating:" ) ;
System . out . println ( "====================" ) ;
for ( int i = 0 ; i < startingBoats . length ; i + + ) {
System . out . println ( i + 1 + ". " + startingBoats [i ] . getName ( ) + ", Speed: " + Math . round ( startingBoats [i ] . getVelocity ( ) * 1.94384 ) + "kn" ) ;
startingBoats [i ] . setCurrentLeg ( legs . get ( 0 ) ) ;
for ( int i = 0 ; i < startingBoats . size( ) ; i + + ) {
System . out . println ( i + 1 + ". " + startingBoats .get ( i ) . getName ( ) + ", Speed: " + Math . round ( startingBoats .get ( i ) . getVelocity ( ) * 1.94384 ) + "kn" ) ;
startingBoats .get ( i ) . setCurrentLeg ( legs . get ( 0 ) ) ;
}
}
@ -68,7 +72,7 @@ public abstract class Race implements Runnable {
long remainingSeconds ;
while ( boatsFinished < startingBoats . length ) {
while ( boatsFinished < startingBoats . size( ) ) {
timeLoopStarted = System . currentTimeMillis ( ) ;
totalTimeElapsed = System . currentTimeMillis ( ) - timeRaceStarted ;
long currentTime = System . currentTimeMillis ( ) - timeRaceStarted ;
@ -95,7 +99,7 @@ public abstract class Race implements Runnable {
protected void checkPosition ( BoatInRace boat , long timeElapsed ) {
if ( boat . getDistanceTravelledInLeg ( ) > boat . getCurrentLeg ( ) . getDistance ( ) ) {
updateController ( ) ;
//updateController();
//boat has passed onto new leg
if ( boat . getCurrentLeg ( ) . getName ( ) . equals ( "Finish" ) ) {
//boat has finished
@ -115,7 +119,7 @@ public abstract class Race implements Runnable {
}
public BoatInRace[ ] getStartingBoats ( ) {
public ObservableList< BoatInRace > getStartingBoats ( ) {
return startingBoats ;
}