mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 14:28:43 +00:00
Added method in mark group to draw lay lines, also added next mark to Yacht class.
#story[956]
This commit is contained in:
@@ -184,11 +184,18 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
|
|||||||
updateBoatSelectionComboBox();
|
updateBoatSelectionComboBox();
|
||||||
|
|
||||||
for (Yacht yacht : StreamParser.getBoatsPos().values()) {
|
for (Yacht yacht : StreamParser.getBoatsPos().values()) {
|
||||||
|
System.out.println("\n\nyacht.getBoatName() = " + yacht.getBoatName());
|
||||||
|
System.out.println("yacht.getLastMarkRounded() = " + yacht.getLastMarkRounded());
|
||||||
|
System.out.println("yacht.getNextMark() = " + yacht.getNextMark());
|
||||||
|
|
||||||
if (yacht.getLastMarkRounded() != null) {
|
if (yacht.getLastMarkRounded() != null) {
|
||||||
System.out.println(yacht.getLastMarkRounded().getName());
|
System.out.println(yacht.getLastMarkRounded().getName());
|
||||||
} else {
|
} else {
|
||||||
System.out.println("sup");
|
System.out.println("sup");
|
||||||
}
|
}
|
||||||
|
if (yacht.getNextMark() != null){
|
||||||
|
System.out.println("yacht = " + yacht.getNextMark().getName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import seng302.models.mark.Mark;
|
|||||||
|
|
||||||
import java.text.DateFormat;
|
import java.text.DateFormat;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import seng302.models.stream.XMLParser.RaceXMLObject.Corner;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Yacht class for the racing boat.
|
* Yacht class for the racing boat.
|
||||||
@@ -34,6 +35,7 @@ public class Yacht {
|
|||||||
// Mark rounding
|
// Mark rounding
|
||||||
private Long markRoundingTime;
|
private Long markRoundingTime;
|
||||||
private Mark lastMarkRounded;
|
private Mark lastMarkRounded;
|
||||||
|
private Mark nextMark;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used in EventTest and RaceTest.
|
* Used in EventTest and RaceTest.
|
||||||
@@ -181,4 +183,12 @@ public class Yacht {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return boatName;
|
return boatName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setNextMark(Mark nextMark) {
|
||||||
|
this.nextMark = nextMark;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Mark getNextMark(){
|
||||||
|
return nextMark;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,6 +45,36 @@ public class MarkGroup extends Group {
|
|||||||
super.getChildren().add(markCircle);
|
super.getChildren().add(markCircle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Point2D getPointRotation(Point2D ref, Double distance, Double angle){
|
||||||
|
Double newX = ref.getX() + (ref.getX() + distance -ref.getX())*Math.cos(angle) - (ref.getY() + distance -ref.getY())*Math.sin(angle);
|
||||||
|
Double newY = ref.getY() + (ref.getX() + distance -ref.getX())*Math.sin(angle) + (ref.getY() + distance -ref.getY())*Math.cos(angle);
|
||||||
|
|
||||||
|
return new Point2D(newX, newY);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a lay-line to the MarkGroup
|
||||||
|
* @param startPoint The mark where the lay line starts
|
||||||
|
* @param layLineAngle The angle the laylines point
|
||||||
|
* @param baseAngle The reference angle
|
||||||
|
*/
|
||||||
|
private void addLayLine(Point2D startPoint, Double layLineAngle, Double baseAngle){
|
||||||
|
|
||||||
|
Point2D ep1 = getPointRotation(startPoint, 50.0, baseAngle + -layLineAngle);
|
||||||
|
Point2D ep2 = getPointRotation(startPoint, 50.0, baseAngle + layLineAngle);
|
||||||
|
|
||||||
|
Line line1 = new Line(startPoint.getX(), startPoint.getY(), ep1.getX(), ep1.getY());
|
||||||
|
Line line2 = new Line(startPoint.getX(), startPoint.getY(), ep2.getX(), ep2.getY());
|
||||||
|
|
||||||
|
line1.setStrokeWidth(0.5);
|
||||||
|
line1.setStroke(Color.GREEN);
|
||||||
|
|
||||||
|
line2.setStrokeWidth(0.5);
|
||||||
|
line2.setStroke(Color.GREEN);
|
||||||
|
|
||||||
|
super.getChildren().addAll(line1, line2);
|
||||||
|
}
|
||||||
|
|
||||||
public MarkGroup(GateMark mark, Point2D points1, Point2D points2) {
|
public MarkGroup(GateMark mark, Point2D points1, Point2D points2) {
|
||||||
marks.add(mark.getSingleMark1());
|
marks.add(mark.getSingleMark1());
|
||||||
marks.add(mark.getSingleMark2());
|
marks.add(mark.getSingleMark2());
|
||||||
@@ -84,6 +114,8 @@ public class MarkGroup extends Group {
|
|||||||
}
|
}
|
||||||
super.getChildren().add(line);
|
super.getChildren().add(line);
|
||||||
|
|
||||||
|
addLayLine(points1, 12.0, 90.0);
|
||||||
|
addLayLine(points2, 12.0, 90.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void moveMarkTo (double x, double y, long raceId)
|
public void moveMarkTo (double x, double y, long raceId)
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
@@ -23,6 +24,7 @@ import org.xml.sax.InputSource;
|
|||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
import seng302.models.Yacht;
|
import seng302.models.Yacht;
|
||||||
import seng302.models.mark.Mark;
|
import seng302.models.mark.Mark;
|
||||||
|
import seng302.models.stream.XMLParser.RaceXMLObject.Corner;
|
||||||
import seng302.models.stream.packets.BoatPositionPacket;
|
import seng302.models.stream.packets.BoatPositionPacket;
|
||||||
import seng302.models.stream.packets.StreamPacket;
|
import seng302.models.stream.packets.StreamPacket;
|
||||||
|
|
||||||
@@ -446,6 +448,21 @@ public class StreamParser extends Thread{
|
|||||||
for (Mark mark : xmlObject.getRaceXML().getCompoundMarks()) {
|
for (Mark mark : xmlObject.getRaceXML().getCompoundMarks()) {
|
||||||
if (mark.getCompoundMarkID() == markId) {
|
if (mark.getCompoundMarkID() == markId) {
|
||||||
boats.get((int)subjectId).setLastMarkRounded(mark);
|
boats.get((int)subjectId).setLastMarkRounded(mark);
|
||||||
|
|
||||||
|
List<Corner> markSequence = xmlObject.getRaceXML().getCompoundMarkSequence();
|
||||||
|
|
||||||
|
for (int i = 0; i < markSequence.size() - 1; i++){
|
||||||
|
Corner corner = markSequence.get(i);
|
||||||
|
|
||||||
|
if (corner.getCompoundMarkID().equals(mark.getCompoundMarkID()) && (i + 1) < markSequence.size()){
|
||||||
|
Corner nextCorner = markSequence.get(i+1);
|
||||||
|
for (Mark m : xmlObject.getRaceXML().getCompoundMarks()){
|
||||||
|
if (m.getCompoundMarkID() == nextCorner.getCompoundMarkID()){
|
||||||
|
boats.get((int)subjectId).setNextMark(m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user