|
|
|
@ -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;
|
|
|
|
@ -125,61 +127,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){
|
|
|
|
@ -192,7 +200,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();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -228,10 +235,9 @@ 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();
|
|
|
|
|
|
|
|
|
|
|
|
//Try catch for getting interval times
|
|
|
|
//Try catch for getting interval times
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
long interval = ChronoUnit.MILLIS.between(visualiserRaceEvent.getVisualiserRaceState().getRaceClock().getCurrentTime(), visualiserRaceEvent.getVisualiserRaceState().getRaceClock().getStartingTime());
|
|
|
|
long interval = ChronoUnit.MILLIS.between(visualiserRaceEvent.getVisualiserRaceState().getRaceClock().getCurrentTime(), visualiserRaceEvent.getVisualiserRaceState().getRaceClock().getStartingTime());
|
|
|
|
|