Java class for anonymous complex type. + * + *
The following schema fragment specifies the expected content contained within this class. + * + *
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="Mark" maxOccurs="unbounded">
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <attribute name="SeqId" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * <attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * <attribute name="TargetLat" use="required" type="{http://www.w3.org/2001/XMLSchema}double" />
+ * <attribute name="TargetLng" use="required" type="{http://www.w3.org/2001/XMLSchema}double" />
+ * <attribute name="SourceID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </element>
+ * </sequence>
+ * <attribute name="CompoundMarkID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * <attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ *
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "mark"
+})
+public class XMLCompoundMark {
+
+ @XmlElement(name = "Mark", required = true)
+ protected List
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a set method for the mark property.
+ *
+ *
+ * For example, to add a new item, do as follows: + *
+ * getMark().add(newItem); + *+ * + * + *
+ * Objects of the following type(s) are allowed in the list
+ * {@link XMLMark }
+ *
+ * @return list of marks
+ */
+ public List Java class for anonymous complex type.
+ *
+ * The following schema fragment specifies the expected content contained within this class.
+ *
+ *
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a
+ * For example, to add a new item, do as follows:
+ *
+ * Objects of the following type(s) are allowed in the list
+ * {@link XMLCorner }
+ *
+ * @return getCorners/legs that the boats are to sequentially pass
+ */
+ public List Java class for anonymous complex type.
+ *
+ * The following schema fragment specifies the expected content contained within this class.
+ *
+ * Java class for anonymous complex type.
+ *
+ * The following schema fragment specifies the expected content contained within this class.
+ *
+ *
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a
+ * For example, to add a new item, do as follows:
+ *
+ * Objects of the following type(s) are allowed in the list
+ * {@link XMLCompoundMark }
+ *
+ * @return the compound marks in the course.
+ */
+ public List Java class for anonymous complex type.
+ *
+ * The following schema fragment specifies the expected content contained within this class.
+ *
+ *
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a
+ * For example, to add a new item, do as follows:
+ *
+ * Objects of the following type(s) are allowed in the list
+ * {@link XMLLimit }
+ *
+ * @return the limits of the race
+ */
+ public List Java class for anonymous complex type.
+ *
+ * The following schema fragment specifies the expected content contained within this class.
+ *
+ * Java class for anonymous complex type.
+ *
+ * The following schema fragment specifies the expected content contained within this class.
+ *
+ * Java class for anonymous complex type.
+ *
+ * The following schema fragment specifies the expected content contained within this class.
+ *
+ *
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a
+ * For example, to add a new item, do as follows:
+ *
+ * Objects of the following type(s) are allowed in the list
+ * {@link XMLYacht }
+ *
+ * @return the yachts that are part of the race.
+ */
+ public List Java class for anonymous complex type.
+ *
+ * The following schema fragment specifies the expected content contained within this class.
+ *
+ * An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class XMLRaceFactory {
+
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: shared.xml.Race
+ *
+ */
+ public XMLRaceFactory() {
+ }
+
+ /**
+ * Create an instance of {@link XMLRace }
+ * @return a new instance of a race.
+ */
+ public XMLRace createRace() {
+ return new XMLRace();
+ }
+
+ /**
+ * Create an instance of {@link XMLRaceStartTime }
+ * @return a new start time for the race
+ */
+ public XMLRaceStartTime createXMLRaceStartTime() {
+ return new XMLRaceStartTime();
+ }
+
+ /**
+ * Create an instance of {@link XMLParticipants }
+ * @return a new participant of the race
+ */
+ public XMLParticipants createXMLParticipants() {
+ return new XMLParticipants();
+ }
+
+ /**
+ * Create an instance of {@link XMLCompoundMarkSequence }
+ * @return a new Compound Mark Sequence that hte race is to follow.
+ */
+ public XMLCompoundMarkSequence createXMLCompoundMarkSequence() {
+ return new XMLCompoundMarkSequence();
+ }
+
+ /**
+ * Create an instance of {@link XMLCourse }
+ * @return the course the race is to use.
+ */
+ public XMLCourse createXMLCourse() {
+ return new XMLCourse();
+ }
+
+ /**
+ * Create an instance of {@link XMLCourseLimit }
+ * @return the limits/boundaries of the course.
+ */
+ public XMLCourseLimit createXMLCourseLimit() {
+ return new XMLCourseLimit();
+ }
+
+ /**
+ * Create an instance of {@link XMLLimit }
+ * @return a point on hte boundaries
+ */
+ public XMLLimit createXMLLimit() {
+ return new XMLLimit();
+ }
+
+ /**
+ * Create an instance of {@link XMLCompoundMark }
+ * @return a compound mark (made out of multiple marks)
+ */
+ public XMLCompoundMark createXMLCompoundMark() {
+ return new XMLCompoundMark();
+ }
+
+ /**
+ * Create an instance of {@link XMLMark }
+ * @return a mark
+ */
+ public XMLMark createXMLMark() {
+ return new XMLMark();
+ }
+
+ /**
+ * Create an instance of {@link XMLCorner }
+ * @return a corner of a compound mark sequence
+ */
+ public XMLCorner createXMLCorner() {
+ return new XMLCorner();
+ }
+
+ /**
+ * Create an instance of {@link XMLYacht }
+ * @return creates a new Yacht.
+ */
+ public XMLYacht createXMLYacht() {
+ return new XMLYacht();
+ }
+
+}
diff --git a/racevisionGame/src/main/java/shared/xml/Race/XMLRaceStartTime.java b/racevisionGame/src/main/java/shared/xml/Race/XMLRaceStartTime.java
new file mode 100644
index 00000000..ceaa124d
--- /dev/null
+++ b/racevisionGame/src/main/java/shared/xml/Race/XMLRaceStartTime.java
@@ -0,0 +1,92 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
+// See http://java.sun.com/xml/jaxb
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2017.08.14 at 02:54:32 AM NZST
+//
+
+
+package shared.xml.Race;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Java class for anonymous complex type.
+ *
+ * The following schema fragment specifies the expected content contained within this class.
+ *
+ * Java class for anonymous complex type.
+ *
+ * The following schema fragment specifies the expected content contained within this class.
+ *
+ *
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="Corner" maxOccurs="unbounded">
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <attribute name="CompoundMarkID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * <attribute name="SeqID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * <attribute name="Rounding" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * <attribute name="ZoneSize" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </element>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ *
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "corner"
+})
+public class XMLCompoundMarkSequence {
+
+ @XmlElement(name = "Corner", required = true)
+ protected Listset method for the corner property.
+ *
+ *
+ * getCorner().add(newItem);
+ *
+ *
+ *
+ *
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <attribute name="CompoundMarkID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * <attribute name="SeqID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * <attribute name="Rounding" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * <attribute name="ZoneSize" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ *
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "")
+public class XMLCorner {
+
+ @XmlAttribute(name = "CompoundMarkID", required = true)
+ protected int compoundMarkID;
+ @XmlAttribute(name = "SeqID", required = true)
+ protected int seqID;
+ @XmlAttribute(name = "Rounding", required = true)
+ protected String rounding;
+ @XmlAttribute(name = "ZoneSize", required = true)
+ protected int zoneSize;
+
+ /**
+ * Gets the value of the compoundMarkID property.
+ * @return Id of the compound mark
+ */
+ public int getCompoundMarkID() {
+ return compoundMarkID;
+ }
+
+ /**
+ * Sets the value of the compoundMarkID property.
+ * @param value sets the id of the compound mark
+ */
+ public void setCompoundMarkID(int value) {
+ this.compoundMarkID = value;
+ }
+
+ /**
+ * Gets the value of the seqID property.
+ * @return the order that the mark is to be passed at
+ */
+ public int getSeqID() {
+ return seqID;
+ }
+
+ /**
+ * Sets the value of the seqID property.
+ * @param value sets the order that this corner is to appear in a race at.
+ */
+ public void setSeqID(int value) {
+ this.seqID = value;
+ }
+
+ /**
+ * Gets the value of the rounding property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getRounding() {
+ return rounding;
+ }
+
+ /**
+ * Sets the value of the rounding property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setRounding(String value) {
+ this.rounding = value;
+ }
+
+ /**
+ * Gets the value of the zoneSize property.
+ * @return the size of the leg
+ */
+ public int getZoneSize() {
+ return zoneSize;
+ }
+
+ /**
+ * Sets the value of the zoneSize property.
+ * @param value sets the size of the corner.
+ */
+ public void setZoneSize(int value) {
+ this.zoneSize = value;
+ }
+
+}
diff --git a/racevisionGame/src/main/java/shared/xml/Race/XMLCourse.java b/racevisionGame/src/main/java/shared/xml/Race/XMLCourse.java
new file mode 100644
index 00000000..8fe22193
--- /dev/null
+++ b/racevisionGame/src/main/java/shared/xml/Race/XMLCourse.java
@@ -0,0 +1,100 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
+// See http://java.sun.com/xml/jaxb
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2017.08.14 at 02:54:32 AM NZST
+//
+
+
+package shared.xml.Race;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ *
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="CompoundMark" maxOccurs="unbounded">
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="Mark" maxOccurs="unbounded">
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <attribute name="SeqId" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * <attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * <attribute name="TargetLat" use="required" type="{http://www.w3.org/2001/XMLSchema}double" />
+ * <attribute name="TargetLng" use="required" type="{http://www.w3.org/2001/XMLSchema}double" />
+ * <attribute name="SourceID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </element>
+ * </sequence>
+ * <attribute name="CompoundMarkID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * <attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </element>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ *
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "compoundMark"
+})
+public class XMLCourse {
+
+ @XmlElement(name = "CompoundMark", required = true)
+ protected Listset method for the compoundMark property.
+ *
+ *
+ * getCompoundMark().add(newItem);
+ *
+ *
+ *
+ *
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="Limit" maxOccurs="unbounded">
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <attribute name="Lat" use="required" type="{http://www.w3.org/2001/XMLSchema}double" />
+ * <attribute name="Lon" use="required" type="{http://www.w3.org/2001/XMLSchema}double" />
+ * <attribute name="SeqID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </element>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ *
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "limit"
+})
+public class XMLCourseLimit {
+
+ @XmlElement(name = "Limit", required = true)
+ protected Listset method for the limit property.
+ *
+ *
+ * getLimit().add(newItem);
+ *
+ *
+ *
+ *
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <attribute name="Lat" use="required" type="{http://www.w3.org/2001/XMLSchema}double" />
+ * <attribute name="Lon" use="required" type="{http://www.w3.org/2001/XMLSchema}double" />
+ * <attribute name="SeqID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ *
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "")
+public class XMLLimit {
+
+ @XmlAttribute(name = "Lat", required = true)
+ protected double lat;
+ @XmlAttribute(name = "Lon", required = true)
+ protected double lon;
+ @XmlAttribute(name = "SeqID", required = true)
+ protected int seqID;
+
+ /**
+ * Gets the value of the lat property.
+ * @return get the latitude of the limit
+ */
+ public double getLat() {
+ return lat;
+ }
+
+ /**
+ * Sets the value of the lat property.
+ * @param value sets the latitude of the limit
+ */
+ public void setLat(double value) {
+ this.lat = value;
+ }
+
+ /**
+ * Gets the value of the lon property.
+ * @return sets the longitude of the limit
+ */
+ public double getLon() {
+ return lon;
+ }
+
+ /**
+ * Sets the value of the lon property.
+ * @param value sets the longitude of the limit
+ */
+ public void setLon(double value) {
+ this.lon = value;
+ }
+
+ /**
+ * Gets the value of the seqID property.
+ * @return gets the sequence that the limit is at.
+ */
+ public int getSeqID() {
+ return seqID;
+ }
+
+ /**
+ * Sets the value of the seqID property.
+ * @param value sets the order that this limit is to appear in.
+ */
+ public void setSeqID(int value) {
+ this.seqID = value;
+ }
+
+}
diff --git a/racevisionGame/src/main/java/shared/xml/Race/XMLMark.java b/racevisionGame/src/main/java/shared/xml/Race/XMLMark.java
new file mode 100644
index 00000000..0ad01ce4
--- /dev/null
+++ b/racevisionGame/src/main/java/shared/xml/Race/XMLMark.java
@@ -0,0 +1,151 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
+// See http://java.sun.com/xml/jaxb
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2017.08.14 at 02:54:32 AM NZST
+//
+
+
+package shared.xml.Race;
+
+import mock.model.collider.Collider;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ *
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <attribute name="SeqId" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * <attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * <attribute name="TargetLat" use="required" type="{http://www.w3.org/2001/XMLSchema}double" />
+ * <attribute name="TargetLng" use="required" type="{http://www.w3.org/2001/XMLSchema}double" />
+ * <attribute name="SourceID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ *
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "")
+public class XMLMark{
+
+ @XmlAttribute(name = "SeqId")
+ protected Integer seqId;
+ @XmlAttribute(name = "Name", required = true)
+ protected String name;
+ @XmlAttribute(name = "TargetLat", required = true)
+ protected double targetLat;
+ @XmlAttribute(name = "TargetLng", required = true)
+ protected double targetLng;
+ @XmlAttribute(name = "SourceID", required = true)
+ protected int sourceID;
+
+ /**
+ * Gets the value of the seqId property.
+ *
+ * @return
+ * possible object is
+ * {@link Integer }
+ *
+ */
+ public Integer getSeqId() {
+ return seqId;
+ }
+
+ /**
+ * Sets the value of the seqId property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Integer }
+ *
+ */
+ public void setSeqId(Integer value) {
+ this.seqId = value;
+ }
+
+ /**
+ * Gets the value of the name property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the name property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setName(String value) {
+ this.name = value;
+ }
+
+ /**
+ * Gets the value of the targetLat property.
+ * @return latitude that mark is at
+ */
+ public double getTargetLat() {
+ return targetLat;
+ }
+
+ /**
+ * Sets the value of the targetLat property.
+ * @param value sets the latitude that the mark is at.
+ */
+ public void setTargetLat(double value) {
+ this.targetLat = value;
+ }
+
+ /**
+ * Gets the value of the targetLng property.
+ * @return the longitude the mark is at
+ */
+ public double getTargetLng() {
+ return targetLng;
+ }
+
+ /**
+ * Sets the value of the targetLng property.
+ * @param value sets the longitude that the value is at
+ */
+ public void setTargetLng(double value) {
+ this.targetLng = value;
+ }
+
+ /**
+ * Gets the value of the sourceID property.
+ * @return the markerboats source ID
+ */
+ public int getSourceID() {
+ return sourceID;
+ }
+
+ /**
+ * Sets the value of the sourceID property.
+ * @param value sets the id of the boat that the mark is referencing to.
+ */
+ public void setSourceID(int value) {
+ this.sourceID = value;
+ }
+
+}
diff --git a/racevisionGame/src/main/java/shared/xml/Race/XMLParticipants.java b/racevisionGame/src/main/java/shared/xml/Race/XMLParticipants.java
new file mode 100644
index 00000000..331cc861
--- /dev/null
+++ b/racevisionGame/src/main/java/shared/xml/Race/XMLParticipants.java
@@ -0,0 +1,85 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
+// See http://java.sun.com/xml/jaxb
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2017.08.14 at 02:54:32 AM NZST
+//
+
+
+package shared.xml.Race;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ *
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="Yacht" maxOccurs="unbounded">
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <attribute name="SourceID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * <attribute name="Entry" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </element>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ *
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "yacht"
+})
+public class XMLParticipants {
+
+ @XmlElement(name = "Yacht", required = true)
+ protected Listset method for the yacht property.
+ *
+ *
+ * getYacht().add(newItem);
+ *
+ *
+ *
+ *
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="RaceID" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ * <element name="RaceType" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <element name="CreationTimeDate" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <element name="RaceStartTime">
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <attribute name="Postpone" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * <attribute name="Time" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </element>
+ * <element name="Participants">
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="Yacht" maxOccurs="unbounded">
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <attribute name="SourceID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * <attribute name="Entry" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </element>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </element>
+ * <element name="CompoundMarkSequence">
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="Corner" maxOccurs="unbounded">
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <attribute name="CompoundMarkID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * <attribute name="SeqID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * <attribute name="Rounding" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * <attribute name="ZoneSize" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </element>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </element>
+ * <element name="Course">
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="CompoundMark" maxOccurs="unbounded">
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="Mark" maxOccurs="unbounded">
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <attribute name="SeqId" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * <attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * <attribute name="TargetLat" use="required" type="{http://www.w3.org/2001/XMLSchema}double" />
+ * <attribute name="TargetLng" use="required" type="{http://www.w3.org/2001/XMLSchema}double" />
+ * <attribute name="SourceID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </element>
+ * </sequence>
+ * <attribute name="CompoundMarkID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * <attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </element>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </element>
+ * <element name="CourseLimit">
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="Limit" maxOccurs="unbounded">
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <attribute name="Lat" use="required" type="{http://www.w3.org/2001/XMLSchema}double" />
+ * <attribute name="Lon" use="required" type="{http://www.w3.org/2001/XMLSchema}double" />
+ * <attribute name="SeqID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </element>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </element>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ *
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "raceID",
+ "raceType",
+ "creationTimeDate",
+ "raceStartTime",
+ "participants",
+ "compoundMarkSequence",
+ "course",
+ "courseLimit"
+})
+@XmlRootElement(name = "Race")
+public class XMLRace {
+
+ @XmlElement(name = "RaceID")
+ protected int raceID;
+ @XmlElement(name = "RaceType", required = true)
+ protected String raceType;
+ @XmlElement(name = "CreationTimeDate", required = true)
+ protected String creationTimeDate;
+ @XmlElement(name = "RaceStartTime", required = true)
+ protected XMLRaceStartTime raceStartTime;
+ @XmlElement(name = "Participants", required = true)
+ protected XMLParticipants participants;
+ @XmlElement(name = "CompoundMarkSequence", required = true)
+ protected XMLCompoundMarkSequence compoundMarkSequence;
+ @XmlElement(name = "Course", required = true)
+ protected XMLCourse course;
+ @XmlElement(name = "CourseLimit", required = true)
+ protected XMLCourseLimit courseLimit;
+
+ /**
+ * Gets the value of the raceID property.
+ * @return the id of the race
+ */
+ public int getRaceID() {
+ return raceID;
+ }
+
+ /**
+ * Sets the value of the raceID property.
+ * @param value sets the id of the race
+ */
+ public void setRaceID(int value) {
+ this.raceID = value;
+ }
+
+ /**
+ * Gets the value of the raceType property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getRaceType() {
+ return raceType;
+ }
+
+ /**
+ * Sets the value of the raceType property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setRaceType(String value) {
+ this.raceType = value;
+ }
+
+ /**
+ * Gets the value of the creationTimeDate property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getCreationTimeDate() {
+ return creationTimeDate;
+ }
+
+ /**
+ * Sets the value of the creationTimeDate property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setCreationTimeDate(String value) {
+ this.creationTimeDate = value;
+ }
+
+ /**
+ * Gets the value of the raceStartTime property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLRaceStartTime }
+ *
+ */
+ public XMLRaceStartTime getRaceStartTime() {
+ return raceStartTime;
+ }
+
+ /**
+ * Sets the value of the raceStartTime property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLRaceStartTime }
+ *
+ */
+ public void setRaceStartTime(XMLRaceStartTime value) {
+ this.raceStartTime = value;
+ }
+
+ /**
+ * Gets the value of the participants property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLParticipants }
+ *
+ */
+ public XMLParticipants getParticipants() {
+ return participants;
+ }
+
+ /**
+ * Sets the value of the participants property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLParticipants }
+ *
+ */
+ public void setParticipants(XMLParticipants value) {
+ this.participants = value;
+ }
+
+ /**
+ * Gets the value of the compoundMarkSequence property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLCompoundMarkSequence }
+ *
+ */
+ public XMLCompoundMarkSequence getCompoundMarkSequence() {
+ return compoundMarkSequence;
+ }
+
+ /**
+ * Sets the value of the compoundMarkSequence property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLCompoundMarkSequence }
+ *
+ */
+ public void setCompoundMarkSequence(XMLCompoundMarkSequence value) {
+ this.compoundMarkSequence = value;
+ }
+
+ /**
+ * Gets the value of the course property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLCourse }
+ *
+ */
+ public XMLCourse getCourse() {
+ return course;
+ }
+
+ /**
+ * Sets the value of the course property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLCourse }
+ *
+ */
+ public void setCourse(XMLCourse value) {
+ this.course = value;
+ }
+
+ /**
+ * Gets the value of the courseLimit property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLCourseLimit }
+ *
+ */
+ public XMLCourseLimit getCourseLimit() {
+ return courseLimit;
+ }
+
+ /**
+ * Sets the value of the courseLimit property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLCourseLimit }
+ *
+ */
+ public void setCourseLimit(XMLCourseLimit value) {
+ this.courseLimit = value;
+ }
+
+}
diff --git a/racevisionGame/src/main/java/shared/xml/Race/XMLRaceFactory.java b/racevisionGame/src/main/java/shared/xml/Race/XMLRaceFactory.java
new file mode 100644
index 00000000..35a45cbb
--- /dev/null
+++ b/racevisionGame/src/main/java/shared/xml/Race/XMLRaceFactory.java
@@ -0,0 +1,127 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
+// See http://java.sun.com/xml/jaxb
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2017.08.14 at 02:41:51 AM NZST
+//
+
+
+package shared.xml.Race;
+
+import javax.xml.bind.annotation.XmlRegistry;
+
+
+/**
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the shared.xml.Race package.
+ *
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <attribute name="Postpone" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * <attribute name="Time" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ *
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "")
+public class XMLRaceStartTime {
+
+ @XmlAttribute(name = "Postpone", required = true)
+ protected String postpone;
+ @XmlAttribute(name = "Time", required = true)
+ protected String time;
+
+ /**
+ * Gets the value of the postpone property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPostpone() {
+ return postpone;
+ }
+
+ /**
+ * Sets the value of the postpone property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPostpone(String value) {
+ this.postpone = value;
+ }
+
+ /**
+ * Gets the value of the time property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getTime() {
+ return time;
+ }
+
+ /**
+ * Sets the value of the time property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setTime(String value) {
+ this.time = value;
+ }
+
+}
diff --git a/racevisionGame/src/main/java/shared/xml/Race/XMLYacht.java b/racevisionGame/src/main/java/shared/xml/Race/XMLYacht.java
new file mode 100644
index 00000000..652af26a
--- /dev/null
+++ b/racevisionGame/src/main/java/shared/xml/Race/XMLYacht.java
@@ -0,0 +1,84 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
+// See http://java.sun.com/xml/jaxb
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2017.08.14 at 02:54:32 AM NZST
+//
+
+
+package shared.xml.Race;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ *
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <attribute name="SourceID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ * <attribute name="Entry" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ *
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "")
+public class XMLYacht {
+
+ @XmlAttribute(name = "SourceID", required = true)
+ protected int sourceID;
+ @XmlAttribute(name = "Entry")
+ protected String entry;
+
+ /**
+ * Gets the value of the sourceID property.
+ * @return the id of the yacht
+ */
+ public int getSourceID() {
+ return sourceID;
+ }
+
+ /**
+ * Sets the value of the sourceID property.
+ * @param value sets the source ID of the a yacht that is participating in the race
+ */
+ public void setSourceID(int value) {
+ this.sourceID = value;
+ }
+
+ /**
+ * Gets the value of the entry property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getEntry() {
+ return entry;
+ }
+
+ /**
+ * Sets the value of the entry property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setEntry(String value) {
+ this.entry = value;
+ }
+
+}
diff --git a/racevisionGame/src/main/java/shared/xml/XMLUtilities.java b/racevisionGame/src/main/java/shared/xml/XMLUtilities.java
new file mode 100644
index 00000000..8e01cb76
--- /dev/null
+++ b/racevisionGame/src/main/java/shared/xml/XMLUtilities.java
@@ -0,0 +1,90 @@
+package shared.xml;
+
+import org.w3c.dom.Document;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+import javax.xml.XMLConstants;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+import javax.xml.validation.Validator;
+import java.io.*;
+import java.net.URL;
+
+/**
+ * Created by fwy13 on 13/08/17.
+ */
+public class XMLUtilities {
+
+ public static String classToXML(Object o) throws JAXBException {
+ JAXBContext context = JAXBContext.newInstance(o.getClass());
+ Marshaller jaxbMarshaller = context.createMarshaller();
+ jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+
+ StringWriter sw = new StringWriter();
+
+ jaxbMarshaller.marshal(o, sw);
+ return sw.toString();
+ }
+
+ public static Object xmlToClass(File file, URL schemaURL, Class c) throws ParserConfigurationException, IOException, SAXException, JAXBException {
+ DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ Document document = parser.parse(file);
+
+ return xmlToClass(document, schemaURL, c);
+ }
+
+ public static Object xmlToClass(String xml, URL schemaURL, Class c) throws ParserConfigurationException, IOException, SAXException, JAXBException {
+ DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ Document document = parser.parse(new InputSource(new ByteArrayInputStream(xml.getBytes("utf-8"))));
+
+ return xmlToClass(document, schemaURL, c);
+ }
+
+ public static Object xmlToClass(InputStream i, URL schemaURL, Class c) throws ParserConfigurationException, IOException, SAXException, JAXBException {
+ DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ Document document = parser.parse(i);
+
+ return xmlToClass(document, schemaURL, c);
+ }
+
+ public static Object xmlToClass(Document document, URL schemaURL, Class c) throws ParserConfigurationException, IOException, SAXException, JAXBException {
+ JAXBContext jc = JAXBContext.newInstance(c);
+ Unmarshaller unmarshaller = jc.createUnmarshaller();
+
+ SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+ Schema schema = sf.newSchema(schemaURL);
+ unmarshaller.setSchema(schema);
+
+ return unmarshaller.unmarshal(new DOMSource(document));
+ }
+
+ public static boolean validateXML(String file, URL schemaURL){
+ try {
+ DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ Document document = parser.parse(new File(file));
+
+ SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+ Schema schema = sf.newSchema(schemaURL);
+ Validator validator = schema.newValidator();
+ validator.validate(new DOMSource(document));
+ } catch (ParserConfigurationException e) {
+ return false;
+ } catch (IOException e) {
+ return false;
+ } catch (SAXException e) {
+ return false;
+ }
+ return true;
+ }
+
+
+}
diff --git a/racevisionGame/src/main/java/visualiser/Controllers/ConnectionController.java b/racevisionGame/src/main/java/visualiser/Controllers/ConnectionController.java
index 9efc7b65..28692488 100644
--- a/racevisionGame/src/main/java/visualiser/Controllers/ConnectionController.java
+++ b/racevisionGame/src/main/java/visualiser/Controllers/ConnectionController.java
@@ -6,12 +6,15 @@ import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.scene.layout.AnchorPane;
import mock.app.Event;
+import org.xml.sax.SAXException;
import shared.exceptions.InvalidBoatDataException;
import shared.exceptions.InvalidRaceDataException;
import shared.exceptions.InvalidRegattaDataException;
import shared.exceptions.XMLReaderException;
import visualiser.model.RaceConnection;
+import javax.xml.bind.JAXBException;
+import javax.xml.parsers.ParserConfigurationException;
import javax.xml.soap.Text;
import java.io.IOException;
import java.net.Socket;
diff --git a/racevisionGame/src/main/java/visualiser/Controllers/HostController.java b/racevisionGame/src/main/java/visualiser/Controllers/HostController.java
index 621f7e0d..0eec1137 100644
--- a/racevisionGame/src/main/java/visualiser/Controllers/HostController.java
+++ b/racevisionGame/src/main/java/visualiser/Controllers/HostController.java
@@ -6,6 +6,7 @@ import javafx.scene.control.*;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
import mock.app.Event;
+import org.xml.sax.SAXException;
import mock.exceptions.EventConstructionException;
import shared.exceptions.InvalidBoatDataException;
import shared.exceptions.InvalidRaceDataException;
@@ -13,6 +14,8 @@ import shared.exceptions.InvalidRegattaDataException;
import shared.exceptions.XMLReaderException;
import visualiser.model.RaceConnection;
+import javax.xml.bind.JAXBException;
+import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.net.Socket;
import java.net.URL;
diff --git a/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java
index e6029eb9..cbaa5a47 100644
--- a/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java
+++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java
@@ -486,14 +486,20 @@ public class RaceController extends Controller {
}.start();
}
+ /**
+ * toggles if the info table is shown
+ */
private void toggleTable() {
+ double tablePercent = 1 - (boatPlacingColumn.getPrefWidth() + boatTeamColumn.getPrefWidth() + boatMarkColumn.getPrefWidth() + boatSpeedColumn.getPrefWidth())/race.getWidth();
+
if (infoTableShow){
- race.setDividerPositions(0.4);
+ race.setDividerPositions(tablePercent);
arrowPane.setScaleX(0.5);
arrowPane.setScaleY(0.5);
- arrowPane.setTranslateX(0 + (arrowPane.getScene().getWidth()/4)*0.4);
+ arrowPane.setTranslateX(0 + (arrowPane.getScene().getWidth()/4)*tablePercent);
arrowPane.setTranslateY(0 - arrowPane.getScene().getHeight()/4);
+
}else{
race.setDividerPositions(1);
@@ -501,7 +507,9 @@ public class RaceController extends Controller {
arrowPane.setScaleY(1);
arrowPane.setTranslateX(0);
arrowPane.setTranslateY(0);
+
}
+ boatInfoTable.refresh();
infoTableShow = !infoTableShow;
}
diff --git a/racevisionGame/src/main/java/visualiser/model/ResizableRaceCanvas.java b/racevisionGame/src/main/java/visualiser/model/ResizableRaceCanvas.java
index 57c864b5..1c17b540 100644
--- a/racevisionGame/src/main/java/visualiser/model/ResizableRaceCanvas.java
+++ b/racevisionGame/src/main/java/visualiser/model/ResizableRaceCanvas.java
@@ -2,7 +2,9 @@ package visualiser.model;
import javafx.scene.paint.Color;
+import javafx.scene.paint.LinearGradient;
import javafx.scene.paint.Paint;
+import javafx.scene.text.Font;
import javafx.scene.transform.Rotate;
import network.Messages.Enums.BoatStatusEnum;
import shared.dataInput.RaceDataSource;
@@ -10,6 +12,8 @@ import shared.enums.RoundingType;
import shared.model.*;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
import java.util.List;
/**
@@ -139,8 +143,14 @@ public class ResizableRaceCanvas extends ResizableCanvas {
* Draws a circle with a given diameter, centred on a given graph coordinate.
* @param center The center coordinate of the circle.
* @param diameter The diameter of the circle.
+ * @param paint The paint to use for the circle.
*/
- private void drawCircle(GraphCoordinate center, double diameter) {
+ private void drawCircle(GraphCoordinate center, double diameter, Paint paint) {
+
+ gc.save();
+
+ gc.setFill(paint);
+ gc.setStroke(paint);
//The graphCoordinates are for the center of the point, so we offset them to get the corner coordinate.
gc.fillOval(
@@ -148,6 +158,7 @@ public class ResizableRaceCanvas extends ResizableCanvas {
center.getY() - (diameter / 2),
diameter, diameter );
+ gc.restore();
}
/**
@@ -156,20 +167,16 @@ public class ResizableRaceCanvas extends ResizableCanvas {
* @param graphCoordinateA Starting Point of the line in GraphCoordinate.
* @param graphCoordinateB End Point of the line in GraphCoordinate.
* @param paint Colour the line is to coloured.
+ * @param lineWidth The width of the line.
*/
- private void drawLine(GraphCoordinate graphCoordinateA, GraphCoordinate graphCoordinateB, Paint paint) {
+ private void drawLine(GraphCoordinate graphCoordinateA, GraphCoordinate graphCoordinateB, Paint paint, double lineWidth) {
+
+ gc.save();
gc.setStroke(paint);
gc.setFill(paint);
-
- double endPointDiameter = 6;
-
- //Draw first end-point.
- drawCircle(graphCoordinateA, endPointDiameter);
-
- //Draw second end-point.
- drawCircle(graphCoordinateB, endPointDiameter);
+ gc.setLineWidth(lineWidth);
//Draw line between them.
gc.strokeLine(
@@ -178,26 +185,12 @@ public class ResizableRaceCanvas extends ResizableCanvas {
graphCoordinateB.getX(),
graphCoordinateB.getY() );
- }
-
- /**
- * Display a point on the Canvas. It has a diameter of 10 pixels.
- *
- * @param graphCoordinate Coordinate that the point is to be displayed at.
- * @param paint Paint to use for the point.
- */
- private void drawPoint(GraphCoordinate graphCoordinate, Paint paint) {
-
- //Set paint.
- gc.setFill(paint);
-
- double pointDiameter = 10;
+ gc.restore();
- //Draw the point.
- drawCircle(graphCoordinate, pointDiameter);
}
+
/**
* Display given name and speed of boat at a graph coordinate
*
@@ -207,8 +200,10 @@ public class ResizableRaceCanvas extends ResizableCanvas {
* @param coordinate coordinate the text appears
* @param timeToNextMark The time until the boat reaches the next mark.
* @param timeSinceLastMark The time since the boat passed the last mark.
+ * @param textPaint The color of the text.
+ * @param fontSize The size of the font.
*/
- private void drawText(String name, String abbrev, double speed, GraphCoordinate coordinate, String timeToNextMark, String timeSinceLastMark) {
+ private void drawText(String name, String abbrev, double speed, GraphCoordinate coordinate, String timeToNextMark, String timeSinceLastMark, Paint textPaint, double fontSize) {
//The text to draw. Built during the function.
String text = "";
@@ -254,8 +249,16 @@ public class ResizableRaceCanvas extends ResizableCanvas {
yCoord += 30;
}
+ gc.save();
+
+ gc.setStroke(textPaint);
+ gc.setFill(textPaint);
+ gc.setFont(new Font(gc.getFont().getName(), fontSize));
+
//Draw text.
gc.fillText(text, xCoord, yCoord);
+
+ gc.restore();
}
@@ -271,7 +274,9 @@ public class ResizableRaceCanvas extends ResizableCanvas {
boat.getCurrentSpeed(),
this.map.convertGPS(boat.getPosition()),
boat.getTimeToNextMarkFormatted(this.visualiserRace.getVisualiserRaceState().getRaceClock().getCurrentTime()),
- boat.getTimeSinceLastMarkFormatted(this.visualiserRace.getVisualiserRaceState().getRaceClock().getCurrentTime()) );
+ boat.getTimeSinceLastMarkFormatted(this.visualiserRace.getVisualiserRaceState().getRaceClock().getCurrentTime()),
+ Color.BLACK,
+ 20 );
}
@@ -283,29 +288,51 @@ public class ResizableRaceCanvas extends ResizableCanvas {
*/
private void drawBoats() {
- for (VisualiserBoat boat : new ArrayList<>(visualiserRace.getVisualiserRaceState().getBoats())) {
+ List