package seng302.Model; /** * Represents a leg of a race. */ public class Leg { /** * The name of the leg. */ private String name; /** * The distance of the leg, in nautical miles. */ private double distanceNauticalMiles; /** * The starting marker of the leg. */ private CompoundMark startCompoundMark; /** * The ending marking of the leg. */ private CompoundMark endCompoundMark; /** * The leg number within a race. */ private int legNumber; /** * Constructs a leg from a name, start marker, end marker, and leg number. * * @param name Name of the Leg. * @param start Starting marker of the leg. * @param end Ending marker of the leg. * @param number Leg's position within the race. */ public Leg(String name, CompoundMark start, CompoundMark end, int number) { this.name = name; this.startCompoundMark = start; this.endCompoundMark = end; this.legNumber = number; this.calculateLegDistance(); } /** * Constructs a leg from a name and leg number. * This is currently used for constructing "dummy" DNF and Finish legs. * * @param name Name of the leg. * @param number Leg's position within the race. */ public Leg(String name, int number) { this.name = name; this.legNumber = number; } /** * Returns the name of the Leg. * @return The name of the Leg. */ public String getName() { return name; } /** * Get the distance in nautical miles. * @return The total distance of the leg. */ public double getDistanceNauticalMiles() { return distanceNauticalMiles; } /** * Returns the leg number of the leg within a race. * @return The leg number of the leg within a race */ public int getLegNumber() { return legNumber; } /** * Returns the starting marker of the leg. * @return The starting marker of the leg. */ public CompoundMark getStartCompoundMark() { return startCompoundMark; } /** * Returns the ending marker of the leg. * @return The ending marker of the leg. */ public CompoundMark getEndCompoundMark() { return endCompoundMark; } /** * Calculates the distance of the leg, in nautical miles. */ public void calculateLegDistance() { //Gets the start and end coordinates. GPSCoordinate startMarker = this.startCompoundMark.getAverageGPSCoordinate(); GPSCoordinate endMarker = this.endCompoundMark.getAverageGPSCoordinate(); //Calculates the distance between markers. double distanceNauticalMiles = GPSCoordinate.calculateDistanceNauticalMiles(startMarker, endMarker); this.distanceNauticalMiles = distanceNauticalMiles; } }