Fixed null pointer when cant find a server

tags: #fix
This commit is contained in:
William Muir
2017-08-17 15:40:55 +12:00
parent a501b21d66
commit 4c730ea890
@@ -74,6 +74,7 @@ public class GameClient {
startClientToServerThread(ipAddress, portNumber); startClientToServerThread(ipAddress, portNumber);
socketThread.addDisconnectionListener((cause) -> { socketThread.addDisconnectionListener((cause) -> {
showConnectionError(cause); showConnectionError(cause);
tearDownConnection();
Platform.runLater(this::loadStartScreen); Platform.runLater(this::loadStartScreen);
}); });
socketThread.addStreamObserver(this::parsePackets); socketThread.addStreamObserver(this::parsePackets);
@@ -91,7 +92,10 @@ public class GameClient {
lobbyController.setCourseName(""); lobbyController.setCourseName("");
} }
lobbyController.addCloseListener((exitCause) -> this.loadStartScreen()); lobbyController.addCloseListener((exitCause) -> {
this.tearDownConnection();
this.loadStartScreen();
});
this.lobbyController = lobbyController; this.lobbyController = lobbyController;
} catch (IOException ioe) { } catch (IOException ioe) {
showConnectionError("Unable to find server"); showConnectionError("Unable to find server");
@@ -109,6 +113,7 @@ public class GameClient {
try { try {
startClientToServerThread(ipAddress, portNumber); startClientToServerThread(ipAddress, portNumber);
socketThread.addDisconnectionListener((cause) -> { socketThread.addDisconnectionListener((cause) -> {
this.tearDownConnection();
Platform.runLater(this::loadStartScreen); Platform.runLater(this::loadStartScreen);
}); });
LobbyController lobbyController = loadLobby(); LobbyController lobbyController = loadLobby();
@@ -129,8 +134,7 @@ public class GameClient {
lobbyController.disableReadyButton(); lobbyController.disableReadyButton();
server.startGame(); server.startGame();
} else if (exitCause == CloseStatus.LEAVE) { } else if (exitCause == CloseStatus.LEAVE) {
server.terminate(); tearDownConnection();
server = null;
loadStartScreen(); loadStartScreen();
} }
}); });
@@ -141,12 +145,20 @@ public class GameClient {
} }
} }
private void loadStartScreen() { private void tearDownConnection() {
socketThread.setSocketToClose(); socketThread.setSocketToClose();
if (server != null) { if (server != null) {
server.terminate(); server.terminate();
server = null; server = null;
} }
}
private void loadStartScreen() {
// socketThread.setSocketToClose();
// if (server != null) {
// server.terminate();
// server = null;
// }
FXMLLoader fxmlLoader = new FXMLLoader( FXMLLoader fxmlLoader = new FXMLLoader(
getClass().getResource("/views/StartScreenView.fxml")); getClass().getResource("/views/StartScreenView.fxml"));
try { try {