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.
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user