From f541a13235f10d63c19db6f76ef1509c67144463 Mon Sep 17 00:00:00 2001 From: Fan-Wu Yang Date: Thu, 14 Sep 2017 15:54:48 +1200 Subject: [PATCH 1/8] Tried to get lobby working #story[1188] --- .../src/main/java/networkInterface/NetworkInterface.java | 2 ++ .../java/visualiser/network/MatchBrowserClientRunnable.java | 1 + .../src/main/java/visualiser/network/MatchBrowserInterface.java | 2 +- .../java/visualiser/network/MatchBrowserLobbyInterface.java | 1 + 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/matchBrowser/src/main/java/networkInterface/NetworkInterface.java b/matchBrowser/src/main/java/networkInterface/NetworkInterface.java index ce211f68..84849c77 100644 --- a/matchBrowser/src/main/java/networkInterface/NetworkInterface.java +++ b/matchBrowser/src/main/java/networkInterface/NetworkInterface.java @@ -67,6 +67,7 @@ public class NetworkInterface { HostedGamesRequestEncoder encoder = new HostedGamesRequestEncoder(); try { byte[] message = encoder.encode(new HostGamesRequest(games)); + System.out.println(LocalDateTime.now() + ": Sending " + games.size() + " game/s"); for(ClientAddress address: clientsAddresses) { serverSocket.send(new DatagramPacket(message, message.length, InetAddress.getByName(address.getIp()), 4941)); } @@ -85,6 +86,7 @@ public class NetworkInterface { scheduler.scheduleAtFixedRate(new TimerTask() { @Override public void run() { + System.out.println("flush"); matchTable.getMatchTable().clear(); } }, period, period); diff --git a/racevisionGame/src/main/java/visualiser/network/MatchBrowserClientRunnable.java b/racevisionGame/src/main/java/visualiser/network/MatchBrowserClientRunnable.java index 61faf7e3..27c1b27e 100644 --- a/racevisionGame/src/main/java/visualiser/network/MatchBrowserClientRunnable.java +++ b/racevisionGame/src/main/java/visualiser/network/MatchBrowserClientRunnable.java @@ -20,6 +20,7 @@ public class MatchBrowserClientRunnable implements RunnableWithFramePeriod { long previousFrameTime = System.currentTimeMillis(); while (!Thread.interrupted()) { + System.out.println("Receiving"); try{ matchBrowserLobbyInterface.receiveGameInfo(socket); }catch (IOException e){ diff --git a/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java b/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java index 6586042b..17f5c497 100644 --- a/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java +++ b/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java @@ -26,7 +26,7 @@ public class MatchBrowserInterface { public MatchBrowserInterface() { try {//132.181.16.13 is the ip of the CI as of 13/9/17 - this.IPAddress = InetAddress.getByName("132.181.16.13"); //InetAddress.getLocalHost(); + this.IPAddress = InetAddress.getByName("umbrasheep.com"); //InetAddress.getLocalHost(); } catch (UnknownHostException e) { e.printStackTrace(); } diff --git a/racevisionGame/src/main/java/visualiser/network/MatchBrowserLobbyInterface.java b/racevisionGame/src/main/java/visualiser/network/MatchBrowserLobbyInterface.java index 7bbad9c9..ec030b61 100644 --- a/racevisionGame/src/main/java/visualiser/network/MatchBrowserLobbyInterface.java +++ b/racevisionGame/src/main/java/visualiser/network/MatchBrowserLobbyInterface.java @@ -45,6 +45,7 @@ public class MatchBrowserLobbyInterface extends Observable { byte[] data = new byte[64]; DatagramPacket receivedPacket = new DatagramPacket(data, 64); socket.receive(receivedPacket); + System.out.println(receivedPacket); HostedGamesRequestDecoder hostedGamesRequestDecoder = new HostedGamesRequestDecoder(); try { From 5c58ca11ff9df2f8bf484cd24f702bf3958c64d6 Mon Sep 17 00:00:00 2001 From: fjc40 Date: Fri, 15 Sep 2017 00:59:43 +1200 Subject: [PATCH 2/8] Boats use their assigned color. Boat name is displayed in lobby instead of source ID. --- .../java/visualiser/Controllers/InGameLobbyController.java | 5 ++++- .../main/java/visualiser/Controllers/RaceViewController.java | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java b/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java index e935847f..733d20e0 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java @@ -15,6 +15,7 @@ import javafx.scene.control.Label; import javafx.scene.image.ImageView; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.GridPane; +import javafx.scene.paint.PhongMaterial; import javafx.scene.shape.MeshView; import mock.app.Event; import network.Messages.Enums.RaceStatusEnum; @@ -144,6 +145,8 @@ public class InGameLobbyController extends Controller { subjects.add(sea); MeshView mesh = new MeshView(importer.getImport()); + PhongMaterial boatColorMat = new PhongMaterial(boat.getColor()); + mesh.setMaterial(boatColorMat); Subject3D subject = new Subject3D(mesh,0); subjects.add(subject); @@ -161,7 +164,7 @@ public class InGameLobbyController extends Controller { }; rotate.start(); - allPlayerLabels.get(count).setText("Player: " + boat.getSourceID()); + allPlayerLabels.get(count).setText(boat.getName()); allPlayerLabels.get(count).toFront(); count += 1; if (count > 2){ diff --git a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java index 70d51acb..c2153c1f 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java @@ -305,6 +305,8 @@ public class RaceViewController extends Controller { } else { mesh = new MeshView(importerBurgerBoat.getImport()); } + PhongMaterial boatColorMat = new PhongMaterial(boat.getColor()); + mesh.setMaterial(boatColorMat); Subject3D boatModel = new Subject3D(mesh, boat.getSourceID()); viewSubjects.add(boatModel); From 191f249bfb8fce11540e8669cc40bbbb05ab99f4 Mon Sep 17 00:00:00 2001 From: fjc40 Date: Fri, 15 Sep 2017 01:00:26 +1200 Subject: [PATCH 3/8] Speed scale is 2, rather than 10. Server simulates frames every 16ms rather than 50ms. --- racevisionGame/src/main/java/mock/model/RaceLogic.java | 6 +++--- racevisionGame/src/main/java/shared/model/Constants.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/racevisionGame/src/main/java/mock/model/RaceLogic.java b/racevisionGame/src/main/java/mock/model/RaceLogic.java index 97c4ea0b..0110716e 100644 --- a/racevisionGame/src/main/java/mock/model/RaceLogic.java +++ b/racevisionGame/src/main/java/mock/model/RaceLogic.java @@ -91,7 +91,7 @@ public class RaceLogic implements RunnableWithFramePeriod, Observer { server.parseSnapshot(); - waitForFramePeriod(previousFrameTime, currentTime, 50); + waitForFramePeriod(previousFrameTime, currentTime, 16); previousFrameTime = currentTime; } } @@ -128,7 +128,7 @@ public class RaceLogic implements RunnableWithFramePeriod, Observer { race.setBoatsStatusToRacing(); } - waitForFramePeriod(previousFrameTime, currentTime, 50); + waitForFramePeriod(previousFrameTime, currentTime, 16); previousFrameTime = currentTime; } @@ -206,7 +206,7 @@ public class RaceLogic implements RunnableWithFramePeriod, Observer { previousFrameTime = currentTime; } - waitForFramePeriod(previousFrameTime, currentTime, 50); + waitForFramePeriod(previousFrameTime, currentTime, 16); previousFrameTime = currentTime; } } diff --git a/racevisionGame/src/main/java/shared/model/Constants.java b/racevisionGame/src/main/java/shared/model/Constants.java index c482bafd..6d1c35a8 100644 --- a/racevisionGame/src/main/java/shared/model/Constants.java +++ b/racevisionGame/src/main/java/shared/model/Constants.java @@ -28,7 +28,7 @@ public class Constants { * Frame periods are multiplied by this to get the amount of time a single frame represents. * E.g., frame period = 20ms, scale = 5, frame represents 20 * 5 = 100ms, and so boats are simulated for 100ms, even though only 20ms actually occurred. */ - public static final int RaceTimeScale = 10; + public static final int RaceTimeScale = 2; /** * The race pre-start time, in milliseconds. 30 seconds. From 2c92102b2acb7e432c56e3275e6cfa16a3f37541 Mon Sep 17 00:00:00 2001 From: fjc40 Date: Fri, 15 Sep 2017 01:34:32 +1200 Subject: [PATCH 4/8] Changed GraphCoordinate to use double instead of int. This results in waaaaay smoother movement. Boats no longer jump around. --- .../main/java/visualiser/model/GraphCoordinate.java | 10 +++++----- .../java/visualiser/model/ResizableRaceCanvas.java | 4 ++-- .../src/main/java/visualiser/utils/GPSConverter.java | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/racevisionGame/src/main/java/visualiser/model/GraphCoordinate.java b/racevisionGame/src/main/java/visualiser/model/GraphCoordinate.java index a6a2132b..c7c18817 100644 --- a/racevisionGame/src/main/java/visualiser/model/GraphCoordinate.java +++ b/racevisionGame/src/main/java/visualiser/model/GraphCoordinate.java @@ -9,12 +9,12 @@ public class GraphCoordinate { /** * X (horizontal) coordinate. */ - private final int x; + private final double x; /** * Y (vertical) coordinate. */ - private final int y; + private final double y; /** * Constructor method. @@ -22,7 +22,7 @@ public class GraphCoordinate { * @param x X coordinate. * @param y Y coordinate. */ - public GraphCoordinate(int x, int y) { + public GraphCoordinate(double x, double y) { this.x = x; this.y = y; } @@ -33,7 +33,7 @@ public class GraphCoordinate { * * @return x axis Coordinate. */ - public int getX() { + public double getX() { return x; } @@ -42,7 +42,7 @@ public class GraphCoordinate { * * @return y axis Coordinate. */ - public int getY() { + public double getY() { return y; } diff --git a/racevisionGame/src/main/java/visualiser/model/ResizableRaceCanvas.java b/racevisionGame/src/main/java/visualiser/model/ResizableRaceCanvas.java index cc485445..4fc39b30 100644 --- a/racevisionGame/src/main/java/visualiser/model/ResizableRaceCanvas.java +++ b/racevisionGame/src/main/java/visualiser/model/ResizableRaceCanvas.java @@ -239,8 +239,8 @@ public class ResizableRaceCanvas extends ResizableCanvas { //Offset by 20 pixels horizontally. - long xCoord = coordinate.getX() + 20; - long yCoord = coordinate.getY(); + double xCoord = coordinate.getX() + 20; + double yCoord = coordinate.getY(); //If the text would extend out of the canvas (to the right), move it left. if (xCoord + (text.length() * 7) >= getWidth()) { diff --git a/racevisionGame/src/main/java/visualiser/utils/GPSConverter.java b/racevisionGame/src/main/java/visualiser/utils/GPSConverter.java index 542b043f..55db4f34 100644 --- a/racevisionGame/src/main/java/visualiser/utils/GPSConverter.java +++ b/racevisionGame/src/main/java/visualiser/utils/GPSConverter.java @@ -67,8 +67,8 @@ public class GPSConverter { //Calculate the x and y pixel coordinates. //We take the complement of latProportion to flip it. - int x = (int) (longProportion * smallerDimension); - int y = (int) (latProportion * smallerDimension); + double x = (longProportion * smallerDimension); + double y = (latProportion * smallerDimension); //Because we try to maintain the correct aspect ratio, we will end up with "spare" pixels along the larger dimension (e.g., width 800, height 600, 200 extra pixels along width). double extraDistance = Math.abs(longitudeFactor - latitudeFactor); From 22e9db473e7321922300a82723f71fcce522d92f Mon Sep 17 00:00:00 2001 From: Fan-Wu Yang Date: Fri, 15 Sep 2017 02:28:09 +1200 Subject: [PATCH 5/8] Removed test that took a manditory socket --- .../src/main/java/networkInterface/NetworkInterface.java | 1 + .../java/visualiser/network/MatchBrowserLobbyInterface.java | 2 ++ 2 files changed, 3 insertions(+) diff --git a/matchBrowser/src/main/java/networkInterface/NetworkInterface.java b/matchBrowser/src/main/java/networkInterface/NetworkInterface.java index 84849c77..46276b66 100644 --- a/matchBrowser/src/main/java/networkInterface/NetworkInterface.java +++ b/matchBrowser/src/main/java/networkInterface/NetworkInterface.java @@ -69,6 +69,7 @@ public class NetworkInterface { byte[] message = encoder.encode(new HostGamesRequest(games)); System.out.println(LocalDateTime.now() + ": Sending " + games.size() + " game/s"); for(ClientAddress address: clientsAddresses) { + System.out.println("Sending to " + address.getIp()); serverSocket.send(new DatagramPacket(message, message.length, InetAddress.getByName(address.getIp()), 4941)); } } catch (InvalidMessageException | IOException e) { diff --git a/racevisionGame/src/main/java/visualiser/network/MatchBrowserLobbyInterface.java b/racevisionGame/src/main/java/visualiser/network/MatchBrowserLobbyInterface.java index ec030b61..ba6b5776 100644 --- a/racevisionGame/src/main/java/visualiser/network/MatchBrowserLobbyInterface.java +++ b/racevisionGame/src/main/java/visualiser/network/MatchBrowserLobbyInterface.java @@ -44,6 +44,8 @@ public class MatchBrowserLobbyInterface extends Observable { protected void receiveGameInfo(DatagramSocket socket) throws IOException { byte[] data = new byte[64]; DatagramPacket receivedPacket = new DatagramPacket(data, 64); + System.out.println("waiting"); + System.out.println(socket.getInetAddress()); socket.receive(receivedPacket); System.out.println(receivedPacket); From 34a803f92ea9dcc7dcc4c796583f121ac6210bfd Mon Sep 17 00:00:00 2001 From: Fan-Wu Yang Date: Fri, 15 Sep 2017 02:39:47 +1200 Subject: [PATCH 6/8] More changes --- .../src/main/java/visualiser/network/MatchBrowserInterface.java | 1 + .../main/java/visualiser/network/MatchBrowserLobbyInterface.java | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java b/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java index 17f5c497..d54c6564 100644 --- a/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java +++ b/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java @@ -27,6 +27,7 @@ public class MatchBrowserInterface { public MatchBrowserInterface() { try {//132.181.16.13 is the ip of the CI as of 13/9/17 this.IPAddress = InetAddress.getByName("umbrasheep.com"); //InetAddress.getLocalHost(); + this.IPAddress = InetAddress.getByName("191.101.233.116"); //InetAddress.getLocalHost(); } catch (UnknownHostException e) { e.printStackTrace(); } diff --git a/racevisionGame/src/main/java/visualiser/network/MatchBrowserLobbyInterface.java b/racevisionGame/src/main/java/visualiser/network/MatchBrowserLobbyInterface.java index ba6b5776..363b3a26 100644 --- a/racevisionGame/src/main/java/visualiser/network/MatchBrowserLobbyInterface.java +++ b/racevisionGame/src/main/java/visualiser/network/MatchBrowserLobbyInterface.java @@ -45,7 +45,6 @@ public class MatchBrowserLobbyInterface extends Observable { byte[] data = new byte[64]; DatagramPacket receivedPacket = new DatagramPacket(data, 64); System.out.println("waiting"); - System.out.println(socket.getInetAddress()); socket.receive(receivedPacket); System.out.println(receivedPacket); From 0348b0c642bef12c3e5397af54b89693781eb8c6 Mon Sep 17 00:00:00 2001 From: Fan-Wu Yang Date: Fri, 15 Sep 2017 02:50:06 +1200 Subject: [PATCH 7/8] Merged in master --- .../java/visualiser/network/MatchBrowserClientRunnable.java | 1 - .../java/visualiser/network/MatchBrowserLobbyInterface.java | 2 -- 2 files changed, 3 deletions(-) diff --git a/racevisionGame/src/main/java/visualiser/network/MatchBrowserClientRunnable.java b/racevisionGame/src/main/java/visualiser/network/MatchBrowserClientRunnable.java index 27c1b27e..61faf7e3 100644 --- a/racevisionGame/src/main/java/visualiser/network/MatchBrowserClientRunnable.java +++ b/racevisionGame/src/main/java/visualiser/network/MatchBrowserClientRunnable.java @@ -20,7 +20,6 @@ public class MatchBrowserClientRunnable implements RunnableWithFramePeriod { long previousFrameTime = System.currentTimeMillis(); while (!Thread.interrupted()) { - System.out.println("Receiving"); try{ matchBrowserLobbyInterface.receiveGameInfo(socket); }catch (IOException e){ diff --git a/racevisionGame/src/main/java/visualiser/network/MatchBrowserLobbyInterface.java b/racevisionGame/src/main/java/visualiser/network/MatchBrowserLobbyInterface.java index 363b3a26..7bbad9c9 100644 --- a/racevisionGame/src/main/java/visualiser/network/MatchBrowserLobbyInterface.java +++ b/racevisionGame/src/main/java/visualiser/network/MatchBrowserLobbyInterface.java @@ -44,9 +44,7 @@ public class MatchBrowserLobbyInterface extends Observable { protected void receiveGameInfo(DatagramSocket socket) throws IOException { byte[] data = new byte[64]; DatagramPacket receivedPacket = new DatagramPacket(data, 64); - System.out.println("waiting"); socket.receive(receivedPacket); - System.out.println(receivedPacket); HostedGamesRequestDecoder hostedGamesRequestDecoder = new HostedGamesRequestDecoder(); try { From 9d1145b298af7bf8be6cdf8a6fb755357c463f77 Mon Sep 17 00:00:00 2001 From: Fan-Wu Yang Date: Mon, 18 Sep 2017 02:03:25 +1200 Subject: [PATCH 8/8] Changed back to CI IP to test on CI --- .../main/java/visualiser/network/MatchBrowserInterface.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java b/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java index d54c6564..02440612 100644 --- a/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java +++ b/racevisionGame/src/main/java/visualiser/network/MatchBrowserInterface.java @@ -26,8 +26,8 @@ public class MatchBrowserInterface { public MatchBrowserInterface() { try {//132.181.16.13 is the ip of the CI as of 13/9/17 - this.IPAddress = InetAddress.getByName("umbrasheep.com"); //InetAddress.getLocalHost(); - this.IPAddress = InetAddress.getByName("191.101.233.116"); //InetAddress.getLocalHost(); + //this.IPAddress = InetAddress.getByName("umbrasheep.com"); //InetAddress.getLocalHost(); + this.IPAddress = InetAddress.getByName("132.181.16.13"); //InetAddress.getLocalHost(); } catch (UnknownHostException e) { e.printStackTrace(); }