diff --git a/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java b/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java index 5e9c8792..b8108c18 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java @@ -277,6 +277,7 @@ public class InGameLobbyController extends Controller { alert.setHeaderText("You are about to quit the race"); Optional result = alert.showAndWait(); if(result.get() == ButtonType.OK){ + visualiserRaceEvent.terminate(); gameLobbyWrapper.setVisible(false); parent.enterTitle(); } diff --git a/racevisionGame/src/main/java/visualiser/model/VisualiserRaceEvent.java b/racevisionGame/src/main/java/visualiser/model/VisualiserRaceEvent.java index d5ab9b66..24da83f3 100644 --- a/racevisionGame/src/main/java/visualiser/model/VisualiserRaceEvent.java +++ b/racevisionGame/src/main/java/visualiser/model/VisualiserRaceEvent.java @@ -112,8 +112,8 @@ public class VisualiserRaceEvent { * Terminates the server connection and race service. */ public void terminate() { - this.serverConnectionThread.interrupt(); - this.visualiserRaceServiceThread.interrupt(); + this.serverConnectionThread.interrupt(); + serverConnection.terminate(); } } diff --git a/racevisionGame/src/main/java/visualiser/network/ServerConnection.java b/racevisionGame/src/main/java/visualiser/network/ServerConnection.java index 5d6d8773..899cbc45 100644 --- a/racevisionGame/src/main/java/visualiser/network/ServerConnection.java +++ b/racevisionGame/src/main/java/visualiser/network/ServerConnection.java @@ -468,7 +468,15 @@ public class ServerConnection implements RunnableWithFramePeriod { this.visualiserRaceControllerThread.interrupt(); } - + if (this.socket != null) { + try { + this.socket.getInputStream().close(); + this.socket.getOutputStream().close(); + this.socket.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } //TODO input controller?