Fixed most of issue #19 with new master?

This commit is contained in:
David Wu
2017-08-17 13:49:43 +12:00
parent fa5992bfb2
commit c08bafa566
16 changed files with 98 additions and 43 deletions
@@ -20,6 +20,7 @@ import javafx.scene.layout.StackPane;
import javafx.util.Callback;
import network.Messages.Enums.RaceStatusEnum;
import shared.model.Leg;
import visualiser.app.App;
import visualiser.gameController.ControllerClient;
import visualiser.gameController.Keys.ControlKey;
import visualiser.gameController.Keys.KeyFactory;
@@ -28,6 +29,7 @@ import visualiser.network.ServerConnection;
import java.io.IOException;
import java.net.URL;
import java.util.Optional;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -52,7 +54,7 @@ public class RaceController extends Controller {
private ControllerClient controllerClient;
private boolean isHost;
/**
* The canvas that draws the race.
@@ -123,16 +125,34 @@ public class RaceController extends Controller {
Logger.getGlobal().log(Level.WARNING, "RaceController was interrupted on thread: " + Thread.currentThread() + "while sending: " + controlKey, e);
}
}
if(event.getCode() == KeyCode.ESCAPE){
race.setVisible(false);
if(event.getCode() == KeyCode.ESCAPE) {
try {
parent.endEvent();
if (isHost) {
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setTitle("Exit Race");
alert.setContentText("Do you wish to quit the race? You are the host");
Optional<ButtonType> result = alert.showAndWait();
if (result.get() == ButtonType.OK) {
parent.endEvent();
race.setVisible(false);
App.app.loadStart(App.getStage());
}
} else {
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setTitle("Exit Race");
alert.setContentText("Do you wish to quit the race?");
Optional<ButtonType> result = alert.showAndWait();
if (result.get() == ButtonType.OK) {
race.setVisible(false);
App.app.loadStart(App.getStage());
}
}
} catch (IOException e) {
e.printStackTrace();
}
parent.enterTitle();
}
});
});
}
@@ -371,10 +391,11 @@ public class RaceController extends Controller {
* @param visualiserRace Object modelling the race.
* @param controllerClient Socket Client that manipulates the controller.
*/
public void startRace(VisualiserRaceEvent visualiserRace, ControllerClient controllerClient) {
public void startRace(VisualiserRaceEvent visualiserRace, ControllerClient controllerClient, Boolean isHost) {
this.visualiserRace = visualiserRace;
this.controllerClient = controllerClient;
this.isHost = isHost;
initialiseRace();
@@ -438,7 +459,12 @@ public class RaceController extends Controller {
//Return to main screen if we lose connection.
if (!visualiserRace.getServerConnection().isAlive()) {
race.setVisible(false);
parent.enterTitle();
//parent.enterTitle();
try {
App.app.loadStart(App.getStage());
} catch (IOException e) {
e.printStackTrace();
}
//TODO currently this doesn't work correctly - the title screen remains visible after clicking join game
//TODO we should display an error to the user
//TODO also need to "reset" any state (race, connections, etc...).