diff --git a/src/main/java/seng302/Constants.java b/src/main/java/seng302/Constants.java index 125e5444..0db52afb 100644 --- a/src/main/java/seng302/Constants.java +++ b/src/main/java/seng302/Constants.java @@ -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 ) } diff --git a/src/main/java/seng302/Controllers/RaceController.java b/src/main/java/seng302/Controllers/RaceController.java index 184ceb82..d274d2a9 100644 --- a/src/main/java/seng302/Controllers/RaceController.java +++ b/src/main/java/seng302/Controllers/RaceController.java @@ -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("Name")); - boatMarkColumn.setCellValueFactory(new PropertyValueFactory("CurrentLeg")); + boatTeamColumn.setCellValueFactory(cellData -> cellData.getValue().getName()); + boatMarkColumn.setCellValueFactory(cellData -> cellData.getValue().getCurrentLegName()); boatPlacingColumn.setCellValueFactory(new Callback, ObservableValue>() { @Override public ObservableValue call(TableColumn.CellDataFeatures 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)); + int i = 0; + for (BoatInRace boat : Constants.OFFICIAL_AC35_COMPETITORS) { + boat.setCurrentPosition(Constants.startLineMarker1); + boats[i] = boat; + i++; + } - BoatInRace boat3 = new BoatInRace("TEST2", 350); - boat3.setColour(Color.FUCHSIA); - boat3.setCurrentPosition(new GPSCoordinate(0, 0)); - return new BoatInRace[] {boat1, boat2, boat3}; + return boats; } diff --git a/src/main/java/seng302/Model/Boat.java b/src/main/java/seng302/Model/Boat.java index 3fedb34e..10c6d863 100644 --- a/src/main/java/seng302/Model/Boat.java +++ b/src/main/java/seng302/Model/Boat.java @@ -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(); } } diff --git a/src/main/java/seng302/Model/BoatInRace.java b/src/main/java/seng302/Model/BoatInRace.java index 200a2fff..689de663 100644 --- a/src/main/java/seng302/Model/BoatInRace.java +++ b/src/main/java/seng302/Model/BoatInRace.java @@ -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; } /** diff --git a/src/main/java/seng302/Model/Race.java b/src/main/java/seng302/Model/Race.java index b4f35a77..d8deb68f 100644 --- a/src/main/java/seng302/Model/Race.java +++ b/src/main/java/seng302/Model/Race.java @@ -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); } /**