Refactored the refreshTable into propeties that listen.
- Added currentLegName as a String Property - Refactored Name of the Boat as a StringProperty #story[15]
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package seng302;
|
||||
|
||||
import javafx.scene.paint.Color;
|
||||
import seng302.Model.BoatInRace;
|
||||
import seng302.Model.Leg;
|
||||
|
||||
/**
|
||||
@@ -22,5 +24,13 @@ public class Constants {
|
||||
public static final GPSCoordinate finishLineMarker1 = new GPSCoordinate(32.317379, -64.839291);
|
||||
public static final GPSCoordinate finishLineMarker2 = new GPSCoordinate(32.317257, -64.836260);
|
||||
|
||||
public static final BoatInRace[] OFFICIAL_AC35_COMPETITORS = new BoatInRace[]
|
||||
{new BoatInRace("Oracle Team USA", 200.0, Color.BLUEVIOLET),
|
||||
new BoatInRace("Land Rover BAR", 180.0, Color.BLACK),
|
||||
new BoatInRace("SoftBank Team Japan", 190.0, Color.RED),
|
||||
new BoatInRace("Groupama Team France", 210.0, Color.ORANGE),
|
||||
new BoatInRace("Artemis Racing", 220.0, Color.DARKOLIVEGREEN),
|
||||
new BoatInRace("Emirates Team New Zealand", 310, Color.LIMEGREEN)};
|
||||
|
||||
//public static final Leg bermudaCourseStartToMark1 = new Leg(0, , new )
|
||||
}
|
||||
|
||||
@@ -63,12 +63,12 @@ public class RaceController extends Controller{
|
||||
* Updates the array listened by the TableView (boatInfoTable) that displays the boat information.
|
||||
* @param race Race to listen to.
|
||||
*/
|
||||
public void updateInfoTable(Race race) {
|
||||
public void setInfoTable(Race race) {
|
||||
//boatInfoTable.getItems().clear();
|
||||
boatInfoTable.setItems(race.getStartingBoats());
|
||||
|
||||
boatTeamColumn.setCellValueFactory(new PropertyValueFactory<BoatInRace,String>("Name"));
|
||||
boatMarkColumn.setCellValueFactory(new PropertyValueFactory<BoatInRace, String>("CurrentLeg"));
|
||||
boatTeamColumn.setCellValueFactory(cellData -> cellData.getValue().getName());
|
||||
boatMarkColumn.setCellValueFactory(cellData -> cellData.getValue().getCurrentLegName());
|
||||
boatPlacingColumn.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<BoatInRace, String>, ObservableValue<String>>() {
|
||||
@Override
|
||||
public ObservableValue<String> call(TableColumn.CellDataFeatures<BoatInRace, String> table) {
|
||||
@@ -77,10 +77,6 @@ public class RaceController extends Controller{
|
||||
});
|
||||
}
|
||||
|
||||
public void refreshTable(){
|
||||
boatInfoTable.refresh();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(URL location, ResourceBundle resources) {
|
||||
|
||||
@@ -118,18 +114,17 @@ public class RaceController extends Controller{
|
||||
|
||||
private BoatInRace[] generateAC35Competitors() {
|
||||
|
||||
BoatInRace boat1 = new BoatInRace("NZ", 500);
|
||||
boat1.setColour(Color.DARKVIOLET);
|
||||
boat1.setCurrentPosition(new GPSCoordinate(0, 0));
|
||||
BoatInRace[] boats = new BoatInRace[6];
|
||||
|
||||
BoatInRace boat2 = new BoatInRace("TEST", 300);
|
||||
boat2.setColour(Color.DARKRED);
|
||||
boat2.setCurrentPosition(new GPSCoordinate(0, 0));
|
||||
|
||||
BoatInRace boat3 = new BoatInRace("TEST2", 350);
|
||||
boat3.setColour(Color.FUCHSIA);
|
||||
boat3.setCurrentPosition(new GPSCoordinate(0, 0));
|
||||
return new BoatInRace[] {boat1, boat2, boat3};
|
||||
int i = 0;
|
||||
for (BoatInRace boat : Constants.OFFICIAL_AC35_COMPETITORS) {
|
||||
boat.setCurrentPosition(Constants.startLineMarker1);
|
||||
boats[i] = boat;
|
||||
i++;
|
||||
}
|
||||
|
||||
return boats;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
package seng302.Model;
|
||||
|
||||
import javafx.beans.property.SimpleStringProperty;
|
||||
import javafx.beans.property.StringProperty;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Created by fwy13 on 3/03/17.
|
||||
*/
|
||||
public class Boat {
|
||||
private String name;
|
||||
private StringProperty name;
|
||||
private double velocity;
|
||||
|
||||
/**
|
||||
@@ -16,19 +19,19 @@ public class Boat {
|
||||
*/
|
||||
public Boat(String name, double velocity){
|
||||
this.velocity = velocity;
|
||||
this.name = name;
|
||||
this.name = new SimpleStringProperty(name);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return The name of the boat
|
||||
*/
|
||||
public String getName() {
|
||||
public StringProperty getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
this.name.setValue(name);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -44,7 +47,7 @@ public class Boat {
|
||||
* @return The Name of the boat.
|
||||
*/
|
||||
public String toString(){
|
||||
return getName();
|
||||
return getName().getValue();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package seng302.Model;
|
||||
|
||||
import javafx.beans.property.SimpleStringProperty;
|
||||
import javafx.beans.property.StringProperty;
|
||||
import javafx.scene.paint.Color;
|
||||
import org.geotools.referencing.GeodeticCalculator;
|
||||
import seng302.GPSCoordinate;
|
||||
@@ -18,6 +20,19 @@ public class BoatInRace extends Boat {
|
||||
private long timeFinished;
|
||||
private Color colour;
|
||||
private boolean finished = false;
|
||||
private StringProperty currentLegName;
|
||||
|
||||
/**
|
||||
* Constructor method.
|
||||
* @param name Name of the boat.
|
||||
* @param velocity Speed that the boat travels.
|
||||
* @param colour Colour the boat will be displayed as on the map
|
||||
*/
|
||||
public BoatInRace(String name, double velocity, Color colour) {
|
||||
super(name, velocity);
|
||||
setColour(colour);
|
||||
currentLegName = new SimpleStringProperty("");
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -61,15 +76,6 @@ public class BoatInRace extends Boat {
|
||||
this.timeFinished = timeFinished;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor method.
|
||||
* @param name Name of the boat.
|
||||
* @param velocity Speed that the boat travels.
|
||||
*/
|
||||
public BoatInRace(String name, double velocity) {
|
||||
super(name, velocity);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the current leg that the boat is on.
|
||||
* @return returns the leg the boat is on in a Leg class
|
||||
@@ -86,6 +92,11 @@ public class BoatInRace extends Boat {
|
||||
*/
|
||||
public void setCurrentLeg(Leg currentLeg) {
|
||||
this.currentLeg = currentLeg;
|
||||
this.currentLegName.setValue(currentLeg.getName());
|
||||
}
|
||||
|
||||
public StringProperty getCurrentLegName(){
|
||||
return currentLegName;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -24,7 +24,7 @@ public abstract class Race implements Runnable {
|
||||
protected long totalTimeElapsed;
|
||||
|
||||
|
||||
private int SLEEP_TIME = 1000; //time in milliseconds to pause in a paced loop
|
||||
private int SLEEP_TIME = 100; //time in milliseconds to pause in a paced loop
|
||||
|
||||
/**
|
||||
* Initailiser for Race
|
||||
@@ -51,7 +51,7 @@ public abstract class Race implements Runnable {
|
||||
* Runnable for the thread.
|
||||
*/
|
||||
public void run() {
|
||||
updateController();
|
||||
setControllerListeners();
|
||||
preRace();
|
||||
simulateRace();
|
||||
}
|
||||
@@ -65,7 +65,8 @@ public abstract class Race implements Runnable {
|
||||
System.out.println("====================");
|
||||
for (int i = 0; i < startingBoats.size(); i++) {
|
||||
if (startingBoats.get(i) != null) {
|
||||
System.out.println(i + 1 + ". " + startingBoats.get(i).getName() + ", Speed: " + Math.round(startingBoats.get(i).getVelocity() * 1.94384) + "kn");
|
||||
System.out.println(i + 1 + ". " + startingBoats.get(i).getName() + ", Speed: "
|
||||
+ Math.round(startingBoats.get(i).getVelocity() * 1.94384) + "kn");
|
||||
startingBoats.get(i).setCurrentLeg(legs.get(0));
|
||||
}
|
||||
}
|
||||
@@ -143,18 +144,18 @@ public abstract class Race implements Runnable {
|
||||
} else {
|
||||
boat.setDistanceTravelledInLeg(boat.getDistanceTravelledInLeg() - boat.getCurrentLeg().getDistance());
|
||||
Leg nextLeg = legs.get(boat.getCurrentLeg().getLegNumber() + 1);
|
||||
|
||||
boat.setCurrentLeg(nextLeg);
|
||||
boat.setDistanceTravelledInLeg(boat.getDistanceTravelledInLeg());
|
||||
}
|
||||
controller.refreshTable();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update call for the controller.
|
||||
*/
|
||||
protected void updateController() {
|
||||
if(controller != null) controller.updateInfoTable(this);
|
||||
protected void setControllerListeners() {
|
||||
if(controller != null) controller.setInfoTable(this);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user