From 391bd33548b2f6860060f47f901ebfada84b366f Mon Sep 17 00:00:00 2001 From: Calum Date: Thu, 14 Sep 2017 12:38:36 +1200 Subject: [PATCH 1/7] Fixed position issues on first 2 mark arrows. #implement #story[1266] --- .../fxObjects/MarkArrowFactory.java | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/src/main/java/seng302/visualiser/fxObjects/MarkArrowFactory.java b/src/main/java/seng302/visualiser/fxObjects/MarkArrowFactory.java index 080ff58a..a9d1ca38 100644 --- a/src/main/java/seng302/visualiser/fxObjects/MarkArrowFactory.java +++ b/src/main/java/seng302/visualiser/fxObjects/MarkArrowFactory.java @@ -6,7 +6,6 @@ import javafx.scene.paint.Color; import javafx.scene.paint.Paint; import javafx.scene.shape.Arc; import javafx.scene.shape.ArcType; -import javafx.scene.shape.Circle; import javafx.scene.shape.Polygon; import javafx.scene.shape.Polyline; import javafx.scene.shape.StrokeLineCap; @@ -39,33 +38,31 @@ public class MarkArrowFactory { public static Model constructEntryArrow3D ( RoundingSide roundingSide, double angle, ModelType type) { Model entryArrow = ModelFactory.importModel(type); + angle = Math.toRadians(angle); int multiplier = roundingSide == RoundingSide.STARBOARD ? 1 : -1; - double relativeX = multiplier * 5 * Math.sin(angle + Math.PI / 2); - double relativeY = multiplier * 5 * Math.cos(angle + Math.PI / 2); - double xStart = relativeX + multiplier * 20 * Math.sin(angle + Math.PI / 2); - double yStart = relativeY + multiplier * 20 * Math.cos(angle + Math.PI / 2); + double relativeX = multiplier * 10 * Math.sin(angle + Math.PI / 8); + double relativeY = multiplier * 10 * Math.cos(angle + Math.PI / 8); + double xStart = relativeX + multiplier * 10 * Math.sin(angle - Math.PI / 2); + double yStart = relativeY + multiplier * 10 * Math.cos(angle - Math.PI / 2); entryArrow.getAssets().getTransforms().addAll( new Translate(xStart, yStart, 0), new Rotate(Math.toDegrees(angle), new Point3D(0,0,1)) ); - return entryArrow; + return entryArrow; } public static Model constructExitArrow3D ( RoundingSide roundingSide, double angle, ModelType type) { Model exitArrow = ModelFactory.importModel(type); -// angle = Math.toRadians(angle-65); angle = Math.toRadians(angle); int multiplier = roundingSide == RoundingSide.STARBOARD ? 1 : -1; - double xStart = multiplier * 6 * Math.sin(angle + Math.PI / 2); - double yStart = multiplier * 6 * Math.cos(angle + Math.PI / 2); -// exitArrow.getAssets().getTransforms().addAll( -// new Translate(xStart, yStart, 0), -// new Rotate(Math.toDegrees(Math.toDegrees(angle)), new Point3D(0,0,1)) -// ); - Circle c = new Circle(xStart, yStart, 1, Color.RED); - c.setStroke(Color.TRANSPARENT); - return new Model(new Group(c), null); + double xStart = multiplier * 6 * Math.sin(angle + Math.PI / 8); + double yStart = multiplier * 6 * Math.cos(angle + Math.PI / 8); + exitArrow.getAssets().getTransforms().addAll( + new Translate(xStart, yStart, 0), + new Rotate(Math.toDegrees(angle), new Point3D(0,0,1)) + ); + return exitArrow; } From 62a7e2b8fa485bf93f2ba26474c5ecfa9dc0c3be Mon Sep 17 00:00:00 2001 From: Calum Date: Thu, 14 Sep 2017 14:21:04 +1200 Subject: [PATCH 2/7] Fixed position issues on entry arrows. #implement #story[1266] #fix --- .../java/seng302/visualiser/GameView3D.java | 2 +- .../controllers/RaceViewController.java | 1 + .../fxObjects/MarkArrowFactory.java | 36 +++++++++---- src/main/resources/views/RaceView.fxml | 52 +++++++------------ 4 files changed, 46 insertions(+), 45 deletions(-) diff --git a/src/main/java/seng302/visualiser/GameView3D.java b/src/main/java/seng302/visualiser/GameView3D.java index 27b131f7..119c2c98 100644 --- a/src/main/java/seng302/visualiser/GameView3D.java +++ b/src/main/java/seng302/visualiser/GameView3D.java @@ -590,7 +590,7 @@ public class GameView3D { new Scale(1, lastLocation.distance(location) / 5, 1) ); trail.getChildren().add(segment); - if (trail.getChildren().size() > 100) { + if (trail.getChildren().size() > 50) { trail.getChildren().remove(0); } lastLocation = location; diff --git a/src/main/java/seng302/visualiser/controllers/RaceViewController.java b/src/main/java/seng302/visualiser/controllers/RaceViewController.java index 7b855f9e..3fa1985f 100644 --- a/src/main/java/seng302/visualiser/controllers/RaceViewController.java +++ b/src/main/java/seng302/visualiser/controllers/RaceViewController.java @@ -86,6 +86,7 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel private Label timerLabel; @FXML private StackPane contentAnchorPane; + private GridPane contentGridPane; @FXML private AnchorPane rvAnchorPane; diff --git a/src/main/java/seng302/visualiser/fxObjects/MarkArrowFactory.java b/src/main/java/seng302/visualiser/fxObjects/MarkArrowFactory.java index a9d1ca38..5b348293 100644 --- a/src/main/java/seng302/visualiser/fxObjects/MarkArrowFactory.java +++ b/src/main/java/seng302/visualiser/fxObjects/MarkArrowFactory.java @@ -6,6 +6,7 @@ import javafx.scene.paint.Color; import javafx.scene.paint.Paint; import javafx.scene.shape.Arc; import javafx.scene.shape.ArcType; +import javafx.scene.shape.Circle; import javafx.scene.shape.Polygon; import javafx.scene.shape.Polyline; import javafx.scene.shape.StrokeLineCap; @@ -38,31 +39,46 @@ public class MarkArrowFactory { public static Model constructEntryArrow3D ( RoundingSide roundingSide, double angle, ModelType type) { Model entryArrow = ModelFactory.importModel(type); + + double angleDeg = angle; + angle = 180 - angle; angle = Math.toRadians(angle); + int multiplier = roundingSide == RoundingSide.STARBOARD ? 1 : -1; - double relativeX = multiplier * 10 * Math.sin(angle + Math.PI / 8); - double relativeY = multiplier * 10 * Math.cos(angle + Math.PI / 8); - double xStart = relativeX + multiplier * 10 * Math.sin(angle - Math.PI / 2); - double yStart = relativeY + multiplier * 10 * Math.cos(angle - Math.PI / 2); + double relativeX = multiplier * 5.7 * Math.sin(angle + Math.PI / 2); + double relativeY = multiplier * 5.7 * Math.cos(angle + Math.PI / 2); + double xStart = relativeX + multiplier * 8 * Math.sin(angle + Math.PI); + double yStart = relativeY + multiplier * 8 * Math.cos(angle + Math.PI); entryArrow.getAssets().getTransforms().addAll( new Translate(xStart, yStart, 0), - new Rotate(Math.toDegrees(angle), new Point3D(0,0,1)) + new Rotate(angleDeg, new Point3D(0,0,1)) ); - return entryArrow; + Circle c = new Circle(relativeX, relativeY, 1, Color.RED); + Circle v = new Circle(xStart, yStart, 1, Color.BLUE); + return new Model(new Group(c, v, entryArrow.getAssets()), null); } public static Model constructExitArrow3D ( RoundingSide roundingSide, double angle, ModelType type) { Model exitArrow = ModelFactory.importModel(type); + + double angleDeg = angle; + angle = 180 - angle; angle = Math.toRadians(angle); + int multiplier = roundingSide == RoundingSide.STARBOARD ? 1 : -1; - double xStart = multiplier * 6 * Math.sin(angle + Math.PI / 8); - double yStart = multiplier * 6 * Math.cos(angle + Math.PI / 8); + double xStart = multiplier * 5.7 * Math.sin(angle + Math.PI / 2); + double yStart = multiplier * 5.7 * Math.cos(angle + Math.PI / 2); + exitArrow.getAssets().getTransforms().addAll( new Translate(xStart, yStart, 0), - new Rotate(Math.toDegrees(angle), new Point3D(0,0,1)) + new Rotate(angleDeg, new Point3D(0,0,1)) ); - return exitArrow; + Circle c = new Circle(xStart, yStart, 1, Color.RED); + if (roundingSide == RoundingSide.PORT) { + c = new Circle(xStart, yStart, 1, Color.GREENYELLOW); + } + return new Model(new Group(c, exitArrow.getAssets()), null); } diff --git a/src/main/resources/views/RaceView.fxml b/src/main/resources/views/RaceView.fxml index 4a8f64e2..b1a80398 100644 --- a/src/main/resources/views/RaceView.fxml +++ b/src/main/resources/views/RaceView.fxml @@ -14,11 +14,8 @@ - + + @@ -32,15 +29,13 @@ - + - + @@ -81,17 +76,14 @@ - + - + - + @@ -101,45 +93,37 @@ - - + + - + - + - + - + - + - + - + - + - + From eb188495ce6fb0a7d5b86431ec8e754dc600353c Mon Sep 17 00:00:00 2001 From: Calum Date: Thu, 14 Sep 2017 14:32:45 +1200 Subject: [PATCH 3/7] Fixed position issues on exit arrows. #implement #story[1266] #fix --- .../visualiser/fxObjects/MarkArrowFactory.java | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/main/java/seng302/visualiser/fxObjects/MarkArrowFactory.java b/src/main/java/seng302/visualiser/fxObjects/MarkArrowFactory.java index 5b348293..ccc307eb 100644 --- a/src/main/java/seng302/visualiser/fxObjects/MarkArrowFactory.java +++ b/src/main/java/seng302/visualiser/fxObjects/MarkArrowFactory.java @@ -6,7 +6,6 @@ import javafx.scene.paint.Color; import javafx.scene.paint.Paint; import javafx.scene.shape.Arc; import javafx.scene.shape.ArcType; -import javafx.scene.shape.Circle; import javafx.scene.shape.Polygon; import javafx.scene.shape.Polyline; import javafx.scene.shape.StrokeLineCap; @@ -47,15 +46,13 @@ public class MarkArrowFactory { int multiplier = roundingSide == RoundingSide.STARBOARD ? 1 : -1; double relativeX = multiplier * 5.7 * Math.sin(angle + Math.PI / 2); double relativeY = multiplier * 5.7 * Math.cos(angle + Math.PI / 2); - double xStart = relativeX + multiplier * 8 * Math.sin(angle + Math.PI); - double yStart = relativeY + multiplier * 8 * Math.cos(angle + Math.PI); + double xStart = relativeX + -10 * Math.sin(angle); + double yStart = relativeY + -10 * Math.cos(angle); entryArrow.getAssets().getTransforms().addAll( new Translate(xStart, yStart, 0), new Rotate(angleDeg, new Point3D(0,0,1)) ); - Circle c = new Circle(relativeX, relativeY, 1, Color.RED); - Circle v = new Circle(xStart, yStart, 1, Color.BLUE); - return new Model(new Group(c, v, entryArrow.getAssets()), null); + return entryArrow; } public static Model constructExitArrow3D ( @@ -74,11 +71,8 @@ public class MarkArrowFactory { new Translate(xStart, yStart, 0), new Rotate(angleDeg, new Point3D(0,0,1)) ); - Circle c = new Circle(xStart, yStart, 1, Color.RED); - if (roundingSide == RoundingSide.PORT) { - c = new Circle(xStart, yStart, 1, Color.GREENYELLOW); - } - return new Model(new Group(c, exitArrow.getAssets()), null); + + return exitArrow; } From e24203904b83c42d7f2ad02807af59b0f375343d Mon Sep 17 00:00:00 2001 From: Calum Date: Thu, 14 Sep 2017 14:37:22 +1200 Subject: [PATCH 4/7] Removed print statements. #chore --- src/main/java/seng302/utilities/StreamParser.java | 8 +++++--- src/main/java/seng302/visualiser/GameView3D.java | 5 ----- .../visualiser/controllers/RaceViewController.java | 3 --- .../seng302/visualiser/controllers/cells/ServerCell.java | 1 - 4 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/main/java/seng302/utilities/StreamParser.java b/src/main/java/seng302/utilities/StreamParser.java index 748337df..5672fdf5 100644 --- a/src/main/java/seng302/utilities/StreamParser.java +++ b/src/main/java/seng302/utilities/StreamParser.java @@ -2,7 +2,6 @@ package seng302.utilities; import java.io.IOException; import java.io.StringReader; -import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -15,8 +14,12 @@ import org.xml.sax.InputSource; import org.xml.sax.SAXException; import seng302.model.stream.packets.PacketType; import seng302.model.stream.packets.StreamPacket; -import seng302.model.stream.parser.*; +import seng302.model.stream.parser.MarkRoundingData; +import seng302.model.stream.parser.PositionUpdateData; import seng302.model.stream.parser.PositionUpdateData.DeviceType; +import seng302.model.stream.parser.RaceStartData; +import seng302.model.stream.parser.RaceStatusData; +import seng302.model.stream.parser.YachtEventData; /** * StreamParser is a utilities class for taking byte data, formatted according to the AC35 streaming @@ -37,7 +40,6 @@ public class StreamParser { return null; } long heartbeat = bytesToLong(packet.getPayload()); - System.out.println("heartbeat = " + heartbeat); return heartbeat; } diff --git a/src/main/java/seng302/visualiser/GameView3D.java b/src/main/java/seng302/visualiser/GameView3D.java index 119c2c98..c5b52286 100644 --- a/src/main/java/seng302/visualiser/GameView3D.java +++ b/src/main/java/seng302/visualiser/GameView3D.java @@ -245,11 +245,6 @@ public class GameView3D { private void createStartLineArrows () { for (Mark mark : course.get(0).getMarks()) { - System.out.println( - "GeoUtility.getBearing(mark, course.get(1).getMidPoint()) = " + GeoUtility - .getBearing(mark, course.get(1).getMidPoint())); - System.out.println("mark = " + mark); - System.out.println("course.get(1) = " + course.get(1)); markerObjects.get(mark).addArrows( mark.getRoundingSide() == RoundingSide.STARBOARD ? MarkArrowFactory.RoundingSide.STARBOARD : MarkArrowFactory.RoundingSide.PORT, 0d, //90 diff --git a/src/main/java/seng302/visualiser/controllers/RaceViewController.java b/src/main/java/seng302/visualiser/controllers/RaceViewController.java index 3fa1985f..2ae0d542 100644 --- a/src/main/java/seng302/visualiser/controllers/RaceViewController.java +++ b/src/main/java/seng302/visualiser/controllers/RaceViewController.java @@ -220,9 +220,6 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel .bind(ViewManager.getInstance().getStage().widthProperty()); ((SubScene) gameView.getAssets()).heightProperty() .bind(ViewManager.getInstance().getStage().heightProperty()); - System.out.println(((SubScene) gameView.getAssets()).getHeight()); - System.out.println(((SubScene) gameView.getAssets()).getWidth()); - }); gameView.setBoats(new ArrayList<>(participants.values())); gameView.updateBorder(raceData.getCourseLimit()); diff --git a/src/main/java/seng302/visualiser/controllers/cells/ServerCell.java b/src/main/java/seng302/visualiser/controllers/cells/ServerCell.java index a2ec84ee..91585604 100644 --- a/src/main/java/seng302/visualiser/controllers/cells/ServerCell.java +++ b/src/main/java/seng302/visualiser/controllers/cells/ServerCell.java @@ -69,7 +69,6 @@ public class ServerCell implements Initializable { * Attempts to connect to the chosen server using the button on the serverCell. */ private void joinServer() { - System.out.println("Connecting to " + serverName.getText()); ViewManager.getInstance().getGameClient().runAsClient(hostName, portNumber); } From 482d98783941a2147b64c192556cc53d6a736068 Mon Sep 17 00:00:00 2001 From: Alistair McIntyre Date: Thu, 14 Sep 2017 15:10:48 +1200 Subject: [PATCH 5/7] - Fixed Null Pointer - Build Should pass Tags: #story[1245] --- src/main/java/seng302/visualiser/GameClient.java | 4 ++-- .../visualiser/controllers/RaceViewController.java | 1 - .../seng302/gameServer/server/ChatCommandsTest.java | 10 +++++----- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/main/java/seng302/visualiser/GameClient.java b/src/main/java/seng302/visualiser/GameClient.java index 87511a5a..7040d7ee 100644 --- a/src/main/java/seng302/visualiser/GameClient.java +++ b/src/main/java/seng302/visualiser/GameClient.java @@ -341,10 +341,10 @@ public class GameClient { } if (raceFinished) { - System.out.println(raceViewController); raceViewController.showFinishDialog(finishedBoats); Sounds.playFinishSound(); close(); + ViewManager.getInstance().getGameClient().stopGame(); //loadFinishScreenView(); } raceState.setRaceFinished(); @@ -450,7 +450,7 @@ public class GameClient { if (server != null) server.terminate(); if (socketThread != null) socketThread.setSocketToClose(); server = null; - socketThread = null; +// socketThread = null; } public Map getAllBoatsMap() { diff --git a/src/main/java/seng302/visualiser/controllers/RaceViewController.java b/src/main/java/seng302/visualiser/controllers/RaceViewController.java index 7a5ac3b6..babbab5f 100644 --- a/src/main/java/seng302/visualiser/controllers/RaceViewController.java +++ b/src/main/java/seng302/visualiser/controllers/RaceViewController.java @@ -200,7 +200,6 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel public void showFinishDialog(ArrayList finishedBoats) { raceState.setRaceStarted(false); finishDialogController.setFinishedBoats(finishedBoats); - ViewManager.getInstance().getGameClient().stopGame(); finishScreenDialog.show(); } diff --git a/src/test/java/seng302/gameServer/server/ChatCommandsTest.java b/src/test/java/seng302/gameServer/server/ChatCommandsTest.java index 221a6782..cb0bc930 100644 --- a/src/test/java/seng302/gameServer/server/ChatCommandsTest.java +++ b/src/test/java/seng302/gameServer/server/ChatCommandsTest.java @@ -61,7 +61,7 @@ public class ChatCommandsTest { } catch (InterruptedException ie) { ie.printStackTrace(); } - host.sendChatterMessage("[time_prefix] >finish"); + host.sendChatterMessage("[time_prefix] /finish"); dcSent = true; try { Thread.sleep(2000); @@ -104,7 +104,7 @@ public class ChatCommandsTest { ie.printStackTrace(); } mst.startGame(); - host.sendChatterMessage("[time_prefix] >speed 5"); + host.sendChatterMessage("[time_prefix] /speed 5"); try { Thread.sleep(100); } catch (InterruptedException ie) { @@ -143,7 +143,7 @@ public class ChatCommandsTest { ie.printStackTrace(); } mst.startGame(); - host.sendChatterMessage("[time_prefix] >speed fdgdgdfg"); + host.sendChatterMessage("[time_prefix] /speed fdgdgdfg"); try { Thread.sleep(100); } catch (InterruptedException ie) { @@ -188,7 +188,7 @@ public class ChatCommandsTest { } catch (InterruptedException ie) { ie.printStackTrace(); } - client.sendChatterMessage("[time_prefix] >speed 5.0"); + client.sendChatterMessage("[time_prefix] /speed 5.0"); try { Thread.sleep(200); } catch (InterruptedException ie) { @@ -248,7 +248,7 @@ public class ChatCommandsTest { } catch (IOException ioe) { ioe.printStackTrace(); } - host.sendChatterMessage("[time_prefix] >finish"); + host.sendChatterMessage("[time_prefix] /finish"); dcSent = true; } } From 3a671d4ed05fc9bf3fba17757d702ec701645d04 Mon Sep 17 00:00:00 2001 From: Alistair McIntyre Date: Thu, 14 Sep 2017 15:24:58 +1200 Subject: [PATCH 6/7] - Added Values to Finish Dialog. Tags: #story[1245] --- .../dialogs/FinishDialogController.java | 4 ++-- .../resources/css/dialogs/FinishScreen.css | 21 +++++++++++++++++++ .../views/dialogs/RaceFinishDialog.fxml | 2 +- 3 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 src/main/resources/css/dialogs/FinishScreen.css diff --git a/src/main/java/seng302/visualiser/controllers/dialogs/FinishDialogController.java b/src/main/java/seng302/visualiser/controllers/dialogs/FinishDialogController.java index aad3b62d..34753497 100644 --- a/src/main/java/seng302/visualiser/controllers/dialogs/FinishDialogController.java +++ b/src/main/java/seng302/visualiser/controllers/dialogs/FinishDialogController.java @@ -30,8 +30,8 @@ public class FinishDialogController implements Initializable { public void setFinishedBoats(ArrayList finishedBoats) { finishersList.getItems().clear(); - for (ClientYacht yacht : finishedBoats) { - finishersList.getItems().add(new Label(yacht.getBoatName())); + for (int i = 0; i < finishedBoats.size(); i++) { + finishersList.getItems().add(new Label(Integer.toString(i+1) +". " + finishedBoats.get(i).getBoatName())); } } } diff --git a/src/main/resources/css/dialogs/FinishScreen.css b/src/main/resources/css/dialogs/FinishScreen.css new file mode 100644 index 00000000..e931eec7 --- /dev/null +++ b/src/main/resources/css/dialogs/FinishScreen.css @@ -0,0 +1,21 @@ +#raceFinishLabel { + -fx-font-size: 23px !important; + -fx-text-fill: -fx-pp-dark-text-color; +} + +#finishersList { + +} + +#playAgain { + -fx-background-color: -fx-pp-theme-color; + -fx-text-fill: -fx-pp-light-text-color; + -fx-font-size: 20px !important; + -fx-effect: -fx-pp-dropshadow-dark; + -fx-min-width: 130px; +} + +#playAgain:hover { + -fx-font-size: 23px !important; + -fx-background-color: -fx-pp-light-theme-color; +} \ No newline at end of file diff --git a/src/main/resources/views/dialogs/RaceFinishDialog.fxml b/src/main/resources/views/dialogs/RaceFinishDialog.fxml index e8be2740..a8d379f2 100644 --- a/src/main/resources/views/dialogs/RaceFinishDialog.fxml +++ b/src/main/resources/views/dialogs/RaceFinishDialog.fxml @@ -35,7 +35,7 @@ - + From 02df69b7b406d39263a9d0cd2c64e73baea53983 Mon Sep 17 00:00:00 2001 From: Alistair McIntyre Date: Thu, 14 Sep 2017 15:27:10 +1200 Subject: [PATCH 7/7] - Merged Dev into branch Tags: #story[1245] --- .../visualiser/controllers/dialogs/FinishDialogController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/seng302/visualiser/controllers/dialogs/FinishDialogController.java b/src/main/java/seng302/visualiser/controllers/dialogs/FinishDialogController.java index 34753497..2e22d074 100644 --- a/src/main/java/seng302/visualiser/controllers/dialogs/FinishDialogController.java +++ b/src/main/java/seng302/visualiser/controllers/dialogs/FinishDialogController.java @@ -5,6 +5,7 @@ import com.jfoenix.controls.JFXButton; import com.jfoenix.controls.JFXListView; import java.net.URL; import java.util.ArrayList; +import java.util.Comparator; import java.util.ResourceBundle; import javafx.fxml.FXML; import javafx.fxml.Initializable;