Update boat position according to boat location messages in StreamedRace

- Added StreamedRace constructor accepting VisualiserInput
- Modified VisualiserInput constructor to accept Socket
- Refactored controller setup of Race

#story[782]
This commit is contained in:
cbt24
2017-05-01 18:52:52 +12:00
parent 8bbea28cab
commit 2e7527b325
6 changed files with 49 additions and 25 deletions
@@ -3,6 +3,7 @@ package seng302.Controllers;
import javafx.fxml.FXML;
import javafx.scene.layout.AnchorPane;
import seng302.RaceDataSource;
import seng302.VisualiserInput;
import java.net.URL;
import java.util.ResourceBundle;
@@ -16,8 +17,8 @@ public class MainController extends Controller {
@FXML
RaceController raceController;
public void beginRace(int scaleFactor, RaceDataSource raceData) {
raceController.startRace(scaleFactor, raceData);
public void beginRace(VisualiserInput visualiserInput) {
raceController.startRace(visualiserInput);
}
@@ -13,6 +13,7 @@ import seng302.Mock.StreamedRace;
import seng302.Model.*;
import seng302.RaceDataSource;
import seng302.RaceXMLReader;
import seng302.VisualiserInput;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
@@ -114,13 +115,13 @@ public class RaceController extends Controller {
* Initializes and runs the race, based on the user's chosen scale factor
* Currently uses an example racecourse
*
* @param scaleFactor scale value of race
* @param visualiserInput
*/
public void startRace(int scaleFactor, RaceDataSource raceData) {
StreamedRace newRace = new StreamedRace(raceData, this, scaleFactor);
public void startRace(VisualiserInput visualiserInput) {
StreamedRace newRace = new StreamedRace(visualiserInput, this);
//newRace.initialiseBoats();
raceMap = new ResizableRaceCanvas(raceData);
raceMap = new ResizableRaceCanvas(visualiserInput.getCourse());
raceMap.setMouseTransparent(true);
raceMap.widthProperty().bind(canvasBase.widthProperty());
raceMap.heightProperty().bind(canvasBase.heightProperty());
@@ -133,8 +134,8 @@ public class RaceController extends Controller {
//Initialize save annotation array, fps listener, and annotation listeners
//timezone
RaceClock raceClock = new RaceClock(raceData.getZonedDateTime());
timeZone.setText(raceClock.getTimeZone());
// RaceClock raceClock = new RaceClock(visualiserInput.getCourse().getZonedDateTime());
// timeZone.setText(raceClock.getTimeZone());
initializeFPS();
initializeAnnotations();
@@ -21,6 +21,8 @@ import seng302.RaceDataSource;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.net.URL;
import java.text.ParseException;
import java.util.List;
@@ -53,6 +55,8 @@ public class StartController extends Controller implements Observer {
private StreamedCourse raceData;
private long timeLeft = 1;
private VisualiserInput visualiserInput;
/**
* Begins the race with a scale factor of 15
*/
@@ -88,7 +92,7 @@ public class StartController extends Controller implements Observer {
try {
raceData = new StreamedCourse();
raceData.addObserver(this);
VisualiserInput visualiserInput = new VisualiserInput(raceData);
visualiserInput = new VisualiserInput(new Socket("livedata.americascup.com", 4941), raceData);
new Thread(visualiserInput).start();
// StreamedCourse streamedCourse = new StreamedCourse(new BoatXMLReader("mockXML/boatXML/boatTest.xml"));
// streamedCourse.setStreamedCourseXMLReader(new StreamedCourseXMLReader("mockXML/raceXML/raceTest.xml"));
@@ -150,7 +154,7 @@ public class StartController extends Controller implements Observer {
if (timeLeft <= 0) {
updateTime("Race is starting...");
stop();
parent.beginRace(scaleFactor, raceData);
parent.beginRace(visualiserInput);
startWrapper.setVisible(false);
} else {