mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 06:18:44 +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();
|
||||
|
||||
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) {
|
||||
System.out.println(yacht.getLastMarkRounded().getName());
|
||||
} else {
|
||||
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.SimpleDateFormat;
|
||||
import seng302.models.stream.XMLParser.RaceXMLObject.Corner;
|
||||
|
||||
/**
|
||||
* Yacht class for the racing boat.
|
||||
@@ -34,6 +35,7 @@ public class Yacht {
|
||||
// Mark rounding
|
||||
private Long markRoundingTime;
|
||||
private Mark lastMarkRounded;
|
||||
private Mark nextMark;
|
||||
|
||||
/**
|
||||
* Used in EventTest and RaceTest.
|
||||
@@ -181,4 +183,12 @@ public class Yacht {
|
||||
public String toString() {
|
||||
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);
|
||||
}
|
||||
|
||||
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) {
|
||||
marks.add(mark.getSingleMark1());
|
||||
marks.add(mark.getSingleMark2());
|
||||
@@ -84,6 +114,8 @@ public class MarkGroup extends Group {
|
||||
}
|
||||
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)
|
||||
|
||||
@@ -9,6 +9,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TimeZone;
|
||||
import java.util.TreeMap;
|
||||
@@ -23,6 +24,7 @@ import org.xml.sax.InputSource;
|
||||
import org.xml.sax.SAXException;
|
||||
import seng302.models.Yacht;
|
||||
import seng302.models.mark.Mark;
|
||||
import seng302.models.stream.XMLParser.RaceXMLObject.Corner;
|
||||
import seng302.models.stream.packets.BoatPositionPacket;
|
||||
import seng302.models.stream.packets.StreamPacket;
|
||||
|
||||
@@ -446,7 +448,22 @@ public class StreamParser extends Thread{
|
||||
for (Mark mark : xmlObject.getRaceXML().getCompoundMarks()) {
|
||||
if (mark.getCompoundMarkID() == markId) {
|
||||
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