Fan-Wu Yang 9 years ago
commit 15fd24203d

@ -24,7 +24,8 @@ public abstract class Race implements Runnable {
protected long totalTimeElapsed; protected long totalTimeElapsed;
private int SLEEP_TIME = 100; //time in milliseconds to pause in a paced loop private int SLEEP_TIME = 25; //time in milliseconds to pause in a paced loop
private int PRERACE_TIME = Integer.MAX_VALUE; //time in milliseconds to pause during pre-race
/** /**
* Initailiser for Race * Initailiser for Race
@ -53,6 +54,7 @@ public abstract class Race implements Runnable {
public void run() { public void run() {
setControllerListeners(); setControllerListeners();
preRace(); preRace();
countdownTimer();
simulateRace(); simulateRace();
} }
@ -73,6 +75,34 @@ public abstract class Race implements Runnable {
} }
private void countdownTimer() {
long currentTime = System.currentTimeMillis();
long startTime = currentTime + PRERACE_TIME;
long minutes;
long currentTimeInSeconds;
long remainingSeconds;
long hours;
long timeLeft;
long timeLoopEnded;
while (currentTime <= startTime) {
timeLeft = startTime - currentTime;
currentTimeInSeconds = timeLeft / 1000;
minutes = currentTimeInSeconds / 60;
remainingSeconds = currentTimeInSeconds % 60;
hours = minutes / 60;
minutes = minutes % 60;
updateTime(String.format("Time until race starts: %02d:%02d:%02d", hours, minutes, remainingSeconds));
try {
timeLoopEnded = System.currentTimeMillis();
Thread.sleep(SLEEP_TIME - (timeLoopEnded - currentTime));
} catch (InterruptedException e) {
e.printStackTrace();
}
currentTime = System.currentTimeMillis();
}
}
private String calcTimer() { private String calcTimer() {
long minutes; long minutes;
long currentTimeInSeconds; long currentTimeInSeconds;
@ -82,8 +112,9 @@ public abstract class Race implements Runnable {
currentTimeInSeconds = totalTimeElapsed / 1000; currentTimeInSeconds = totalTimeElapsed / 1000;
minutes = currentTimeInSeconds / 60; minutes = currentTimeInSeconds / 60;
remainingSeconds = currentTimeInSeconds % 60; remainingSeconds = currentTimeInSeconds % 60;
hours = minutes/60; hours = minutes / 60;
return String.format("%02d:%02d:%02d", hours, minutes, remainingSeconds); minutes = minutes % 60;
return String.format("Race clock: %02d:%02d:%02d", hours, minutes, remainingSeconds);
} }
private void updateTime(String time){ private void updateTime(String time){

Loading…
Cancel
Save