Fixed most of issue #19 with new master?
This commit is contained in:
@@ -122,7 +122,7 @@ public class ConnectionController extends Controller {
|
||||
Socket socket = new Socket(connection.getHostname(), connection.getPort());
|
||||
socket.setKeepAlive(true);
|
||||
connectionWrapper.setVisible(false);
|
||||
parent.enterLobby(socket);
|
||||
//parent.enterLobby(socket);
|
||||
} catch (IOException e) { /* Never reached */ }
|
||||
}
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ public class HostController extends Controller {
|
||||
try{
|
||||
Socket socket = new Socket(address, port);
|
||||
hostWrapper.setVisible(false);
|
||||
parent.enterLobby(socket);
|
||||
parent.enterLobby(socket, true);
|
||||
} catch (IOException e) { /* Never reached */ }
|
||||
}
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@ public class LobbyController extends Controller {
|
||||
RaceConnection connection = lobbyTable.getSelectionModel().getSelectedItem();
|
||||
Socket socket = new Socket(connection.getHostname(), connection.getPort());
|
||||
lobbyWrapper.setVisible(false);
|
||||
parent.enterLobby(socket);
|
||||
parent.enterLobby(socket, false);
|
||||
} catch (IOException e) { /* Never reached */
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
@@ -41,8 +41,8 @@ public class MainController extends Controller {
|
||||
* @param visualiserRace The object modelling the race.
|
||||
* @param controllerClient Socket Client that manipulates the controller.
|
||||
*/
|
||||
public void beginRace(VisualiserRaceEvent visualiserRace, ControllerClient controllerClient) {
|
||||
raceController.startRace(visualiserRace, controllerClient);
|
||||
public void beginRace(VisualiserRaceEvent visualiserRace, ControllerClient controllerClient, Boolean isHost) {
|
||||
raceController.startRace(visualiserRace, controllerClient, isHost);
|
||||
}
|
||||
|
||||
public void endEvent() throws IOException { hostController.endEvent(); }
|
||||
@@ -51,8 +51,8 @@ public class MainController extends Controller {
|
||||
* Transitions from the server selection screen to the pre-race lobby for a given server.
|
||||
* @param socket The server to read data from.
|
||||
*/
|
||||
public void enterLobby(Socket socket) {
|
||||
startController.enterLobby(socket);
|
||||
public void enterLobby(Socket socket, Boolean isHost) {
|
||||
startController.enterLobby(socket, isHost);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -67,11 +67,7 @@ public class MainController extends Controller {
|
||||
* Transitions into the title screen
|
||||
*/
|
||||
public void enterTitle() {
|
||||
try {
|
||||
App.loadStart(App.getStage());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
titleController.enterTitle();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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...).
|
||||
|
||||
@@ -82,7 +82,7 @@ public class StartController extends Controller {
|
||||
*/
|
||||
private ControllerClient controllerClient;
|
||||
|
||||
|
||||
private boolean isHost;
|
||||
|
||||
|
||||
|
||||
@@ -238,7 +238,7 @@ public class StartController extends Controller {
|
||||
startWrapper.setVisible(false);
|
||||
//start.setVisible(false);//TODO is this needed?
|
||||
|
||||
parent.beginRace(visualiserRaceEvent, controllerClient);
|
||||
parent.beginRace(visualiserRaceEvent, controllerClient, isHost);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -250,10 +250,13 @@ public class StartController extends Controller {
|
||||
/**
|
||||
* Show starting information for a race given a socket.
|
||||
* @param socket network source of information
|
||||
* @param isHost
|
||||
*/
|
||||
public void enterLobby(Socket socket) {
|
||||
public void enterLobby(Socket socket, Boolean isHost) {
|
||||
try {
|
||||
|
||||
this.isHost = isHost;
|
||||
|
||||
this.visualiserRaceEvent = new VisualiserRaceEvent(socket, RequestToJoinEnum.PARTICIPANT);
|
||||
|
||||
this.controllerClient = visualiserRaceEvent.getControllerClient();
|
||||
|
||||
Reference in New Issue
Block a user