@ -7,15 +7,9 @@ import javafx.scene.paint.Color;
import javafx.scene.paint.Paint ;
import javafx.scene.paint.Paint ;
import javafx.scene.transform.Rotate ;
import javafx.scene.transform.Rotate ;
import seng302.Constants ;
import seng302.Constants ;
import seng302.GPSCoordinate ;
import seng302.GraphCoordinate ;
import seng302.GraphCoordinate ;
import seng302.RaceMap ;
import seng302.RaceMap ;
import java.awt.* ;
import java.awt.geom.Rectangle2D ;
import java.util.ArrayList ;
import java.util.Random ;
/ * *
/ * *
* This creates a JavaFX Canvas that is fills it ' s parent .
* This creates a JavaFX Canvas that is fills it ' s parent .
* Cannot be downsized .
* Cannot be downsized .
@ -50,15 +44,6 @@ public class ResizableRaceCanvas extends Canvas {
this ( null ) ;
this ( null ) ;
}
}
/ * *
* Sets the RaceMap that the RaceCanvas is to be displaying for .
*
* @param map
* /
public void setMap ( RaceMap map ) {
this . map = map ;
}
/ * *
/ * *
* Displays the mark of a race as a circle .
* Displays the mark of a race as a circle .
*
*
@ -74,6 +59,20 @@ public class ResizableRaceCanvas extends Canvas {
gc . fillOval ( graphCoordinate . getX ( ) - ( d / 2 ) , graphCoordinate . getY ( ) - ( d / 2 ) , d , d ) ;
gc . fillOval ( graphCoordinate . getX ( ) - ( d / 2 ) , graphCoordinate . getY ( ) - ( d / 2 ) , d , d ) ;
}
}
public void displayBoat ( BoatInRace boat , double angle ) {
GraphCoordinate pos = this . map . convertGPS ( boat . getCurrentPosition ( ) ) ;
Paint paint = boat . getColour ( ) ;
double [ ] x = { pos . getX ( ) - 6 , pos . getX ( ) , pos . getX ( ) + 6 } ;
double [ ] y = { pos . getY ( ) + 12 , pos . getY ( ) - 12 , pos . getY ( ) + 12 } ;
gc . setFill ( paint ) ;
gc . save ( ) ;
rotate ( angle , pos . getX ( ) , pos . getY ( ) ) ;
gc . fillPolygon ( x , y , 3 ) ;
gc . restore ( ) ;
}
/ * *
/ * *
* Displays a line on the map with rectangles on the starting and ending point of the line .
* Displays a line on the map with rectangles on the starting and ending point of the line .
*
*
@ -92,20 +91,6 @@ public class ResizableRaceCanvas extends Canvas {
gc . strokeLine ( graphCoordinateA . getX ( ) , graphCoordinateA . getY ( ) , graphCoordinateB . getX ( ) , graphCoordinateB . getY ( ) ) ;
gc . strokeLine ( graphCoordinateA . getX ( ) , graphCoordinateA . getY ( ) , graphCoordinateB . getX ( ) , graphCoordinateB . getY ( ) ) ;
}
}
/ * *
* Display a point on the Canvas
*
* @param graphCoordinate Coordinate that the point is to be displayed at .
* @param paint Colour that the boat is to be coloured .
* @see GraphCoordinate
* @see Paint
* @see Color
* /
public void displayPoint ( GraphCoordinate graphCoordinate , Paint paint ) {
gc . setFill ( paint ) ;
gc . fillOval ( graphCoordinate . getX ( ) , graphCoordinate . getY ( ) , 10 , 10 ) ;
}
/ * *
/ * *
* Displays an arrow on the Canvas
* Displays an arrow on the Canvas
*
*
@ -168,10 +153,6 @@ public class ResizableRaceCanvas extends Canvas {
//System.out.println("Race Map Canvas Width: "+ width + ", Height:" + height);
//System.out.println("Race Map Canvas Width: "+ width + ", Height:" + height);
this . map = new RaceMap ( 32.278 , - 64.863 , 32.320989 , - 64.821 , ( int ) width , ( int ) height ) ;
this . map = new RaceMap ( 32.278 , - 64.863 , 32.320989 , - 64.821 , ( int ) width , ( int ) height ) ;
if ( map = = null ) {
return ;
}
//finish line
//finish line
gc . setLineWidth ( 2 ) ;
gc . setLineWidth ( 2 ) ;
GraphCoordinate finishLineCoord1 = this . map . convertGPS ( Constants . finishLineMarker1 ) ;
GraphCoordinate finishLineCoord1 = this . map . convertGPS ( Constants . finishLineMarker1 ) ;
@ -192,16 +173,6 @@ public class ResizableRaceCanvas extends Canvas {
displayLine ( startline1 , startline2 , Color . GREEN ) ;
displayLine ( startline1 , startline2 , Color . GREEN ) ;
if ( boats ! = null ) {
for ( BoatInRace boat : boats ) {
if ( boat ! = null ) {
displayMark ( this . map . convertGPS ( boat . getCurrentPosition ( ) ) , boat . getColour ( ) ) ;
displayText ( boat . getAbbrev ( ) , boat . getVelocity ( ) , this . map . convertGPS ( boat . getCurrentPosition ( ) ) ) ;
}
}
}
//display wind direction arrow - specify origin point and angle
//display wind direction arrow - specify origin point and angle
displayArrow ( new GraphCoordinate ( 500 , 20 ) , 100 ) ;
displayArrow ( new GraphCoordinate ( 500 , 20 ) , 100 ) ;
}
}
@ -210,26 +181,16 @@ public class ResizableRaceCanvas extends Canvas {
if ( boats ! = null ) {
if ( boats ! = null ) {
for ( BoatInRace boat : boats ) {
for ( BoatInRace boat : boats ) {
if ( boat ! = null & & ! boat . getCurrentLeg ( ) . getName ( ) . equals ( "Finish" ) ) {
if ( boat ! = null & & ! boat . getCurrentLeg ( ) . getName ( ) . equals ( "Finish" ) ) {
displayBoat ( boat , boat . calculateHeading ( ) ) ;
GraphCoordinate wakeFrom = this . map . convertGPS ( boat . getCurrentPosition ( ) ) ;
GraphCoordinate wakeFrom = this . map . convertGPS ( boat . getCurrentPosition ( ) ) ;
GraphCoordinate wakeTo = this . map . convertGPS ( boat . getWake ( ) ) ;
GraphCoordinate wakeTo = this . map . convertGPS ( boat . getWake ( ) ) ;
displayLine ( wakeFrom , wakeTo , boat . getColour ( ) ) ;
displayLine ( wakeFrom , wakeTo , boat . getColour ( ) ) ;
}
}
else displayBoat ( boat , 0 ) ;
displayText ( boat . getAbbrev ( ) , boat . getVelocity ( ) , this . map . convertGPS ( boat . getCurrentPosition ( ) ) ) ;
}
}
}
}
}
}
/ * *
* Draws a boat at a certain GPSCoordinate
*
* @param colour Colour to colour boat .
* @param gpsCoordinates GPScoordinate that the boat is to be drawn at .
* @see GPSCoordinate
* @see Color
* /
public void drawBoat ( Color colour , GPSCoordinate gpsCoordinates ) {
GraphCoordinate graphCoordinate = this . map . convertGPS ( gpsCoordinates ) ;
//System.out.println("DrawingBoat" + gpsCoordinates.getLongitude());
displayPoint ( graphCoordinate , colour ) ;
}
/ * *
/ * *
* Set the Canvas to resizable .
* Set the Canvas to resizable .
@ -262,4 +223,15 @@ public class ResizableRaceCanvas extends Canvas {
public double prefHeight ( double height ) {
public double prefHeight ( double height ) {
return getHeight ( ) ;
return getHeight ( ) ;
}
}
public void drawBoats ( ) {
if ( boats ! = null ) {
for ( BoatInRace boat : boats ) {
if ( boat ! = null ) {
displayBoat ( boat , 0 ) ;
displayText ( boat . getAbbrev ( ) , boat . getVelocity ( ) , this . map . convertGPS ( boat . getCurrentPosition ( ) ) ) ;
}
}
}
}
}
}