Merge remote-tracking branch 'origin/nullptr_finish_race_arrow' into newHostServer

main
Fan-Wu Yang 8 years ago
commit b0857debeb

@ -24,7 +24,6 @@ import java.util.logging.Logger;
public class RaceServer { public class RaceServer {
private MockRace race; private MockRace race;
private LatestMessages latestMessages; private LatestMessages latestMessages;
private static RaceServer server;
private List<YachtEvent> collisionEvents = new ArrayList<>(); private List<YachtEvent> collisionEvents = new ArrayList<>();
@ -50,16 +49,10 @@ public class RaceServer {
public RaceServer(MockRace race, LatestMessages latestMessages) { public RaceServer(MockRace race, LatestMessages latestMessages) {
server = this;
this.race = race; this.race = race;
this.latestMessages = latestMessages; this.latestMessages = latestMessages;
} }
public static void staticUpdateXML() {
if (server != null) {
server.updateXMLFiles();
}
}
/** /**
* Parses the race to create a snapshot, and places it in latestMessages. * Parses the race to create a snapshot, and places it in latestMessages.

@ -157,7 +157,6 @@ public class LatestMessages extends Observable {
return false; return false;
} else { } else {
RaceServer.staticUpdateXML();
return true; return true;
} }

@ -183,6 +183,10 @@ public class BoatXMLReader extends XMLReader implements BoatDataSource {
return sequenceNumber; return sequenceNumber;
} }
public void setSequenceNumber(int sequenceNumber) {
this.sequenceNumber = sequenceNumber;
}
@Override @Override
public void incrementSequenceNumber() { public void incrementSequenceNumber() {
sequenceNumber++; sequenceNumber++;

@ -499,6 +499,10 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource {
return sequenceNumber; return sequenceNumber;
} }
public void setSequenceNumber(int sequenceNumber) {
this.sequenceNumber = sequenceNumber;
}
@Override @Override
public void incrementSequenceNumber() { public void incrementSequenceNumber() {
sequenceNumber++; sequenceNumber++;

@ -217,6 +217,10 @@ public class RegattaXMLReader extends XMLReader implements RegattaDataSource {
return sequenceNumber; return sequenceNumber;
} }
public void setSequenceNumber(int sequenceNumber) {
this.sequenceNumber = sequenceNumber;
}
@Override @Override
public void incrementSequenceNumber() { public void incrementSequenceNumber() {
sequenceNumber++; sequenceNumber++;

@ -41,8 +41,8 @@ public class BoatsXMLMessageCommand implements Command {
@Override @Override
public void execute() { public void execute() {
if (boatDataSource.getSequenceNumber() > visualiserRace.getBoatDataSource().getSequenceNumber()) {
visualiserRace.setBoatDataSource(boatDataSource); visualiserRace.setBoatDataSource(boatDataSource);
}
} }
} }

@ -38,7 +38,9 @@ public class RaceXMLMessageCommand implements Command {
@Override @Override
public void execute() { public void execute() {
visualiserRace.setRaceDataSource(raceDataSource); if (raceDataSource.getSequenceNumber() > visualiserRace.getRaceDataSource().getSequenceNumber()) {
visualiserRace.setRaceDataSource(raceDataSource);
}
} }
} }

@ -37,8 +37,9 @@ public class RegattaXMLMessageCommand implements Command {
@Override @Override
public void execute() { public void execute() {
if (regattaDataSource.getSequenceNumber() > visualiserRace.getRegattaDataSource().getSequenceNumber()) {
visualiserRace.setRegattaDataSource(regattaDataSource); visualiserRace.setRegattaDataSource(regattaDataSource);
}
} }
} }

@ -34,17 +34,20 @@ public class XMLMessageCommandFactory {
switch (message.getXmlMsgSubType()) { switch (message.getXmlMsgSubType()) {
case BOAT: case BOAT:
BoatDataSource boatDataSource = new BoatXMLReader(message.getXmlMessage(), XMLFileType.Contents); BoatXMLReader boatDataSource = new BoatXMLReader(message.getXmlMessage(), XMLFileType.Contents);
boatDataSource.setSequenceNumber(message.getSequenceNumber());
return new BoatsXMLMessageCommand(boatDataSource, visualiserRace); return new BoatsXMLMessageCommand(boatDataSource, visualiserRace);
case RACE: case RACE:
RaceDataSource raceDataSource = new RaceXMLReader(message.getXmlMessage(), XMLFileType.Contents); RaceXMLReader raceDataSource = new RaceXMLReader(message.getXmlMessage(), XMLFileType.Contents);
raceDataSource.setSequenceNumber(message.getSequenceNumber());
return new RaceXMLMessageCommand(raceDataSource, visualiserRace); return new RaceXMLMessageCommand(raceDataSource, visualiserRace);
case REGATTA: case REGATTA:
RegattaDataSource regattaDataSource = new RegattaXMLReader(message.getXmlMessage(), XMLFileType.Contents); RegattaXMLReader regattaDataSource = new RegattaXMLReader(message.getXmlMessage(), XMLFileType.Contents);
regattaDataSource.setSequenceNumber(message.getSequenceNumber());
return new RegattaXMLMessageCommand(regattaDataSource, visualiserRace); return new RegattaXMLMessageCommand(regattaDataSource, visualiserRace);

@ -429,12 +429,14 @@ public class RaceViewController extends Controller {
@Override @Override
public void handle(long now) { public void handle(long now) {
CompoundMark target = boat.getCurrentLeg().getEndCompoundMark(); CompoundMark target = boat.getCurrentLeg().getEndCompoundMark();
Bearing headingToMark = GPSCoordinate.calculateBearing(boat.getPosition(), target.getAverageGPSCoordinate()); if (target != null) {
Bearing headingToMark = GPSCoordinate.calculateBearing(boat.getPosition(), target.getAverageGPSCoordinate());
nextMarkArrow.setX(view3D.getPivot().getX()); nextMarkArrow.setX(view3D.getPivot().getX());
nextMarkArrow.setY(view3D.getPivot().getY()); nextMarkArrow.setY(view3D.getPivot().getY());
nextMarkArrow.setZ(view3D.getPivot().getZ() + 15); nextMarkArrow.setZ(view3D.getPivot().getZ() + 15);
nextMarkArrow.setHeading(headingToMark.degrees()); nextMarkArrow.setHeading(headingToMark.degrees());
}
} }
}; };
arrowToNextMark.start(); arrowToNextMark.start();

Loading…
Cancel
Save