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

Loading…
Cancel
Save