Merge branch 'develop' into Story34_Sparklines

# Conflicts:
#	src/main/java/seng302/controllers/RaceViewController.java
#	src/main/java/seng302/models/Yacht.java
This commit is contained in:
Kusal Ekanayake
2017-05-24 18:56:04 +12:00
4 changed files with 98 additions and 40 deletions
@@ -35,6 +35,7 @@ import seng302.models.stream.StreamParser;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.*;
import seng302.models.stream.XMLParser.RaceXMLObject.Participant;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -100,6 +101,7 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
/** /**
* The important annotations have been changed, update this view * The important annotations have been changed, update this view
*
* @param importantAnnotationsState The current state of the selected annotations * @param importantAnnotationsState The current state of the selected annotations
*/ */
public void importantAnnotationsChanged(ImportantAnnotationsState importantAnnotationsState) { public void importantAnnotationsChanged(ImportantAnnotationsState importantAnnotationsState) {
@@ -325,7 +327,17 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
positionVbox.getChildren().removeAll(); positionVbox.getChildren().removeAll();
positionVbox.getStylesheets().add(getClass().getResource("/css/master.css").toString()); positionVbox.getStylesheets().add(getClass().getResource("/css/master.css").toString());
// list of racing boat id
ArrayList<Participant> participants = StreamParser.getXmlObject().getRaceXML()
.getParticipants();
ArrayList<Integer> participantIDs = new ArrayList<>();
for (Participant p : participants) {
participantIDs.add(p.getsourceID());
}
if (StreamParser.isRaceStarted()) {
for (Yacht boat : StreamParser.getBoatsPos().values()) { for (Yacht boat : StreamParser.getBoatsPos().values()) {
if (participantIDs.contains(boat.getSourceID())) { // check if the boat is racing
if (boat.getBoatStatus() == 3) { // 3 is finish status if (boat.getBoatStatus() == 3) { // 3 is finish status
Text textToAdd = new Text(boat.getPosition() + ". " + Text textToAdd = new Text(boat.getPosition() + ". " +
boat.getShortName() + " (Finished)"); boat.getShortName() + " (Finished)");
@@ -339,7 +351,18 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
textToAdd.setStyle(""); textToAdd.setStyle("");
positionVbox.getChildren().add(textToAdd); positionVbox.getChildren().add(textToAdd);
} }
}
}
} else {
for (Yacht boat : StreamParser.getBoats().values()) {
if (participantIDs.contains(boat.getSourceID())) { // check if the boat is racing
Text textToAdd = new Text(boat.getPosition() + ". " +
boat.getShortName() + " ");
textToAdd.setFill(Paint.valueOf("#d3d3d3"));
textToAdd.setStyle("");
positionVbox.getChildren().add(textToAdd);
}
}
} }
} }
@@ -420,6 +443,7 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
/** /**
* Display the important annotations for a specific BoatGroup * Display the important annotations for a specific BoatGroup
*
* @param bg The boat group to set the annotations for * @param bg The boat group to set the annotations for
*/ */
private void setBoatGroupImportantAnnotations(BoatGroup bg) { private void setBoatGroupImportantAnnotations(BoatGroup bg) {
@@ -475,7 +499,9 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
break; break;
// Important Annotations // Important Annotations
case 1: case 1:
includedCanvasController.getBoatGroups().forEach(this::setBoatGroupImportantAnnotations); for (BoatGroup bg : includedCanvasController.getBoatGroups()) {
setBoatGroupImportantAnnotations(bg);
}
break; break;
// All Annotations // All Annotations
case 2: case 2:
@@ -2,6 +2,7 @@ package seng302.controllers;
import java.io.IOException; import java.io.IOException;
import java.net.URL; import java.net.URL;
import java.util.ArrayList;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
@@ -23,8 +24,10 @@ import javafx.scene.layout.Pane;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import seng302.models.Yacht; import seng302.models.Yacht;
import seng302.models.stream.StreamParser; import seng302.models.stream.StreamParser;
import seng302.models.stream.XMLParser.RaceXMLObject.Participant;
public class StartScreenController implements Initializable { public class StartScreenController implements Initializable {
@FXML @FXML
private GridPane gridPane; private GridPane gridPane;
@FXML @FXML
@@ -55,12 +58,11 @@ public class StartScreenController implements Initializable {
contentPane.getChildren().removeAll(); contentPane.getChildren().removeAll();
contentPane.getChildren().clear(); contentPane.getChildren().clear();
contentPane.getStylesheets().add(getClass().getResource("/css/master.css").toString()); contentPane.getStylesheets().add(getClass().getResource("/css/master.css").toString());
contentPane.getChildren().addAll((Pane) FXMLLoader.load(getClass().getResource(jfxUrl))); contentPane.getChildren()
} .addAll((Pane) FXMLLoader.load(getClass().getResource(jfxUrl)));
catch(javafx.fxml.LoadException e){ } catch (javafx.fxml.LoadException e) {
e.printStackTrace(); e.printStackTrace();
} } catch (IOException e) {
catch(IOException e){
e.printStackTrace(); e.printStackTrace();
} }
} }
@@ -72,7 +74,8 @@ public class StartScreenController implements Initializable {
} }
/** /**
* Running a timer to update the livestream status on welcome screen. Update interval is 1 second. * Running a timer to update the livestream status on welcome screen. Update interval is 1
* second.
*/ */
public void startStream() { public void startStream() {
if (StreamParser.isStreamStatus()) { if (StreamParser.isStreamStatus()) {
@@ -102,8 +105,10 @@ public class StartScreenController implements Initializable {
updateTeamList(); updateTeamList();
timeTillLive.setTextFill(Color.RED); timeTillLive.setTextFill(Color.RED);
switchToRaceViewButton.setDisable(false); switchToRaceViewButton.setDisable(false);
String timerMinute = Long.toString(StreamParser.getTimeSinceStart() / 60); String timerMinute = Long
String timerSecond = Long.toString(StreamParser.getTimeSinceStart() % 60); .toString(StreamParser.getTimeSinceStart() / 60);
String timerSecond = Long
.toString(StreamParser.getTimeSinceStart() % 60);
if (timerSecond.length() == 1) { if (timerSecond.length() == 1) {
timerSecond = "0" + timerSecond; timerSecond = "0" + timerSecond;
} }
@@ -114,8 +119,10 @@ public class StartScreenController implements Initializable {
updateTeamList(); updateTeamList();
timeTillLive.setTextFill(Color.BLACK); timeTillLive.setTextFill(Color.BLACK);
switchToRaceViewButton.setDisable(false); switchToRaceViewButton.setDisable(false);
String timerMinute = Long.toString(-1 * StreamParser.getTimeSinceStart() / 60); String timerMinute = Long
String timerSecond = Long.toString(-1 * StreamParser.getTimeSinceStart() % 60); .toString(-1 * StreamParser.getTimeSinceStart() / 60);
String timerSecond = Long
.toString(-1 * StreamParser.getTimeSinceStart() % 60);
if (timerSecond.length() == 1) { if (timerSecond.length() == 1) {
timerSecond = "0" + timerSecond; timerSecond = "0" + timerSecond;
} }
@@ -155,7 +162,28 @@ public class StartScreenController implements Initializable {
new PropertyValueFactory<>("position") new PropertyValueFactory<>("position")
); );
data.addAll(StreamParser.getBoatsPos().values()); // check if the boat is racing
ArrayList<Participant> participants = StreamParser.getXmlObject().getRaceXML()
.getParticipants();
ArrayList<Integer> participantIDs = new ArrayList<>();
for (Participant p : participants) {
participantIDs.add(p.getsourceID());
}
// add boats to the start screen list
if (StreamParser.isRaceStarted()) { // if race is started, use StreamParser.getBoatsPos()
for (Yacht boat : StreamParser.getBoatsPos().values()) {
if (participantIDs.contains(boat.getSourceID())) {
data.add(boat);
}
}
} else { // else use StreamParser.getBoats()
for (Yacht boat : StreamParser.getBoats().values()) {
if (participantIDs.contains(boat.getSourceID())) {
data.add(boat);
}
}
}
teamList.refresh(); teamList.refresh();
} }
} }
+9 -5
View File
@@ -16,6 +16,7 @@ import java.text.SimpleDateFormat;
* also done outside Boat class because some old variables are not used anymore. * also done outside Boat class because some old variables are not used anymore.
*/ */
public class Yacht { public class Yacht {
// Used in boat group // Used in boat group
private Color colour; private Color colour;
private double velocity; private double velocity;
@@ -61,35 +62,39 @@ public class Yacht {
this.velocity = boatVelocity; this.velocity = boatVelocity;
this.shortName = shortName; this.shortName = shortName;
this.sourceID = id; this.sourceID = id;
index = 0;
} }
public Yacht(String boatType, Integer sourceID, String hullID, String shortName, String boatName, String country) { public Yacht(String boatType, Integer sourceID, String hullID, String shortName,
String boatName, String country) {
this.boatType = boatType; this.boatType = boatType;
this.sourceID = sourceID; this.sourceID = sourceID;
this.hullID = hullID; this.hullID = hullID;
this.shortName = shortName; this.shortName = shortName;
this.boatName = boatName; this.boatName = boatName;
this.country = country; this.country = country;
index = 0; this.position = "-";
} }
public String getBoatType() { public String getBoatType() {
return boatType; return boatType;
} }
public Integer getSourceID() { public Integer getSourceID() {
return sourceID; return sourceID;
} }
public String getHullID() { public String getHullID() {
return hullID; return hullID;
} }
public String getShortName() { public String getShortName() {
return shortName; return shortName;
} }
public String getBoatName() { public String getBoatName() {
return boatName; return boatName;
} }
public String getCountry() { public String getCountry() {
return country; return country;
} }
@@ -111,7 +116,6 @@ public class Yacht {
RaceViewController.updateYachtPositionSparkline(this, legNumber); RaceViewController.updateYachtPositionSparkline(this, legNumber);
} }
this.legNumber = legNumber; this.legNumber = legNumber;
} }
public Integer getPenaltiesAwarded() { public Integer getPenaltiesAwarded() {