From dc193108494bb04b13c37d332c7fbaeffc71bb26 Mon Sep 17 00:00:00 2001 From: William Muir Date: Tue, 29 Aug 2017 17:17:06 +1200 Subject: [PATCH] Tokens now appear client side #story[1250] --- .../java/seng302/gameServer/GameState.java | 2 +- .../java/seng302/visualiser/GameView.java | 25 +++++++++++++++++++ .../controllers/RaceViewController.java | 5 +++- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/main/java/seng302/gameServer/GameState.java b/src/main/java/seng302/gameServer/GameState.java index bec5aaed..89e4492c 100644 --- a/src/main/java/seng302/gameServer/GameState.java +++ b/src/main/java/seng302/gameServer/GameState.java @@ -100,7 +100,7 @@ public class GameState implements Runnable { //TEMP TEST STUFF // TODO: 29/08/17 wmu16 - Take this out! - tokens.add(new Token(TokenType.BOOST, 1233d, 11.83154)); + tokens.add(new Token(TokenType.BOOST, 57.66946, 11.83154)); tokens.add(new Token(TokenType.BOOST, 57.66877, 11.83382)); tokens.add(new Token(TokenType.BOOST, 57.66914, 11.83965)); tokens.add(new Token(TokenType.BOOST, 57.66684, 11.83214)); diff --git a/src/main/java/seng302/visualiser/GameView.java b/src/main/java/seng302/visualiser/GameView.java index 99a49021..668a9cbc 100644 --- a/src/main/java/seng302/visualiser/GameView.java +++ b/src/main/java/seng302/visualiser/GameView.java @@ -35,6 +35,7 @@ import seng302.model.Limit; import seng302.model.mark.CompoundMark; import seng302.model.mark.Corner; import seng302.model.mark.Mark; +import seng302.model.token.Token; import seng302.utilities.GeoUtility; import seng302.visualiser.fxObjects.AnnotationBox; import seng302.visualiser.fxObjects.BoatObject; @@ -82,6 +83,7 @@ public class GameView extends Pane { private Group boatObjectGroup = new Group(); private Group trails = new Group(); private Group markers = new Group(); + private Group tokens = new Group(); private List course = new ArrayList<>(); private ImageView mapImage = new ImageView(); @@ -141,6 +143,7 @@ public class GameView extends Pane { gameObjects.add(mapImage); gameObjects.add(raceBorder); gameObjects.add(markers); + gameObjects.add(tokens); initializeTimer(); } @@ -435,6 +438,28 @@ public class GameView extends Pane { raceBorder.getPoints().setAll(boundaryPoints); } + /** + * Replaces all tokens in the course with those passed in + * + * @param newTokens the tokens to be put on the course. + */ + public void updateTokens(List newTokens) { + + List mapTokens = new ArrayList<>(); + + for (Token token : newTokens) { + Point2D location = findScaledXY(token.getLat(), token.getLng()); + Marker thisMarker = new Marker(Color.YELLOW); + thisMarker.setLayoutX(location.getX()); + thisMarker.setLayoutY(location.getY()); + mapTokens.add(thisMarker); + } + Platform.runLater(() -> { + tokens.getChildren().clear(); + tokens.getChildren().addAll(mapTokens); + }); + } + // TODO: 16/08/17 initialize zooming internal to GameView only /** * Enables zoom. Has to be called after this is added to a scene. diff --git a/src/main/java/seng302/visualiser/controllers/RaceViewController.java b/src/main/java/seng302/visualiser/controllers/RaceViewController.java index a7cd9718..b5119086 100644 --- a/src/main/java/seng302/visualiser/controllers/RaceViewController.java +++ b/src/main/java/seng302/visualiser/controllers/RaceViewController.java @@ -41,6 +41,7 @@ import seng302.model.RaceState; import seng302.model.mark.CompoundMark; import seng302.model.mark.Mark; import seng302.model.stream.xml.parser.RaceXMLData; +import seng302.model.token.Token; import seng302.visualiser.GameView; import seng302.visualiser.controllers.annotations.Annotation; import seng302.visualiser.controllers.annotations.ImportantAnnotationController; @@ -139,7 +140,8 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel gameView.updateBorder(raceData.getCourseLimit()); gameView.updateCourse( new ArrayList<>(raceData.getCompoundMarks().values()), raceData.getMarkSequence() - ); + ); + gameView.updateTokens(raceData.getTokens()); gameView.enableZoom(); gameView.setBoatAsPlayer(player); gameView.startRace(); @@ -621,5 +623,6 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel public void updateRaceData (RaceXMLData raceData) { this.courseData = raceData; gameView.updateBorder(raceData.getCourseLimit()); + gameView.updateTokens(raceData.getTokens()); } } \ No newline at end of file