Got mock data being used by visualiser.

- Issue with zonedTimeDate not parsing
- Fixed race crashing once one boat finished

#story[778]
main
Erika Savell 9 years ago
parent d1baf021ac
commit 7d1f4209e4

@ -44,7 +44,7 @@ public class MockOutput implements Runnable
public MockOutput() throws IOException {
lastHeartbeatTime = System.currentTimeMillis();
serverSocket = new ServerSocket(4942);
serverSocket = new ServerSocket(4943);
}
/**
* calculates the time since last heartbeat

@ -31,7 +31,7 @@ public class Race implements Runnable {
protected int boatsFinished = 0;
protected long totalTimeElapsed;
protected int scaleFactor;
protected int PRERACE_TIME = 12; //time in milliseconds to pause during pre-race
protected int PRERACE_TIME = 12000; //time in milliseconds to pause during pre-race
protected boolean countdownFinish = false;
protected boolean runRace = true;
private int lastFPS = 20;
@ -66,10 +66,6 @@ public class Race implements Runnable {
this(raceData.getBoats(), raceData.getLegs(), scaleFactor, mockOutput);
}
public void setRaceId(int raceId) {
this.raceId = raceId;
}
/**
* Calculates the boats next GPS position based on its distance travelled and heading
*
@ -172,12 +168,13 @@ public class Race implements Runnable {
//For each boat, we update it's position, and generate a BoatLocationMessage.
for (Boat boat : startingBoats) {
if (boat != null && boat.getTimeFinished() < 0) {
if (boat != null) {
//Update position.
updatePosition(boat, Math.round(1000 / lastFPS) > 20 ? 15 : Math.round(1000 / lastFPS));
checkPosition(boat, totalTimeElapsed);
if (boat.getTimeFinished() < 0) {
updatePosition(boat, Math.round(1000 / lastFPS) > 20 ? 15 : Math.round(1000 / lastFPS));
checkPosition(boat, totalTimeElapsed);
}
mockOutput.parseBoatLocation(boat.getSourceID(), boat.getCurrentPosition().getLatitude(), boat.getCurrentPosition().getLongitude());
System.out.println("Sending boat status");
boatStatusMessages.add(new BoatStatusMessage(boat.getSourceID(),
boat.getCurrentLeg().getLegNumber() >= 0 ? BoatStatus.RACING : BoatStatus.DNF, boat.getCurrentLeg().getLegNumber()));
} else {

@ -92,7 +92,8 @@ public class StartController extends Controller implements Observer {
try {
raceData = new StreamedCourse();
raceData.addObserver(this);
visualiserInput = new VisualiserInput(new Socket("livedata.americascup.com", 4941), raceData);
// visualiserInput = new VisualiserInput(new Socket("livedata.americascup.com", 4941), raceData);
visualiserInput = new VisualiserInput(new Socket(InetAddress.getLocalHost(), 4943), raceData);
new Thread(visualiserInput).start();
// StreamedCourse streamedCourse = new StreamedCourse(new BoatXMLReader("mockXML/boatXML/boatTest.xml"));
// streamedCourse.setStreamedCourseXMLReader(new StreamedCourseXMLReader("mockXML/raceXML/raceTest.xml"));

@ -87,10 +87,13 @@ public class StreamedCourseXMLReader extends XMLReader {
raceID = Integer.parseInt(getTextValueOfNode(settings, "RaceID"));
raceType = getTextValueOfNode(settings, "RaceType");
creationTimeDate = ZonedDateTime.parse(getTextValueOfNode(settings, "CreationTimeDate"), dateFormat);
//creationTimeDate = ZonedDateTime.parse(getTextValueOfNode(settings, "CreationTimeDate"), dateFormat);
// creationTimeDate = ZonedDateTime.now();
// raceStartTime = ZonedDateTime.now();
if (raceTimeTag.getNamedItem("Time") != null) raceStartTime = ZonedDateTime.parse(raceTimeTag.getNamedItem("Time").getTextContent(), dateFormat);
else raceStartTime = ZonedDateTime.parse(raceTimeTag.getNamedItem("Start").getTextContent(), dateFormat);
postpone = Boolean.parseBoolean(raceTimeTag.getNamedItem("Postpone").getTextContent());
}

@ -69,8 +69,6 @@ public class StreamedRace extends Race {
boatsFinished++;
boat.setTimeFinished(timeElapsed);
boat.setFinished(true);
} else {
boat.setCurrentLeg(raceData.getLegs().get(legNumber));
}
//Update the boat display table in the GUI to reflect the leg change
updatePositions();

@ -287,7 +287,7 @@ public class VisualiserInput implements Runnable
public static void main(String argv[]) throws Exception
{
Socket socket = new Socket(InetAddress.getLocalHost(), 4942);
Socket socket = new Socket(InetAddress.getLocalHost(), 4943);
VisualiserInput receiver = new VisualiserInput(socket, new StreamedCourse());
receiver.run();
}

Loading…
Cancel
Save