Implement race clock
-Added label to fxml racepane.fxml -Added calcTime method to calculate time elapsed -Added updateTime method in Race to update label text -Added setTimer in RaceController to update label text #story [16] #pair [fwy13, zwu18]
This commit is contained in:
@@ -2,11 +2,13 @@ package seng302.Controllers;
|
||||
|
||||
|
||||
import javafx.beans.property.ReadOnlyObjectWrapper;
|
||||
import javafx.beans.property.StringProperty;
|
||||
import javafx.beans.value.ObservableValue;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.canvas.GraphicsContext;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.control.TableColumn;
|
||||
import javafx.scene.control.TableView;
|
||||
import javafx.scene.control.cell.PropertyValueFactory;
|
||||
@@ -34,6 +36,9 @@ public class RaceController extends Controller{
|
||||
|
||||
ResizableRaceCanvas raceMap;
|
||||
|
||||
@FXML
|
||||
Label timer;
|
||||
|
||||
@FXML
|
||||
TableView boatInfoTable;
|
||||
@FXML
|
||||
@@ -125,5 +130,12 @@ public class RaceController extends Controller{
|
||||
|
||||
}
|
||||
|
||||
public void setTimer(String time){
|
||||
timer.setText(time);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package seng302.Model;
|
||||
|
||||
|
||||
import javafx.application.Platform;
|
||||
import javafx.beans.property.StringProperty;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableArray;
|
||||
import javafx.collections.ObservableList;
|
||||
@@ -19,6 +21,7 @@ public abstract class Race implements Runnable {
|
||||
protected ArrayList<Leg> legs;
|
||||
protected RaceController controller;
|
||||
protected int boatsFinished = 0;
|
||||
protected long totalTimeElapsed;
|
||||
|
||||
|
||||
private int SLEEP_TIME = 1000; //time in milliseconds to pause in a paced loop
|
||||
@@ -69,6 +72,26 @@ public abstract class Race implements Runnable {
|
||||
}
|
||||
|
||||
|
||||
private String calcTimer() {
|
||||
long minutes;
|
||||
long currentTimeInSeconds;
|
||||
long remainingSeconds;
|
||||
long hours;
|
||||
|
||||
currentTimeInSeconds = totalTimeElapsed / 1000;
|
||||
minutes = currentTimeInSeconds / 60;
|
||||
remainingSeconds = currentTimeInSeconds % 60;
|
||||
hours = minutes/60;
|
||||
return String.format("%02d:%02d:%02d", hours, minutes, remainingSeconds);
|
||||
}
|
||||
|
||||
private void updateTime(String time){
|
||||
|
||||
Platform.runLater(() -> {controller.setTimer(time);});
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Starts the Race Simulation, playing the race start to finish with the timescale.
|
||||
* This prints the boats participating, the order that the events occur in time order, and the respective information of the events.
|
||||
@@ -76,23 +99,15 @@ public abstract class Race implements Runnable {
|
||||
private void simulateRace() {
|
||||
|
||||
long timeRaceStarted = System.currentTimeMillis();
|
||||
long totalTimeElapsed;
|
||||
|
||||
long timeLoopStarted;
|
||||
long timeLoopEnded;
|
||||
long minutes;
|
||||
long currentTimeInSeconds;
|
||||
long remainingSeconds;
|
||||
|
||||
|
||||
while (boatsFinished < startingBoats.size()) {
|
||||
timeLoopStarted = System.currentTimeMillis();
|
||||
totalTimeElapsed = System.currentTimeMillis() - timeRaceStarted;
|
||||
long currentTime = System.currentTimeMillis() - timeRaceStarted;
|
||||
currentTimeInSeconds = currentTime / 1000;
|
||||
minutes = currentTimeInSeconds / 60;
|
||||
remainingSeconds = currentTimeInSeconds % 60;
|
||||
System.out.println(minutes + ":" + remainingSeconds);
|
||||
|
||||
|
||||
for (BoatInRace boat : startingBoats) {
|
||||
if (boat != null) {
|
||||
@@ -102,6 +117,7 @@ public abstract class Race implements Runnable {
|
||||
}
|
||||
|
||||
controller.updateMap(startingBoats);
|
||||
updateTime(calcTimer());
|
||||
try {
|
||||
timeLoopEnded = System.currentTimeMillis();
|
||||
Thread.sleep(SLEEP_TIME - (timeLoopEnded - timeLoopStarted));
|
||||
|
||||
Reference in New Issue
Block a user