Another fix for race xml stuff - the xml was fine, but the data sources would sometimes be overridden by empty ones, due to threading stuff.

main
fjc40 8 years ago
parent 424cd63c59
commit db27d673de

@ -22,7 +22,7 @@ public class EmptyBoatDataSource implements BoatDataSource {
private final Map<Integer, Mark> markerMap = new HashMap<>(); private final Map<Integer, Mark> markerMap = new HashMap<>();
private int sequenceNumber = 0; private int sequenceNumber = -1;
public EmptyBoatDataSource() { public EmptyBoatDataSource() {

@ -84,7 +84,7 @@ public class EmptyRaceDataSource implements RaceDataSource {
private RaceTypeEnum raceType = RaceTypeEnum.NOT_A_RACE_TYPE; private RaceTypeEnum raceType = RaceTypeEnum.NOT_A_RACE_TYPE;
private int sequenceNumber = 0; private int sequenceNumber = -1;
public EmptyRaceDataSource() { public EmptyRaceDataSource() {

@ -60,7 +60,7 @@ public class EmptyRegattaDataSource implements RegattaDataSource {
private int sequenceNumber = 0; private int sequenceNumber = -1;
public EmptyRegattaDataSource() { public EmptyRegattaDataSource() {

@ -148,26 +148,32 @@ public abstract class RaceState extends Observable{
* @param raceDataSource New race data source. * @param raceDataSource New race data source.
*/ */
public void setRaceDataSource(RaceDataSource raceDataSource) { public void setRaceDataSource(RaceDataSource raceDataSource) {
if ((this.raceDataSource == null) || (raceDataSource.getSequenceNumber() > this.raceDataSource.getSequenceNumber())) {
this.raceDataSource = raceDataSource; this.raceDataSource = raceDataSource;
this.getRaceClock().setStartingTime(raceDataSource.getStartDateTime()); this.getRaceClock().setStartingTime(raceDataSource.getStartDateTime());
useLegsList(raceDataSource.getLegs()); useLegsList(raceDataSource.getLegs());
} }
}
/** /**
* Sets the boat data source for the race. * Sets the boat data source for the race.
* @param boatDataSource New boat data source. * @param boatDataSource New boat data source.
*/ */
public void setBoatDataSource(BoatDataSource boatDataSource) { public void setBoatDataSource(BoatDataSource boatDataSource) {
if ((this.boatDataSource == null) || (boatDataSource.getSequenceNumber() > this.boatDataSource.getSequenceNumber())) {
this.boatDataSource = boatDataSource; this.boatDataSource = boatDataSource;
} }
}
/** /**
* Sets the regatta data source for the race. * Sets the regatta data source for the race.
* @param regattaDataSource New regatta data source. * @param regattaDataSource New regatta data source.
*/ */
public void setRegattaDataSource(RegattaDataSource regattaDataSource) { public void setRegattaDataSource(RegattaDataSource regattaDataSource) {
if ((this.regattaDataSource == null) || (regattaDataSource.getSequenceNumber() > this.regattaDataSource.getSequenceNumber())) {
this.regattaDataSource = regattaDataSource; this.regattaDataSource = regattaDataSource;
} }
}
/** /**

@ -15,11 +15,13 @@ import javafx.scene.control.Label;
import javafx.scene.image.ImageView; import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane; import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
import javafx.scene.paint.Color;
import javafx.scene.paint.PhongMaterial; import javafx.scene.paint.PhongMaterial;
import javafx.scene.shape.MeshView; import javafx.scene.shape.MeshView;
import mock.app.Event; import mock.app.Event;
import network.Messages.Enums.RaceStatusEnum; import network.Messages.Enums.RaceStatusEnum;
import network.Messages.Enums.RequestToJoinEnum; import network.Messages.Enums.RequestToJoinEnum;
import shared.model.Boat;
import visualiser.app.App; import visualiser.app.App;
import visualiser.gameController.ControllerClient; import visualiser.gameController.ControllerClient;
import visualiser.layout.SeaSurface; import visualiser.layout.SeaSurface;
@ -124,14 +126,22 @@ public class InGameLobbyController extends Controller {
@Override @Override
public void onChanged(Change change) { public void onChanged(Change change) {
Platform.runLater( Platform.runLater(() -> {
() -> { while (change.next()) {
while (change.next()){ if (change.wasAdded() || change.wasRemoved() || change.wasUpdated()) {
if (change.wasAdded() || change.wasRemoved() || change.wasUpdated()){ populateLobby();
}
}
});
}
public void populateLobby() {
try{ try{
resetLobby(); resetLobby();
int count = 0; int count = 0;
int row = 0; int row = 0;
for (VisualiserBoat boat :visualiserRaceEvent.getVisualiserRaceState().getBoats()) { for (VisualiserBoat boat :visualiserRaceEvent.getVisualiserRaceState().getBoats()) {
View3D playerBoatToSet = new View3D(); View3D playerBoatToSet = new View3D();
playerBoatToSet.setItems(subjects); playerBoatToSet.setItems(subjects);
@ -173,12 +183,10 @@ public class InGameLobbyController extends Controller {
} }
} }
catch(ConcurrentModificationException e){ catch(ConcurrentModificationException e){
e.printStackTrace();
} }
} }
}
}
);
}
} }
/* /*
private void populatePlayers(ListChangeListener.Change change){ private void populatePlayers(ListChangeListener.Change change){
@ -191,7 +199,6 @@ public class InGameLobbyController extends Controller {
//Initialises the race clock. //Initialises the race clock.
initialiseRaceClock(this.visualiserRaceEvent.getVisualiserRaceState()); initialiseRaceClock(this.visualiserRaceEvent.getVisualiserRaceState());
//Starts the race countdown timer. //Starts the race countdown timer.
countdownTimer(); countdownTimer();
} }
@ -227,7 +234,6 @@ public class InGameLobbyController extends Controller {
new AnimationTimer() { new AnimationTimer() {
@Override @Override
public void handle(long arg0) { public void handle(long arg0) {
//Get the current race status. //Get the current race status.
RaceStatusEnum raceStatus = visualiserRaceEvent.getVisualiserRaceState().getRaceStatusEnum(); RaceStatusEnum raceStatus = visualiserRaceEvent.getVisualiserRaceState().getRaceStatusEnum();

@ -94,7 +94,7 @@ public class VisualiserRaceState extends RaceState {
super.setRaceDataSource(raceDataSource); super.setRaceDataSource(raceDataSource);
if (getBoatDataSource() != null) { if (getBoatDataSource() != null) {
this.generateVisualiserBoats(this.boats, getBoatDataSource().getBoats(), raceDataSource.getParticipants(), unassignedColors); this.generateVisualiserBoats(this.boats, getBoatDataSource().getBoats(), getRaceDataSource().getParticipants(), unassignedColors);
} }
initialiseLegCompletionOrder(); initialiseLegCompletionOrder();
@ -109,7 +109,7 @@ public class VisualiserRaceState extends RaceState {
super.setBoatDataSource(boatDataSource); super.setBoatDataSource(boatDataSource);
if (getRaceDataSource() != null) { if (getRaceDataSource() != null) {
this.generateVisualiserBoats(this.boats, boatDataSource.getBoats(), getRaceDataSource().getParticipants(), unassignedColors); this.generateVisualiserBoats(this.boats, getBoatDataSource().getBoats(), getRaceDataSource().getParticipants(), unassignedColors);
} }
} }

Loading…
Cancel
Save