@ -4,6 +4,7 @@ package seng302.Controllers;
import javafx.beans.property.ReadOnlyObjectWrapper ;
import javafx.beans.property.ReadOnlyObjectWrapper ;
import javafx.beans.value.ChangeListener ;
import javafx.beans.value.ChangeListener ;
import javafx.beans.value.ObservableValue ;
import javafx.beans.value.ObservableValue ;
import javafx.collections.FXCollections ;
import javafx.collections.ObservableList ;
import javafx.collections.ObservableList ;
import javafx.event.ActionEvent ;
import javafx.event.ActionEvent ;
import javafx.event.EventHandler ;
import javafx.event.EventHandler ;
@ -12,12 +13,15 @@ import javafx.scene.control.*;
import javafx.scene.layout.GridPane ;
import javafx.scene.layout.GridPane ;
import org.xml.sax.SAXException ;
import org.xml.sax.SAXException ;
import seng302.Model.* ;
import seng302.Model.* ;
import seng302.RaceDataSource ;
import seng302.RaceXMLReader ;
import seng302.RaceXMLReader ;
import javax.xml.parsers.ParserConfigurationException ;
import javax.xml.parsers.ParserConfigurationException ;
import java.io.IOException ;
import java.io.IOException ;
import java.net.URL ;
import java.net.URL ;
import java.util.ArrayList ;
import java.util.ArrayList ;
import java.util.Collections ;
import java.util.List ;
import java.util.ResourceBundle ;
import java.util.ResourceBundle ;
/ * *
/ * *
@ -76,8 +80,7 @@ public class RaceController extends Controller {
* @see ResizableRaceCanvas
* @see ResizableRaceCanvas
* /
* /
public void updateMap ( ObservableList < BoatInRace > boats ) {
public void updateMap ( ObservableList < BoatInRace > boats ) {
BoatInRace [ ] boatInRaces = new BoatInRace [ boats . size ( ) ] ;
raceMap . setBoats ( boats ) ;
raceMap . setBoats ( boats . toArray ( boatInRaces ) ) ;
raceMap . update ( ) ;
raceMap . update ( ) ;
}
}
@ -118,44 +121,16 @@ public class RaceController extends Controller {
*
*
* @param scaleFactor scale value of race
* @param scaleFactor scale value of race
* /
* /
public void startRace ( int scaleFactor ) {
public void startRace ( int scaleFactor , RaceDataSource raceData ) {
ConstantVelocityRace newRace = new ConstantVelocityRace ( raceData , this , scaleFactor ) ;
RaceXMLReader raceXMLReader = null ;
try {
raceXMLReader = new RaceXMLReader ( "raceXML/bermuda_AC35.xml" ) ;
} catch ( IOException e ) {
e . printStackTrace ( ) ;
} catch ( SAXException e ) {
e . printStackTrace ( ) ;
} catch ( ParserConfigurationException e ) {
e . printStackTrace ( ) ;
}
BoatInRace [ ] boats = new BoatInRace [ raceXMLReader . getBoats ( ) . size ( ) ] ;
boats = raceXMLReader . getBoats ( ) . toArray ( boats ) ;
double lat1 = raceXMLReader . getMapTopLeft ( ) . getLatitude ( ) ;
double long1 = raceXMLReader . getMapTopLeft ( ) . getLongitude ( ) ;
double lat2 = raceXMLReader . getMapBottomRight ( ) . getLatitude ( ) ;
double long2 = raceXMLReader . getMapBottomRight ( ) . getLongitude ( ) ;
ArrayList < Leg > legs = raceXMLReader . getLegs ( ) ;
ConstantVelocityRace newRace = new ConstantVelocityRace ( boats , legs , this , scaleFactor ) ;
newRace . initialiseBoats ( ) ;
newRace . initialiseBoats ( ) ;
BoatInRace [ ] startingBoats = new BoatInRace [ newRace . getStartingBoats ( ) . size ( ) ] ;
raceMap = new ResizableRaceCanvas ( raceData ) ;
int i = 0 ;
for ( BoatInRace boat : newRace . getStartingBoats ( ) ) {
startingBoats [ i ] = boat ;
i + + ;
}
raceMap = new ResizableRaceCanvas ( lat1 , long1 , lat2 , long2 ) ;
raceMap . setMouseTransparent ( true ) ;
raceMap . setMouseTransparent ( true ) ;
raceMap . widthProperty ( ) . bind ( canvasBase . widthProperty ( ) ) ;
raceMap . widthProperty ( ) . bind ( canvasBase . widthProperty ( ) ) ;
raceMap . heightProperty ( ) . bind ( canvasBase . heightProperty ( ) ) ;
raceMap . heightProperty ( ) . bind ( canvasBase . heightProperty ( ) ) ;
raceMap . setBoats ( startingBoats ) ;
raceMap . setBoats ( newRace . getStartingBoats ( ) ) ;
raceMap . setRaceBoundaries ( race XMLReader . getBoundary ( ) ) ;
raceMap . setRaceBoundaries ( raceData . getBoundary ( ) ) ;
raceMap . drawRaceMap ( ) ;
raceMap . drawRaceMap ( ) ;
raceMap . setVisible ( true ) ;
raceMap . setVisible ( true ) ;
@ -164,7 +139,7 @@ public class RaceController extends Controller {
//Initialize save annotation array, fps listener, and annotation listeners
//Initialize save annotation array, fps listener, and annotation listeners
//timezone
//timezone
RaceClock raceClock = new RaceClock ( race XMLReader . getMark ( ) ) ;
RaceClock raceClock = new RaceClock ( race Data . getMark ( ) ) ;
timeZone . setText ( raceClock . getTimeZone ( ) ) ;
timeZone . setText ( raceClock . getTimeZone ( ) ) ;
initializeFPS ( ) ;
initializeFPS ( ) ;