From 00780e17e91dff643c7b62517097936b76fdb768 Mon Sep 17 00:00:00 2001 From: hba56 Date: Wed, 13 Sep 2017 15:17:37 +1200 Subject: [PATCH] Merge remote-tracking branch 'remotes/origin/temp77' into story77 # Conflicts: # racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java # racevisionGame/src/main/resources/visualiser/scenes/gameLobby.fxml # racevisionGame/src/main/resources/visualiser/scenes/hostgame.fxml --- .../Controllers/HostGameController.java | 23 ++++++++++++ .../Controllers/LobbyController.java | 9 +++-- .../Controllers/TitleController.java | 2 ++ .../src/main/java/visualiser/app/App.java | 1 + .../visualiser/app/MatchBrowserSingleton.java | 36 +++++++++++++++++-- .../network/MatchBrowserInterface.java | 2 +- 6 files changed, 66 insertions(+), 7 deletions(-) diff --git a/racevisionGame/src/main/java/visualiser/Controllers/HostGameController.java b/racevisionGame/src/main/java/visualiser/Controllers/HostGameController.java index 174ec7da..ba64ffe8 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/HostGameController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/HostGameController.java @@ -9,7 +9,11 @@ import javafx.scene.image.ImageView; import mock.app.Event; import mock.exceptions.EventConstructionException; import visualiser.app.App; +import visualiser.app.MatchBrowserSingleton; +import visualiser.network.MatchBrowserInterface; + import java.io.IOException; +import java.net.DatagramSocket; import java.net.Socket; import java.util.ArrayList; import java.util.Arrays; @@ -24,11 +28,17 @@ public class HostGameController extends Controller { private @FXML ImageView mapImage; private ArrayList listOfMaps; private int currentMapIndex = 0; + private DatagramSocket udpSocket; + private MatchBrowserInterface matchBrowserInterface; public void initialize() { loadMaps(); + this.udpSocket = MatchBrowserSingleton.getInstance().getUdpSocket(); + this.matchBrowserInterface = MatchBrowserSingleton.getInstance().getMatchBrowserInterface(); } + + /** * Loads in the list of playable maps to be selected from. */ @@ -55,6 +65,8 @@ public class HostGameController extends Controller { App.game = new Event(false, currentMapIndex); App.gameType = currentMapIndex; connectSocket("localhost", 4942); + alertMatchBrowser(); + } catch (EventConstructionException e) { Logger.getGlobal().log(Level.SEVERE, "Could not create Event.", e); throw new RuntimeException(e); @@ -63,6 +75,17 @@ public class HostGameController extends Controller { } } + /** + * Sends info to the match browser so clients can see it + */ + public void alertMatchBrowser(){ + try{ + matchBrowserInterface.startSendingHostData(App.game.getHostedGameData(), udpSocket); + }catch (IOException e){ + System.err.println("failed to send out hosted game info"); + } + } + /** * Connect to a socket * @param address address of the server diff --git a/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java b/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java index 619b43a8..f36e681f 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java @@ -9,6 +9,7 @@ import javafx.scene.control.TableView; import javafx.scene.control.TextField; import javafx.scene.layout.AnchorPane; import network.Messages.HostGame; +import visualiser.app.MatchBrowserSingleton; import visualiser.model.RaceConnection; import visualiser.network.MatchBrowserClientRunnable; import visualiser.network.MatchBrowserInterface; @@ -40,9 +41,9 @@ public class LobbyController extends Controller { //the socket for match browser private DatagramSocket udpSocket; - private MatchBrowserLobbyInterface matchBrowserLobbyInterface; + public void initialize() { // set up the connection table connections = FXCollections.observableArrayList(); @@ -62,6 +63,9 @@ public class LobbyController extends Controller { } }); joinGameBtn.setDisable(true); + + this.udpSocket = MatchBrowserSingleton.getInstance().getUdpSocket(); + receiveMatchData(); } /** @@ -113,8 +117,7 @@ public class LobbyController extends Controller { } } - public void setupSocket(DatagramSocket udpSocket){ - this.udpSocket = udpSocket; + public void receiveMatchData(){ matchBrowserLobbyInterface = new MatchBrowserLobbyInterface(); try { matchBrowserLobbyInterface.startReceivingHostData(new DatagramSocket(4941)); diff --git a/racevisionGame/src/main/java/visualiser/Controllers/TitleController.java b/racevisionGame/src/main/java/visualiser/Controllers/TitleController.java index 43d22e5e..9fdd47d5 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/TitleController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/TitleController.java @@ -11,6 +11,8 @@ import mock.exceptions.EventConstructionException; import visualiser.app.App; import java.io.IOException; +import java.net.DatagramSocket; +import java.net.Socket; /** * Controller for the opening title window. diff --git a/racevisionGame/src/main/java/visualiser/app/App.java b/racevisionGame/src/main/java/visualiser/app/App.java index 2e3287ae..6d9b1970 100644 --- a/racevisionGame/src/main/java/visualiser/app/App.java +++ b/racevisionGame/src/main/java/visualiser/app/App.java @@ -26,6 +26,7 @@ import javafx.stage.StageStyle; import javafx.util.Duration; import mock.app.Event; + public class App extends Application { private static Stage stage; public static Event game; diff --git a/racevisionGame/src/main/java/visualiser/app/MatchBrowserSingleton.java b/racevisionGame/src/main/java/visualiser/app/MatchBrowserSingleton.java index 039f058d..629e2744 100644 --- a/racevisionGame/src/main/java/visualiser/app/MatchBrowserSingleton.java +++ b/racevisionGame/src/main/java/visualiser/app/MatchBrowserSingleton.java @@ -1,7 +1,37 @@ package visualiser.app; -/** - * Created by hba56 on 13/09/17. - */ +import visualiser.network.MatchBrowserInterface; + +import java.io.IOException; +import java.net.DatagramSocket; + public class MatchBrowserSingleton { + private DatagramSocket udpSocket; + private MatchBrowserInterface matchBrowserInterface; + + private static MatchBrowserSingleton instance = null; + + public MatchBrowserSingleton() { + this.matchBrowserInterface = new MatchBrowserInterface(); + try{ + this.udpSocket = matchBrowserInterface.setupMatchBrowserConnection(); + }catch (IOException e){ + System.err.println("Error in setting up connection with match browser"); + } + } + + public static MatchBrowserSingleton getInstance() { + if (instance == null){ + instance = new MatchBrowserSingleton(); + } + return instance; + } + + public DatagramSocket getUdpSocket() { + return udpSocket; + } + + public MatchBrowserInterface getMatchBrowserInterface() { + return matchBrowserInterface; + } } diff --git a/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java b/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java index e6777c87..213616bf 100644 --- a/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java +++ b/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java @@ -29,7 +29,7 @@ public class MatchBrowserInterface { public MatchBrowserInterface() { //TODO change to ip of cloud server hosting this try { - this.IPAddress = InetAddress.getByName("132.181.13.223"); + this.IPAddress = InetAddress.getLocalHost();//InetAddress.getByName("132.181.13.223"); } catch (UnknownHostException e) { e.printStackTrace(); }