diff --git a/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java b/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java index 38816a0e..5953bf92 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java @@ -40,7 +40,7 @@ public class LobbyController extends Controller { private @FXML TextField addressFld; private @FXML TextField portFld; - private ObservableList connections; + private ObservableList allConnections; private ObservableList customConnections; private AudioClip sound; @@ -51,12 +51,20 @@ public class LobbyController extends Controller { public void initialize() { httpMatchBrowserClient = new HttpMatchBrowserClient(); + httpMatchBrowserClient.connections.addListener(new ListChangeListener() { + @Override + public void onChanged(Change c) { + refreshTable(); + } + }); + new Thread(httpMatchBrowserClient, "Match Client").start(); // set up the connection table customConnections = FXCollections.observableArrayList(); + allConnections = FXCollections.observableArrayList(); //connections.add(new RaceConnection("localhost", 4942, "Local Game")); - lobbyTable.setItems(httpMatchBrowserClient.connections); + lobbyTable.setItems(allConnections); gameNameColumn.setCellValueFactory(cellData -> cellData.getValue().gamenameProperty()); hostNameColumn.setCellValueFactory(cellData -> cellData.getValue().hostnameProperty()); statusColumn.setCellValueFactory(cellData -> cellData.getValue().statusProperty()); @@ -82,8 +90,14 @@ public class LobbyController extends Controller { public void refreshBtnPressed(){ sound = new AudioClip(this.getClass().getResource("/visualiser/sounds/buttonpress.wav").toExternalForm()); sound.play(); + refreshTable(); + } + + private void refreshTable() { + allConnections.clear(); + addCustomGames(); addServerGames(); - for(RaceConnection connection: connections) { + for(RaceConnection connection: allConnections) { connection.check(); } try { @@ -144,9 +158,9 @@ public class LobbyController extends Controller { try { int port = Integer.parseInt(portString); customConnections.add(new RaceConnection(hostName, port, "Boat Game")); - connections.addAll(customConnections); addressFld.clear(); portFld.clear(); + refreshTable(); } catch (NumberFormatException e) { System.err.println("Port number entered is not a number"); } @@ -173,17 +187,14 @@ public class LobbyController extends Controller { * Adds the games received from the server */ private void addServerGames() { - httpMatchBrowserClient.connections.addAll(customConnections); - httpMatchBrowserClient.connections.addListener(new ListChangeListener() { - @Override - public void onChanged(Change c) { - refreshBtnPressed(); - } - }); - + allConnections.addAll(httpMatchBrowserClient.connections); /* for (HostGame game : matchBrowserLobbyInterface.getGames()) { connections.add(new RaceConnection(game.getIp(), 4942, "Boat Game")); }*/ } + + private void addCustomGames() { + allConnections.addAll(customConnections); + } }