diff --git a/src/main/java/seng302/App.java b/src/main/java/seng302/App.java index d840f6fb..85b89c10 100644 --- a/src/main/java/seng302/App.java +++ b/src/main/java/seng302/App.java @@ -32,7 +32,8 @@ public class App extends Application { @Override public void start(Stage primaryStage) throws Exception { this.primaryStage = primaryStage; - + primaryStage.minHeightProperty().setValue(600); + primaryStage.minWidthProperty().setValue(780); //load the first container try { FXMLLoader loader = new FXMLLoader(); diff --git a/src/main/java/seng302/Controllers/RaceController.java b/src/main/java/seng302/Controllers/RaceController.java index ff135580..ff3ba51f 100644 --- a/src/main/java/seng302/Controllers/RaceController.java +++ b/src/main/java/seng302/Controllers/RaceController.java @@ -12,6 +12,7 @@ import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.input.MouseEvent; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.HBox; +import javafx.scene.layout.StackPane; import javafx.scene.paint.Color; import javafx.scene.layout.GridPane; import javafx.util.Callback; @@ -31,7 +32,7 @@ import java.util.ResourceBundle; */ public class RaceController extends Controller{ @FXML - AnchorPane canvasBase; + GridPane canvasBase; ResizableRaceCanvas raceMap; diff --git a/src/main/java/seng302/Model/ResizableRaceCanvas.java b/src/main/java/seng302/Model/ResizableRaceCanvas.java index 4f74a990..df6cb54a 100644 --- a/src/main/java/seng302/Model/ResizableRaceCanvas.java +++ b/src/main/java/seng302/Model/ResizableRaceCanvas.java @@ -31,6 +31,7 @@ public class ResizableRaceCanvas extends Canvas { private RaceController controller; private boolean raceAnno = true; private ArrayList raceBoundaries; + double[] xpoints = {}, ypoints = {}; /** * Sets the boats that are to be displayed in this race. @@ -164,14 +165,11 @@ public class ResizableRaceCanvas extends Canvas { } public void drawBoundaries(){ - gc.setFill(Color.AQUA); - double xpoints[] = new double[raceBoundaries.size()]; - double ypoints[] = new double[raceBoundaries.size()]; - for (int i = 0; i < raceBoundaries.size(); i++){ - GraphCoordinate coord = map.convertGPS(raceBoundaries.get(i)); - xpoints[i] = coord.getX(); - ypoints[i] = coord.getY(); + if (this.raceBoundaries == null){ + return; } + gc.setFill(Color.AQUA); + setRaceBoundCoordinates(); gc.fillPolygon(xpoints, ypoints, xpoints.length); } @@ -248,7 +246,21 @@ public class ResizableRaceCanvas extends Canvas { } public void setRaceBoundaries(ArrayList boundaries) { - this.raceBoundaries = boundaries; + this.raceBoundaries = new ArrayList<>(); + for (GPSCoordinate bound: boundaries){ + raceBoundaries.add(bound); + } + setRaceBoundCoordinates(); + } + + public void setRaceBoundCoordinates(){ + xpoints = new double[this.raceBoundaries.size()]; + ypoints = new double[this.raceBoundaries.size()]; + for (int i = 0; i < raceBoundaries.size(); i++){ + GraphCoordinate coord = map.convertGPS(raceBoundaries.get(i)); + xpoints[i] = coord.getX(); + ypoints[i] = coord.getY(); + } } /** diff --git a/src/main/java/seng302/RaceMap.java b/src/main/java/seng302/RaceMap.java index 172ec58b..88c334e7 100644 --- a/src/main/java/seng302/RaceMap.java +++ b/src/main/java/seng302/RaceMap.java @@ -35,8 +35,16 @@ public class RaceMap { * @see GraphCoordinate */ public GraphCoordinate convertGPS(double lat, double lon) { + int difference = Math.abs(width - height); + int size = width; + if (width > height){ + size = height; + return new GraphCoordinate((int) ((size * (lon - x1) / (x2 - x1)) + difference/2), (int) (size - (size * (lat - y1) / (y2 - y1)))); + }else{ + return new GraphCoordinate((int) (size * (lon - x1) / (x2 - x1)), (int) ((size - (size * (lat - y1) / (y2 - y1))) + difference/2)); + } - return new GraphCoordinate((int) (width * (lon - x1) / (x2 - x1)), (int) (height - (height * (lat - y1) / (y2 - y1)))); + //return new GraphCoordinate((int) (width * (lon - x1) / (x2 - x1)), (int) (height - (height * (lat - y1) / (y2 - y1)))); } /** diff --git a/src/main/java/seng302/RaceXMLReader.java b/src/main/java/seng302/RaceXMLReader.java index 9be593fb..e54e42fd 100644 --- a/src/main/java/seng302/RaceXMLReader.java +++ b/src/main/java/seng302/RaceXMLReader.java @@ -103,11 +103,11 @@ public class RaceXMLReader extends XMLReader{ minLongitude = boundary.get(i).getLongitude(); } } - System.out.println(nBounds.getLength()); + /*System.out.println(nBounds.getLength()); System.out.println(maxLatitude); System.out.println(minLatitude); System.out.println(maxLongitude); - System.out.println(minLongitude); + System.out.println(minLongitude);*/ double difference = 0;//this will hold the largest difference so we can make the map square. double latitudeDiff = Math.abs(Math.abs(boundary.get(maxLatitudeIndex).getLatitude()) - Math.abs(boundary.get(minLatitudeIndex).getLatitude())); diff --git a/src/main/resources/scenes/racepane.fxml b/src/main/resources/scenes/racepane.fxml index 46c4ee89..e25728c3 100644 --- a/src/main/resources/scenes/racepane.fxml +++ b/src/main/resources/scenes/racepane.fxml @@ -1,5 +1,6 @@ + @@ -61,22 +62,32 @@ - - - - + + + + + + + + + +