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,9 +148,11 @@ 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) {
this.raceDataSource = raceDataSource; if ((this.raceDataSource == null) || (raceDataSource.getSequenceNumber() > this.raceDataSource.getSequenceNumber())) {
this.getRaceClock().setStartingTime(raceDataSource.getStartDateTime()); this.raceDataSource = raceDataSource;
useLegsList(raceDataSource.getLegs()); this.getRaceClock().setStartingTime(raceDataSource.getStartDateTime());
useLegsList(raceDataSource.getLegs());
}
} }
/** /**
@ -158,7 +160,9 @@ public abstract class RaceState extends Observable{
* @param boatDataSource New boat data source. * @param boatDataSource New boat data source.
*/ */
public void setBoatDataSource(BoatDataSource boatDataSource) { public void setBoatDataSource(BoatDataSource boatDataSource) {
this.boatDataSource = boatDataSource; if ((this.boatDataSource == null) || (boatDataSource.getSequenceNumber() > this.boatDataSource.getSequenceNumber())) {
this.boatDataSource = boatDataSource;
}
} }
/** /**
@ -166,7 +170,9 @@ public abstract class RaceState extends Observable{
* @param regattaDataSource New regatta data source. * @param regattaDataSource New regatta data source.
*/ */
public void setRegattaDataSource(RegattaDataSource regattaDataSource) { public void setRegattaDataSource(RegattaDataSource regattaDataSource) {
this.regattaDataSource = regattaDataSource; if ((this.regattaDataSource == null) || (regattaDataSource.getSequenceNumber() > this.regattaDataSource.getSequenceNumber())) {
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,61 +126,67 @@ 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();
try{ }
resetLobby(); }
int count = 0; });
int row = 0; }
for (VisualiserBoat boat :visualiserRaceEvent.getVisualiserRaceState().getBoats()) {
View3D playerBoatToSet = new View3D(); public void populateLobby() {
playerBoatToSet.setItems(subjects);
try{
playerContainer.add(playerBoatToSet, (count % 3) , row); resetLobby();
playerContainer.setMargin(playerBoatToSet, new Insets(10, 10, 10, 10)); int count = 0;
int row = 0;
SeaSurface sea = new SeaSurface(750, 200);
sea.setX(250); for (VisualiserBoat boat :visualiserRaceEvent.getVisualiserRaceState().getBoats()) {
sea.setZ(210); View3D playerBoatToSet = new View3D();
subjects.add(sea); playerBoatToSet.setItems(subjects);
MeshView mesh = new MeshView(importer.getImport()); playerContainer.add(playerBoatToSet, (count % 3) , row);
PhongMaterial boatColorMat = new PhongMaterial(boat.getColor()); playerContainer.setMargin(playerBoatToSet, new Insets(10, 10, 10, 10));
mesh.setMaterial(boatColorMat);
Subject3D subject = new Subject3D(mesh,0); SeaSurface sea = new SeaSurface(750, 200);
subjects.add(subject); sea.setX(250);
sea.setZ(210);
playerBoatToSet.setDistance(50); subjects.add(sea);
playerBoatToSet.setYaw(45);
playerBoatToSet.setPitch(20); MeshView mesh = new MeshView(importer.getImport());
PhongMaterial boatColorMat = new PhongMaterial(boat.getColor());
mesh.setMaterial(boatColorMat);
Subject3D subject = new Subject3D(mesh,0);
AnimationTimer rotate = new AnimationTimer() { subjects.add(subject);
@Override
public void handle(long now) { playerBoatToSet.setDistance(50);
subject.setHeading(subject.getHeading().getAngle() + 0.1); playerBoatToSet.setYaw(45);
} playerBoatToSet.setPitch(20);
};
rotate.start();
allPlayerLabels.get(count).setText(boat.getName()); AnimationTimer rotate = new AnimationTimer() {
allPlayerLabels.get(count).toFront(); @Override
count += 1; public void handle(long now) {
if (count > 2){ subject.setHeading(subject.getHeading().getAngle() + 0.1);
row = 1;
}
}
}
catch(ConcurrentModificationException e){
}
}
} }
};
rotate.start();
allPlayerLabels.get(count).setText(boat.getName());
allPlayerLabels.get(count).toFront();
count += 1;
if (count > 2){
row = 1;
} }
); }
}
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