Merge branch 'splitIntoTwoModules' of https://eng-git.canterbury.ac.nz/seng302-2017/team-7 into splitIntoTwoModules
This commit is contained in:
@@ -10,6 +10,7 @@ import seng302.Model.Boat;
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
import javax.xml.transform.OutputKeys;
|
||||
import javax.xml.transform.Transformer;
|
||||
import javax.xml.transform.TransformerException;
|
||||
import javax.xml.transform.TransformerFactory;
|
||||
@@ -56,6 +57,8 @@ public class BoatData {
|
||||
// write the content into xml file
|
||||
TransformerFactory transformerFactory = TransformerFactory.newInstance();
|
||||
Transformer transformer = transformerFactory.newTransformer();
|
||||
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
|
||||
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
|
||||
DOMSource source = new DOMSource(doc);
|
||||
|
||||
//Serialize document.
|
||||
@@ -63,6 +66,8 @@ public class BoatData {
|
||||
StreamResult result = new StreamResult(stringWriter);
|
||||
transformer.transform(source, result);
|
||||
|
||||
|
||||
System.out.println(stringWriter.toString());
|
||||
return stringWriter.toString();
|
||||
|
||||
|
||||
|
||||
@@ -61,6 +61,9 @@ public class BoatLocationDecoder {
|
||||
currentSet = Arrays.copyOfRange(encodedBoatLocation,52, 54);
|
||||
rudderAngle = Arrays.copyOfRange(encodedBoatLocation,54, 56);
|
||||
|
||||
// System.out.println(bytesToInt(sourceID));
|
||||
// System.out.println(bytesToInt(boatSpeed));
|
||||
|
||||
message = new BoatLocationMessage(messageVersionNumber, bytesToLong(time),
|
||||
bytesToInt(sourceID), bytesToInt(seqNum),
|
||||
deviceType, bytesToInt(latitude),
|
||||
|
||||
@@ -166,7 +166,7 @@ public class BoatLocationMessage extends AC35Data
|
||||
this.roll = 0;
|
||||
this.boatSpeed = convertBoatSpeedDoubleToInt(boatSpeed);
|
||||
this.boatCOG = 0;
|
||||
this.boatSOG = 0;
|
||||
this.boatSOG = convertBoatSpeedDoubleToInt(boatSpeed);
|
||||
this.apparentWindSpeed = 0;
|
||||
this.apparentWindAngle = 0;
|
||||
this.trueWindSpeed = 0;
|
||||
@@ -190,8 +190,6 @@ public class BoatLocationMessage extends AC35Data
|
||||
int coordinateInt = (int) ((coordinate / 180.0) * 2147483648.0);
|
||||
|
||||
return coordinateInt;
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,8 +6,10 @@ import javafx.beans.value.ChangeListener;
|
||||
import javafx.beans.value.ObservableValue;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.Node;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.layout.GridPane;
|
||||
import org.w3c.dom.NodeList;
|
||||
import org.xml.sax.SAXException;
|
||||
import seng302.Mock.StreamedRace;
|
||||
import seng302.Model.*;
|
||||
@@ -129,7 +131,7 @@ public class RaceController extends Controller {
|
||||
raceMap.drawRaceMap();
|
||||
raceMap.setVisible(true);
|
||||
|
||||
canvasBase.getChildren().add(raceMap);
|
||||
canvasBase.getChildren().add(0, raceMap);
|
||||
race.setVisible(true);
|
||||
|
||||
//Initialize save annotation array, fps listener, and annotation listeners
|
||||
|
||||
@@ -22,10 +22,8 @@ import java.net.Socket;
|
||||
import java.net.URL;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.List;
|
||||
import java.util.Observable;
|
||||
import java.util.Observer;
|
||||
import java.util.ResourceBundle;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Created by esa46 on 6/04/17.
|
||||
@@ -35,6 +33,7 @@ public class StartController extends Controller implements Observer {
|
||||
@FXML private GridPane start;
|
||||
@FXML private AnchorPane startWrapper;
|
||||
@FXML private Label raceTitleLabel;
|
||||
@FXML private Label raceStartLabel;
|
||||
|
||||
@FXML private TableView<Boat> boatNameTable;
|
||||
@FXML private TableColumn<Boat, String> boatNameColumn;
|
||||
@@ -103,7 +102,6 @@ public class StartController extends Controller implements Observer {
|
||||
long currentTime = System.currentTimeMillis();
|
||||
long startTime = currentTime + (PRERACE_TIME/scaleFactor);
|
||||
DateFormat timerFormat = new SimpleDateFormat("'Race Clock:' -HH:mm:ss");
|
||||
|
||||
@Override
|
||||
public void handle(long arg0) {
|
||||
timeLeft = startTime - currentTime;
|
||||
@@ -122,7 +120,7 @@ public class StartController extends Controller implements Observer {
|
||||
}.start();
|
||||
}
|
||||
|
||||
protected void setRaceClock() {
|
||||
private void setRaceClock() {
|
||||
raceClock = new RaceClock(raceData.getZonedDateTime());
|
||||
timeZoneTime.textProperty().bind(raceClock.timeStringProperty());
|
||||
|
||||
@@ -138,6 +136,20 @@ public class StartController extends Controller implements Observer {
|
||||
}.start();
|
||||
}
|
||||
|
||||
private void setStartingTime() {
|
||||
String dateFormat = "'Starting time:' HH:mm dd/MM/YYYY";
|
||||
Platform.runLater(()-> {
|
||||
long utcTime = visualiserInput.getRaceStatus().getExpectedStartTime();
|
||||
raceStartLabel.setText(DateTimeFormatter.ofPattern(dateFormat).format(raceClock.getLocalTime(utcTime)));
|
||||
});
|
||||
}
|
||||
|
||||
private void setCurrentTime() {
|
||||
Platform.runLater(()->
|
||||
raceClock.setTime(raceClock.getLocalTime(visualiserInput.getRaceStatus().getCurrentTime()))
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Observable o, Object arg) {
|
||||
if(o instanceof StreamedCourse) {
|
||||
@@ -148,7 +160,12 @@ public class StartController extends Controller implements Observer {
|
||||
Platform.runLater(() -> raceTitleLabel.setText(((StreamedCourse)o).getRegattaName()));
|
||||
}
|
||||
if (((StreamedCourse) o).hasReadCourse()) {
|
||||
Platform.runLater(() -> setRaceClock());
|
||||
Platform.runLater(() -> {
|
||||
setRaceClock();
|
||||
while(visualiserInput.getRaceStatus() == null);
|
||||
setStartingTime();
|
||||
setCurrentTime();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,6 +58,10 @@ public class StreamedRace extends Race {
|
||||
|
||||
int legNumber = boatStatusMessage.getLegNumber();
|
||||
|
||||
if (legNumber >= 1 && legNumber < legs.size()) {
|
||||
boat.setCurrentLeg(legs.get(legNumber));
|
||||
}
|
||||
|
||||
if (boatStatus == BoatStatus.DNF) {
|
||||
boat.setDnf(true);
|
||||
} else if (boatStatus == BoatStatus.FINISHED || legNumber > raceData.getLegs().size()) {
|
||||
@@ -84,7 +88,7 @@ public class StreamedRace extends Race {
|
||||
double lon = boatLocationMessage.getLongitudeDouble();
|
||||
boat.setCurrentPosition(new GPSCoordinate(lat, lon));
|
||||
boat.setHeading(boatLocationMessage.getHeadingDegrees());
|
||||
boat.setVelocity(boatLocationMessage.getBoatSpeed() * MMPS_TO_KN);
|
||||
boat.setVelocity(boatLocationMessage.getBoatSOG() * MMPS_TO_KN);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -247,7 +247,7 @@ public abstract class Race implements Runnable {
|
||||
for(Boat boat: startingBoats) {
|
||||
if(boat != null) {
|
||||
boat.setPosition(Integer.toString(startingBoats.indexOf(boat) + 1));
|
||||
if (boat.getCurrentLeg().getName().equals("DNF") || boat.getCurrentLeg().getLegNumber() == 0)
|
||||
if (boat.isDnf() || !boat.isStarted() || boat.getCurrentLeg().getLegNumber() < 0)
|
||||
boat.setPosition("-");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import java.lang.*?>
|
||||
<?import javafx.scene.control.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
<?import javafx.scene.text.*?>
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.control.Label?>
|
||||
<?import javafx.scene.control.TableColumn?>
|
||||
@@ -10,7 +14,7 @@
|
||||
<?import javafx.scene.layout.RowConstraints?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
|
||||
<AnchorPane fx:id="startWrapper" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" visible="false" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="seng302.Controllers.StartController">
|
||||
<AnchorPane fx:id="startWrapper" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" visible="false" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="seng302.Controllers.StartController">
|
||||
<children>
|
||||
<GridPane fx:id="start" prefHeight="600.0" prefWidth="780.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
<columnConstraints>
|
||||
@@ -41,7 +45,7 @@
|
||||
</TableView>
|
||||
<Label fx:id="timeZoneTime" contentDisplay="CENTER" text="Local time..." GridPane.columnIndex="2" GridPane.halignment="CENTER" GridPane.rowIndex="3" GridPane.valignment="CENTER" />
|
||||
<Label fx:id="timer" text=" " GridPane.columnIndex="2" GridPane.halignment="CENTER" GridPane.rowIndex="5" />
|
||||
<Label fx:id="raceStartLabel" text="Starting time..." visible="false" GridPane.columnIndex="2" GridPane.halignment="CENTER" GridPane.rowIndex="1" />
|
||||
<Label fx:id="raceStartLabel" text="Starting time..." GridPane.columnIndex="2" GridPane.halignment="CENTER" GridPane.rowIndex="1" />
|
||||
<Label fx:id="raceTitleLabel" text="Welcome to RaceVision" GridPane.columnIndex="1" GridPane.columnSpan="3" GridPane.halignment="CENTER">
|
||||
<font>
|
||||
<Font size="36.0" />
|
||||
|
||||
Reference in New Issue
Block a user