Fixed broken race timer and timer now using stream timer data.

#story[818]
This commit is contained in:
Zhi You Tan
2017-04-28 21:44:23 +12:00
parent b939086e10
commit f3ee618900
2 changed files with 28 additions and 8 deletions
@@ -12,6 +12,7 @@ import javafx.scene.control.CheckBox;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Text;
import javafx.util.Duration;
import seng302.models.Boat;
@@ -19,6 +20,7 @@ import seng302.models.Event;
import seng302.models.Race;
import seng302.models.TimelineInfo;
import seng302.models.parsers.ConfigParser;
import seng302.models.parsers.StreamParser;
import java.io.IOException;
import java.util.*;
@@ -65,7 +67,7 @@ public class RaceViewController extends Thread{
includedCanvasController.setup(this);
includedCanvasController.initializeCanvas();
//initializeTimer();
initializeTimer();
initializeSettings();
//set wind direction!!!!!!! can't find another place to put my code --haoming
@@ -102,12 +104,11 @@ public class RaceViewController extends Thread{
timerTimeline.getKeyFrames().add(
new KeyFrame(Duration.seconds(1),
event -> {
// Stop timer if race is finished
if (this.race.isRaceFinished()) {
this.timerTimeline.stop();
if (StreamParser.isRaceFinished()) {
timerLabel.setFill(Color.RED);
timerLabel.setText("Race Finished!");
} else {
timerLabel.setText(convertTimeToMinutesSeconds(race.getRaceTime()));
this.race.incrementRaceTime();
timerLabel.setText(currentTimer());
}
})
);
@@ -262,6 +263,20 @@ public class RaceViewController extends Thread{
return String.format("%02d:%02d", time / 60, time % 60);
}
private String currentTimer() {
String timerString = "0:00 minutes";
if (StreamParser.getTimeSinceStart() > 0 && StreamParser.getTimeSinceStart() % 10 == 0) {
Long timerMinute = StreamParser.getTimeSinceStart() / 60;
Long timerSecond = StreamParser.getTimeSinceStart() % 60;
timerString = "-" + timerMinute + "." + timerSecond + " minutes";
} else if (StreamParser.getTimeSinceStart() % 10 == 0) {
Long timerMinute = -1 * StreamParser.getTimeSinceStart() / 60;
Long timerSecond = -1 * StreamParser.getTimeSinceStart() % 60;
timerString = timerMinute + "." + timerSecond + " minutes";
}
return timerString;
}
public void stopTimer() {
timerTimeline.stop();
}