Fixed StartController countdown

- Removed obsolete timer related code
- Consistently use RaceClock throughout StartController

#story[782]
main
cbt24 9 years ago
parent e345f08ad8
commit 336a15d1a2

@ -20,9 +20,11 @@ import seng302.VisualiserInput;
import java.io.IOException; import java.io.IOException;
import java.net.Socket; import java.net.Socket;
import java.net.URL; import java.net.URL;
import java.text.DateFormat; import java.time.Duration;
import java.text.SimpleDateFormat; import java.time.Period;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
/** /**
@ -40,14 +42,14 @@ public class StartController extends Controller implements Observer {
@FXML private TableColumn<Boat, String> boatCodeColumn; @FXML private TableColumn<Boat, String> boatCodeColumn;
@FXML private Label timeZoneTime; @FXML private Label timeZoneTime;
@FXML private Label timer; @FXML private Label timer;
@FXML private int PRERACE_TIME = 10;
private ZonedDateTime startingTime;
//@FXML Button fifteenMinButton; //@FXML Button fifteenMinButton;
private RaceClock raceClock; private RaceClock raceClock;
private StreamedCourse raceData; private StreamedCourse raceData;
private long timeLeft = 1;
private VisualiserInput visualiserInput; private VisualiserInput visualiserInput;
@ -56,13 +58,7 @@ public class StartController extends Controller implements Observer {
*/ */
public void startRaceNoScaling() { public void startRaceNoScaling() {
//startRace(1); //startRace(1);
while(visualiserInput.getRaceStatus() == null); countdownTimer();
countdownTimer(1);
}
private void startRace(int raceScale){
//fifteenMinButton.setDisable(true);
//countdownTimer(raceScale);
} }
@Override @Override
@ -99,14 +95,11 @@ public class StartController extends Controller implements Observer {
/** /**
* Countdown timer until race starts. Use PRERACE_TIME to set countdown duration. * Countdown timer until race starts. Use PRERACE_TIME to set countdown duration.
*/ */
protected void countdownTimer(int scaleFactor) { protected void countdownTimer() {
new AnimationTimer() { new AnimationTimer() {
long currentTime = System.currentTimeMillis();
long startTime = currentTime + (PRERACE_TIME/scaleFactor);
DateFormat timerFormat = new SimpleDateFormat("'Race Clock:' -HH:mm:ss");
@Override @Override
public void handle(long arg0) { public void handle(long arg0) {
timeLeft = startTime - currentTime; ZonedDateTime currentTime = raceClock.getTime();
if (visualiserInput.getRaceStatus().getRaceStatus()==2) { if (visualiserInput.getRaceStatus().getRaceStatus()==2) {
updateTime("Race is starting..."); updateTime("Race is starting...");
stop(); stop();
@ -115,10 +108,9 @@ public class StartController extends Controller implements Observer {
start.setVisible(false); start.setVisible(false);
} else { } else {
updateTime(timerFormat.format(currentTime)); long seconds = startingTime.toLocalDateTime().until(currentTime.toLocalDateTime(), ChronoUnit.SECONDS);
updateTime(String.format("Race starts in: %d:%02d:%02d", seconds/3600, (seconds%3600)/60, (seconds%60)));
} }
currentTime = System.currentTimeMillis();
} }
}.start(); }.start();
} }
@ -130,11 +122,7 @@ public class StartController extends Controller implements Observer {
new AnimationTimer() { new AnimationTimer() {
@Override @Override
public void handle(long arg0) { public void handle(long arg0) {
if (timeLeft > 0) { raceClock.updateTime();
raceClock.updateTime();
} else {
stop();
}
} }
}.start(); }.start();
} }
@ -143,7 +131,8 @@ public class StartController extends Controller implements Observer {
String dateFormat = "'Starting time:' HH:mm dd/MM/YYYY"; String dateFormat = "'Starting time:' HH:mm dd/MM/YYYY";
Platform.runLater(()-> { Platform.runLater(()-> {
long utcTime = visualiserInput.getRaceStatus().getExpectedStartTime(); long utcTime = visualiserInput.getRaceStatus().getExpectedStartTime();
raceStartLabel.setText(DateTimeFormatter.ofPattern(dateFormat).format(raceClock.getLocalTime(utcTime))); startingTime = raceClock.getLocalTime(utcTime);
raceStartLabel.setText(DateTimeFormatter.ofPattern(dateFormat).format(startingTime));
}); });
} }
@ -168,6 +157,7 @@ public class StartController extends Controller implements Observer {
while(visualiserInput.getRaceStatus() == null); while(visualiserInput.getRaceStatus() == null);
setStartingTime(); setStartingTime();
setCurrentTime(); setCurrentTime();
startRaceNoScaling();
}); });
} }
} }
@ -182,7 +172,6 @@ public class StartController extends Controller implements Observer {
try { try {
visualiserInput = new VisualiserInput(socket, raceData); visualiserInput = new VisualiserInput(socket, raceData);
new Thread(visualiserInput).start(); new Thread(visualiserInput).start();
startRaceNoScaling();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }

Loading…
Cancel
Save