From 3f04485b78cc2ad131ad53c6ec13018424c00feb Mon Sep 17 00:00:00 2001 From: Joseph Date: Tue, 26 Sep 2017 13:16:09 +1300 Subject: [PATCH] Added manual connections works while also receiving available games from the server. #story[1352] --- .../Controllers/LobbyController.java | 35 ++++++++++++------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java b/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java index dae4c850..5953bf92 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java @@ -40,6 +40,7 @@ public class LobbyController extends Controller { private @FXML TextField addressFld; private @FXML TextField portFld; + private ObservableList allConnections; private ObservableList customConnections; private AudioClip sound; @@ -50,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()); @@ -81,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: httpMatchBrowserClient.connections) { + for(RaceConnection connection: allConnections) { connection.check(); } try { @@ -145,7 +160,7 @@ public class LobbyController extends Controller { customConnections.add(new RaceConnection(hostName, port, "Boat Game")); addressFld.clear(); portFld.clear(); - refreshBtnPressed(); + refreshTable(); } catch (NumberFormatException e) { System.err.println("Port number entered is not a number"); } @@ -172,18 +187,14 @@ public class LobbyController extends Controller { * Adds the games received from the server */ private void addServerGames() { - httpMatchBrowserClient.connections.addAll(customConnections); - customConnections.clear(); - 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); + } }