From 57d30a7a024cf76f5e4323d8e22fc77f41873d88 Mon Sep 17 00:00:00 2001 From: zwu18 Date: Thu, 6 Apr 2017 20:48:17 +1200 Subject: [PATCH] Fixed countdown timer not scaling. -Countdown timer now also uses an animation timer -Added scaling factor to countdown timer --- pom.xml | 18 ++++++++ src/main/java/seng302/Model/Race.java | 60 +++++++++++++-------------- 2 files changed, 47 insertions(+), 31 deletions(-) diff --git a/pom.xml b/pom.xml index a3e030d6..ce632987 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,24 @@ mockito-all 1.9.5 + + junit + junit + 4.12 + test + + + org.testng + testng + 6.11 + test + + + junit + junit + 4.12 + test + diff --git a/src/main/java/seng302/Model/Race.java b/src/main/java/seng302/Model/Race.java index 14679424..7afe86b2 100644 --- a/src/main/java/seng302/Model/Race.java +++ b/src/main/java/seng302/Model/Race.java @@ -31,7 +31,7 @@ public abstract class Race implements Runnable { protected int scaleFactor; 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 /** @@ -85,7 +85,7 @@ public abstract class Race implements Runnable { setControllerListeners(); initialiseBoats(); 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. */ protected void countdownTimer() { - long currentTime = System.currentTimeMillis(); - long startTime = currentTime + PRERACE_TIME; - long minutes; - long currentTimeInSeconds; - long remainingSeconds; - long hours; - long timeLeft; - long timeLoopEnded; + new AnimationTimer() { + long currentTime = System.currentTimeMillis(); + long startTime = currentTime + (PRERACE_TIME/scaleFactor); + long minutes; + long currentTimeInSeconds; + long remainingSeconds; + long hours; + long timeLeft; - while (currentTime <= startTime) { - timeLeft = startTime - currentTime; - if (timeLeft == 0 && controller != null) { - updateTime("Race is starting..."); - } else { - currentTimeInSeconds = timeLeft / 1000; - minutes = currentTimeInSeconds / 60; - remainingSeconds = currentTimeInSeconds % 60; - hours = minutes / 60; - minutes = minutes % 60; - if (controller != null) { - updateTime(String.format("Race clock: -%02d:%02d:%02d", hours, minutes, remainingSeconds)); - } - } - try { - timeLoopEnded = System.currentTimeMillis(); - Thread.sleep(SLEEP_TIME - (timeLoopEnded - currentTime)); - } catch (InterruptedException e) { - e.printStackTrace(); + @Override + public void handle(long arg0) { + timeLeft = startTime - currentTime; + if (timeLeft <= 0 && controller != null) { + updateTime("Race is starting..."); + stop(); + simulateRace(); + } else { + currentTimeInSeconds = (timeLeft*scaleFactor) / 1000; + minutes = currentTimeInSeconds / 60; + remainingSeconds = currentTimeInSeconds % 60; + hours = minutes / 60; + minutes = minutes % 60; + if (controller != null) { + updateTime(String.format("Race clock: -%02d:%02d:%02d", hours, minutes, remainingSeconds)); + } + } + currentTime = System.currentTimeMillis(); } - currentTime = System.currentTimeMillis(); - } + }.start(); } /**