Mock race runs without an fx component
#story[778]
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package seng302;
|
||||
|
||||
|
||||
import javafx.application.Application;
|
||||
import javafx.stage.Stage;
|
||||
import org.xml.sax.SAXException;
|
||||
import seng302.Model.ConstantVelocityRace;
|
||||
import seng302.Model.Race;
|
||||
@@ -8,7 +10,7 @@ import seng302.Model.Race;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
import java.io.IOException;
|
||||
|
||||
public class App{
|
||||
public class App extends Application {
|
||||
|
||||
/**
|
||||
* Entry point for running the programme
|
||||
@@ -16,6 +18,11 @@ public class App{
|
||||
* @param args for starting the programme
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
launch(args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start(Stage primaryStage) {
|
||||
try {
|
||||
RaceDataSource raceData = new RaceXMLReader("raceXML/bermuda_AC35.xml");
|
||||
ConstantVelocityRace newRace = new ConstantVelocityRace(raceData, 15);
|
||||
@@ -28,7 +35,6 @@ public class App{
|
||||
} catch (ParserConfigurationException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -269,22 +269,6 @@ public class BoatInRace extends Boat {
|
||||
this.position.set(position);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a new point to boat's track.
|
||||
* @param coordinate of point on track
|
||||
* @return whether add is successful
|
||||
* @see seng302.Model.TrackPoint
|
||||
*/
|
||||
public boolean addTrackPoint(GPSCoordinate coordinate) {
|
||||
Boolean added = System.currentTimeMillis() >= nextValidTime;
|
||||
long currentTime = System.currentTimeMillis();
|
||||
if (added && this.started) {
|
||||
nextValidTime = currentTime + (long) trackPointTimeInterval;
|
||||
track.add(new TrackPoint(coordinate, currentTime, TRACK_POINT_LIMIT * (long) trackPointTimeInterval));
|
||||
}
|
||||
return added;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the boat's sampled track between start of race and current time.
|
||||
* @return queue of track points
|
||||
|
||||
@@ -25,6 +25,7 @@ public abstract class Race implements Runnable {
|
||||
protected int boatsFinished = 0;
|
||||
protected long totalTimeElapsed;
|
||||
private int lastFPS = 20;
|
||||
private int dnfChance = 0; //percentage chance a boat fails at each checkpoint
|
||||
|
||||
protected int scaleFactor;
|
||||
|
||||
@@ -67,7 +68,7 @@ public abstract class Race implements Runnable {
|
||||
/**
|
||||
* Checks the position of the boat, this updates the boats current position.
|
||||
*
|
||||
* @param boat Boat that the postion is to be updated for.
|
||||
* @param boat Boat that the position is to be updated for.
|
||||
* @param timeElapsed Time that has elapse since the start of the the race.
|
||||
* @see BoatInRace
|
||||
*/
|
||||
@@ -86,16 +87,14 @@ public abstract class Race implements Runnable {
|
||||
*/
|
||||
public void run() {
|
||||
initialiseBoats();
|
||||
System.out.println("Running race");
|
||||
simulateRace();
|
||||
countdownTimer();
|
||||
}
|
||||
|
||||
/**
|
||||
* Countdown timer until race starts. Use PRERACE_TIME to set countdown duration.
|
||||
*/
|
||||
protected void countdownTimer() {
|
||||
System.out.println("Running countdown timer");
|
||||
new AnimationTimer() {
|
||||
AnimationTimer timer = new AnimationTimer() {
|
||||
long currentTime = System.currentTimeMillis();
|
||||
long startTime = currentTime + (PRERACE_TIME/scaleFactor);
|
||||
long minutes;
|
||||
@@ -106,9 +105,7 @@ public abstract class Race implements Runnable {
|
||||
|
||||
@Override
|
||||
public void handle(long arg0) {
|
||||
System.out.println("Starting timer");
|
||||
timeLeft = startTime - currentTime;
|
||||
System.out.println(timeLeft);
|
||||
if (timeLeft <= 0) {
|
||||
stop();
|
||||
simulateRace();
|
||||
@@ -121,8 +118,8 @@ public abstract class Race implements Runnable {
|
||||
}
|
||||
currentTime = System.currentTimeMillis();
|
||||
}
|
||||
}.start();
|
||||
System.out.println("Running countdown timer");
|
||||
};
|
||||
timer.start();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -159,30 +156,19 @@ public abstract class Race implements Runnable {
|
||||
new AnimationTimer() {
|
||||
|
||||
long timeRaceStarted = System.currentTimeMillis(); //start time of loop
|
||||
int fps = 0; //init fps value
|
||||
long timeCurrent = System.currentTimeMillis(); //current time
|
||||
|
||||
@Override
|
||||
public void handle(long arg0) {
|
||||
System.out.println();
|
||||
|
||||
if (boatsFinished < startingBoats.size()) {
|
||||
totalTimeElapsed = System.currentTimeMillis() - timeRaceStarted;
|
||||
|
||||
for (BoatInRace boat : startingBoats) {
|
||||
if (boat != null && !boat.isFinished()) {
|
||||
boat.addTrackPoint(boat.getCurrentPosition());
|
||||
updatePosition(boat, Math.round(1000 / lastFPS) > 20 ? 15 : Math.round(1000 / lastFPS));
|
||||
checkPosition(boat, totalTimeElapsed);
|
||||
}
|
||||
}
|
||||
}
|
||||
fps++;
|
||||
if ((System.currentTimeMillis() - timeCurrent) > 1000) {
|
||||
lastFPS = fps;
|
||||
fps = 0;
|
||||
timeCurrent = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -197,6 +183,7 @@ public abstract class Race implements Runnable {
|
||||
for(BoatInRace boat: startingBoats) {
|
||||
if(boat != null) {
|
||||
boat.setPosition(Integer.toString(startingBoats.indexOf(boat) + 1));
|
||||
System.out.println(boat.getName() + boat.getPosition());
|
||||
if (boat.getCurrentLeg().getName().equals("DNF") || boat.getCurrentLeg().getLegNumber() == 0)
|
||||
boat.setPosition("-");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user