Fixed countdown timer not scaling.

-Countdown timer now also uses an animation timer
-Added scaling factor to countdown timer
main
zwu18 9 years ago
parent ee65e7eba5
commit 57d30a7a02

@ -28,6 +28,24 @@
<artifactId>mockito-all</artifactId> <artifactId>mockito-all</artifactId>
<version>1.9.5</version> <version>1.9.5</version>
</dependency> </dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>

@ -31,7 +31,7 @@ public abstract class Race implements Runnable {
protected int scaleFactor; protected int scaleFactor;
private int SLEEP_TIME = 100; //time in milliseconds to pause in a paced loop private int SLEEP_TIME = 100; //time in milliseconds to pause in a paced loop
protected int PRERACE_TIME = 5000; //time in milliseconds to pause during pre-race protected int PRERACE_TIME = 15000; //time in milliseconds to pause during pre-race
private boolean timerEnabled = true; //boolean to determine if timer is ran private boolean timerEnabled = true; //boolean to determine if timer is ran
/** /**
@ -85,7 +85,7 @@ public abstract class Race implements Runnable {
setControllerListeners(); setControllerListeners();
initialiseBoats(); initialiseBoats();
if (timerEnabled) countdownTimer(); if (timerEnabled) countdownTimer();
simulateRace(); //simulateRace();
} }
/** /**
@ -100,37 +100,35 @@ public abstract class Race implements Runnable {
* 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() { protected void countdownTimer() {
long currentTime = System.currentTimeMillis(); new AnimationTimer() {
long startTime = currentTime + PRERACE_TIME; long currentTime = System.currentTimeMillis();
long minutes; long startTime = currentTime + (PRERACE_TIME/scaleFactor);
long currentTimeInSeconds; long minutes;
long remainingSeconds; long currentTimeInSeconds;
long hours; long remainingSeconds;
long timeLeft; long hours;
long timeLoopEnded; long timeLeft;
while (currentTime <= startTime) { @Override
timeLeft = startTime - currentTime; public void handle(long arg0) {
if (timeLeft == 0 && controller != null) { timeLeft = startTime - currentTime;
updateTime("Race is starting..."); if (timeLeft <= 0 && controller != null) {
} else { updateTime("Race is starting...");
currentTimeInSeconds = timeLeft / 1000; stop();
minutes = currentTimeInSeconds / 60; simulateRace();
remainingSeconds = currentTimeInSeconds % 60; } else {
hours = minutes / 60; currentTimeInSeconds = (timeLeft*scaleFactor) / 1000;
minutes = minutes % 60; minutes = currentTimeInSeconds / 60;
if (controller != null) { remainingSeconds = currentTimeInSeconds % 60;
updateTime(String.format("Race clock: -%02d:%02d:%02d", hours, minutes, remainingSeconds)); hours = minutes / 60;
} minutes = minutes % 60;
} if (controller != null) {
try { updateTime(String.format("Race clock: -%02d:%02d:%02d", hours, minutes, remainingSeconds));
timeLoopEnded = System.currentTimeMillis(); }
Thread.sleep(SLEEP_TIME - (timeLoopEnded - currentTime)); }
} catch (InterruptedException e) { currentTime = System.currentTimeMillis();
e.printStackTrace();
} }
currentTime = System.currentTimeMillis(); }.start();
}
} }
/** /**

Loading…
Cancel
Save