Merge remote-tracking branch 'origin/race-timer-fixes' into layeredCanvas

# Conflicts:
#	visualiser/src/main/java/seng302/Controllers/StartController.java
main
Fan-Wu Yang 9 years ago
commit 565b7adaa2

@ -8,9 +8,5 @@ public class Constants {
public static final int NMToMetersConversion = 1852; // 1 nautical mile = 1852 meters public static final int NMToMetersConversion = 1852; // 1 nautical mile = 1852 meters
//Knots x this = meters per second.
public static final double KnotsToMetersPerSecondConversionFactor = 0.514444;
public static final double wakeScale = 10;
} }

@ -28,5 +28,4 @@ public class App extends Application {
stage.setScene(scene); stage.setScene(scene);
stage.show(); stage.show();
} }
} }

@ -20,11 +20,9 @@ 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.time.Duration; import java.text.DateFormat;
import java.time.Period; import java.text.SimpleDateFormat;
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.*;
/** /**
@ -42,15 +40,15 @@ 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;
private ZonedDateTime startingTime;
@FXML private Label raceStatusLabel; @FXML private Label raceStatusLabel;
@FXML private int PRERACE_TIME = 10;
//@FXML Button fifteenMinButton; //@FXML Button fifteenMinButton;
private RaceClock raceClock; private RaceClock raceClock;
private StreamedCourse raceData; private StreamedCourse raceData;
private long timeLeft = 1;
private int raceStat; private int raceStat;
private VisualiserInput visualiserInput; private VisualiserInput visualiserInput;
@ -60,9 +58,15 @@ public class StartController extends Controller implements Observer {
*/ */
public void startRaceNoScaling() { public void startRaceNoScaling() {
//startRace(1); //startRace(1);
while(visualiserInput.getRaceStatus() == null);
countdownTimer(); countdownTimer();
} }
private void startRace(int raceScale){
//fifteenMinButton.setDisable(true);
//countdownTimer(raceScale);
}
@Override @Override
public void initialize(URL location, ResourceBundle resources){ public void initialize(URL location, ResourceBundle resources){
raceData = new StreamedCourse(); raceData = new StreamedCourse();
@ -95,17 +99,19 @@ public class StartController extends Controller implements Observer {
} }
/** /**
* Countdown timer until race starts. Use PRERACE_TIME to set countdown duration. * Countdown timer until race starts.
*/ */
protected void countdownTimer() { protected void countdownTimer() {
new AnimationTimer() { new AnimationTimer() {
long currentTime = System.currentTimeMillis();
long startTime = currentTime + PRERACE_TIME;
DateFormat timerFormat = new SimpleDateFormat("'Race Clock:' -HH:mm:ss");
@Override @Override
public void handle(long arg0) { public void handle(long arg0) {
ZonedDateTime currentTime = raceClock.getTime(); timeLeft = startTime - currentTime;
//race about to start
raceStat = visualiserInput.getRaceStatus().getRaceStatus(); raceStat = visualiserInput.getRaceStatus().getRaceStatus();
raceStatusLabel.setText("Race Status: " + visualiserInput.getRaceStatus().getRaceStatus()); raceStatusLabel.setText("Race Status: " + visualiserInput.getRaceStatus().getRaceStatus());
if (raceStat == 2 || raceStat == 3) { if (raceStat==2 || raceStat == 3) {
updateTime("Race is starting..."); updateTime("Race is starting...");
stop(); stop();
parent.beginRace(visualiserInput); parent.beginRace(visualiserInput);
@ -113,9 +119,9 @@ public class StartController extends Controller implements Observer {
start.setVisible(false); start.setVisible(false);
} else { } else {
long seconds = startingTime.toLocalDateTime().until(currentTime.toLocalDateTime(), ChronoUnit.SECONDS); updateTime(timerFormat.format(currentTime));
updateTime(String.format("Race starts in: %d:%02d:%02d", seconds / 3600, (seconds % 3600) / 60, (seconds % 60)));
} }
currentTime = System.currentTimeMillis();
} }
}.start(); }.start();
} }
@ -136,8 +142,7 @@ 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();
startingTime = raceClock.getLocalTime(utcTime); raceStartLabel.setText(DateTimeFormatter.ofPattern(dateFormat).format(raceClock.getLocalTime(utcTime)));
raceStartLabel.setText(DateTimeFormatter.ofPattern(dateFormat).format(startingTime));
}); });
} }
@ -158,11 +163,10 @@ public class StartController extends Controller implements Observer {
} }
if (((StreamedCourse) o).hasReadCourse()) { if (((StreamedCourse) o).hasReadCourse()) {
Platform.runLater(() -> { Platform.runLater(() -> {
setRaceClock();
while(visualiserInput.getRaceStatus() == null); while(visualiserInput.getRaceStatus() == null);
setRaceClock();
setStartingTime(); setStartingTime();
setCurrentTime(); setCurrentTime();
startRaceNoScaling();
}); });
} }
} }
@ -177,6 +181,7 @@ 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