Merge remote-tracking branch 'origin/wake_remake' into develop

# Conflicts:
#	src/main/java/seng302/App.java
This commit is contained in:
Zhi You Tan
2017-05-02 22:09:03 +12:00
6 changed files with 57 additions and 19 deletions
@@ -5,7 +5,6 @@ import javafx.geometry.Point3D;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import seng302.models.Boat;
import seng302.models.parsers.packets.BoatPositionPacket;
import seng302.models.parsers.packets.StreamPacket;
@@ -38,7 +37,8 @@ public class StreamParser extends Thread{
private static boolean raceFinished = false;
private static boolean streamStatus = false;
private static long timeSinceStart = -1;
private static List<Boat> boats = new ArrayList<>();
private static List<XMLParser.BoatXMLObject.Boat> boats = new ArrayList<>();
private static double windDirection = 0;
/**
* Used to initialise the thread name and stream parser object so a thread can be executed
@@ -194,12 +194,15 @@ public class StreamParser extends Thread{
timeSinceStart = timeTillStart;
}
long windDir = bytesToLong(Arrays.copyOfRange(payload,18,20));
double windDirFactor = 0x4000 / 90; //0x4000 is 90 degrees, 0x8000 is 180 degrees, etc...
windDirection = windDir / windDirFactor;
long windSpeed = bytesToLong(Arrays.copyOfRange(payload,20,22));
int noBoats = payload[22];
int raceType = payload[23];
ArrayList<String> boatStatuses = new ArrayList<>();
for (int i = 0; i < noBoats; i++){
String boatStatus = "SourceID: " + bytesToLong(Arrays.copyOfRange(payload,24 + (i * 20),28+ (i * 20)));
Long boatStatusSourceID = bytesToLong(Arrays.copyOfRange(payload,24 + (i * 20),28+ (i * 20)));
String boatStatus = "SourceID: " + boatStatusSourceID;
boatStatus += "\nBoat Status: " + (int)payload[28 + (i * 20)];
boatStatus += "\nLegNumber: " + (int)payload[29 + (i * 20)];
boatStatus += "\nPenaltiesAwarded: " + (int)payload[29 + (i * 20)];
@@ -255,6 +258,9 @@ public class StreamParser extends Thread{
}
xmlObject.constructXML(doc, messageType);
if (messageType == 7) { //7 is the boat XML
boats = xmlObject.getBoatXML().getCompetingBoats();
}
}
/**
@@ -474,7 +480,7 @@ public class StreamParser extends Thread{
*
* @return list of boats
*/
public static List<Boat> getBoats() {
public static List<XMLParser.BoatXMLObject.Boat> getBoats() {
return boats;
}
@@ -487,5 +493,14 @@ public class StreamParser extends Thread{
public static XMLParser getXmlObject() {
return xmlObject;
}
/**
* returns the wind direction in degrees
*
* @return a double wind direction value
*/
public static double getWindDirection() {
return windDirection;
}
}
@@ -6,6 +6,7 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.util.ArrayList;
import java.util.List;
/**
* Class to create an XML object from the XML Packet Messages.
@@ -392,6 +393,8 @@ public class XMLParser {
//Boats
ArrayList<Boat> boats;
//Competing boats
List<Boat> competingBoats = new ArrayList<>();
/**
* Constructor for a BoatXMLObject.
@@ -426,6 +429,9 @@ public class XMLParser {
if (currentBoat.getNodeName().equals("Boat")) {
Boat boat = new Boat(currentBoat);
this.boats.add(boat);
if (boat.getBoatType().equals("Yacht")) {
competingBoats.add(boat);
}
}
//System.out.println(this.getBoats());
}
@@ -441,6 +447,9 @@ public class XMLParser {
public Double getCourseZoneSize() { return courseZoneSize; }
public ArrayList<Double> getZoneLimits() { return zoneLimits; }
public ArrayList<Boat> getBoats() { return boats; }
public List<Boat> getCompetingBoats() {
return competingBoats;
}
public class Boat {