From b939086e108b503e9a538ce6f530582219ec646d Mon Sep 17 00:00:00 2001 From: Zhi You Tan Date: Fri, 28 Apr 2017 21:28:34 +1200 Subject: [PATCH] Updated welcome screen to show if race is finished or starting #story[572] --- .../java/seng302/controllers/Controller.java | 16 +++++++++++++++- .../seng302/models/parsers/StreamParser.java | 16 +++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/main/java/seng302/controllers/Controller.java b/src/main/java/seng302/controllers/Controller.java index 94847735..44139c6f 100644 --- a/src/main/java/seng302/controllers/Controller.java +++ b/src/main/java/seng302/controllers/Controller.java @@ -53,6 +53,9 @@ public class Controller implements Initializable { } + /** + * Running a timer to update the livestream status on welcome screen. Update interval is 500 miliseconds. + */ public void startStream() { if (StreamParser.isStreamStatus()) { streamButton.setVisible(false); @@ -64,7 +67,18 @@ public class Controller implements Initializable { @Override public void run() { Platform.runLater(() -> { - if (StreamParser.getTimeSinceStart() != 0) { + if (StreamParser.isRaceFinished()) { + timeTillLive.setTextFill(Color.RED); + timeTillLive.setText("Race finished! Waiting for new race..."); + switchToRaceViewButton.setDisable(true); + } else if (StreamParser.getTimeSinceStart() > 0 && StreamParser.getTimeSinceStart() % 10 == 0) { + timeTillLive.setTextFill(Color.RED); + switchToRaceViewButton.setDisable(false); + Long timerMinute = StreamParser.getTimeSinceStart() / 60; + Long timerSecond = StreamParser.getTimeSinceStart() % 60; + String timerString = "-" + timerMinute + "." + timerSecond + " minutes"; + timeTillLive.setText(timerString); + } else if (StreamParser.getTimeSinceStart() % 10 == 0) { timeTillLive.setTextFill(Color.BLACK); switchToRaceViewButton.setDisable(false); Long timerMinute = -1 * StreamParser.getTimeSinceStart() / 60; diff --git a/src/main/java/seng302/models/parsers/StreamParser.java b/src/main/java/seng302/models/parsers/StreamParser.java index 32d2eb4e..acb8e0f8 100644 --- a/src/main/java/seng302/models/parsers/StreamParser.java +++ b/src/main/java/seng302/models/parsers/StreamParser.java @@ -32,8 +32,9 @@ public class StreamParser extends Thread{ private String threadName; private Thread t; private static boolean raceStarted = false; + private static boolean raceFinished = false; private static boolean streamStatus = false; - private static long timeSinceStart = 0; + private static long timeSinceStart = -1; public StreamParser(String threadName){ this.threadName = threadName; @@ -145,12 +146,16 @@ public class StreamParser extends Thread{ format.setTimeZone(TimeZone.getTimeZone("UTC")); long timeTillStart = ((new Date (expectedStartTime)).getTime() - (new Date (currentTime)).getTime())/1000; if (timeTillStart > 0 && timeTillStart % 10 == 0) { + timeSinceStart = timeTillStart; System.out.println("Time till start: " + timeTillStart + " Seconds"); } else { if (raceStatus == 4 || raceStatus == 8){ + raceFinished = true; + raceStarted = false; System.out.println("RACE HAS FINISHED"); } else if (!raceStarted){ raceStarted = true; + raceFinished = false; System.out.println("RACE HAS STARTED"); } if (timeTillStart % 10 == 0){ @@ -430,5 +435,14 @@ public class StreamParser extends Thread{ public static long getTimeSinceStart() { return timeSinceStart; } + + /** + * return false if race not finished, true otherwise + * + * @return race finished status + */ + public static boolean isRaceFinished() { + return raceFinished; + } }