diff --git a/src/main/java/seng302/model/Yacht.java b/src/main/java/seng302/model/ClientYacht.java similarity index 95% rename from src/main/java/seng302/model/Yacht.java rename to src/main/java/seng302/model/ClientYacht.java index 5a038f41..a0ee906e 100644 --- a/src/main/java/seng302/model/Yacht.java +++ b/src/main/java/seng302/model/ClientYacht.java @@ -20,15 +20,16 @@ import seng302.model.mark.CompoundMark; * compared to the XMLParser boat class, also done outside Boat class because some old variables are * not used anymore. */ -public class Yacht extends Observable { +public class ClientYacht extends Observable { @FunctionalInterface public interface YachtLocationListener { - void notifyLocation(Yacht yacht, double lat, double lon, double heading, double velocity); + void notifyLocation(ClientYacht clientYacht, double lat, double lon, double heading, + double velocity); } - private Logger logger = LoggerFactory.getLogger(Yacht.class); + private Logger logger = LoggerFactory.getLogger(ClientYacht.class); //BOTH AFAIK @@ -58,7 +59,7 @@ public class Yacht extends Observable { private Integer positionInt = 0; private Color colour; - public Yacht(String boatType, Integer sourceId, String hullID, String shortName, + public ClientYacht(String boatType, Integer sourceId, String hullID, String shortName, String boatName, String country) { this.boatType = boatType; this.sourceId = sourceId; diff --git a/src/main/java/seng302/model/ServerYacht.java b/src/main/java/seng302/model/ServerYacht.java index b0b9a0a3..87149c77 100644 --- a/src/main/java/seng302/model/ServerYacht.java +++ b/src/main/java/seng302/model/ServerYacht.java @@ -16,7 +16,7 @@ import seng302.utilities.GeoUtility; */ public class ServerYacht extends Observable { - private Logger logger = LoggerFactory.getLogger(Yacht.class); + private Logger logger = LoggerFactory.getLogger(ClientYacht.class); public static final Double TURN_STEP = 5.0; @@ -264,18 +264,16 @@ public class ServerYacht extends Observable { return sourceId; } - // TODO: 15/08/17 EXTREME BUG DO NOT DELETE THIS FUNCTION BREAKS PROGRAM IDK WHY ¯\_(ツ)_/¯ + // TODO: 15/08/17 This method is implicitly called from the XML generator for boats DO NOT DELETE public String getHullID() { - System.out.println("HullId"); if (hullID == null) { return ""; } return hullID; } - // TODO: 15/08/17 EXTREME BUG DO NOT DELETE THIS FUNCTION BREAKS PROGRAM IDK WHY ¯\_(ツ)_/¯ + // TODO: 15/08/17 This method is implicitly called from the XML generator for boats DO NOT DELETE public String getShortName() { - System.out.println("shortName"); return shortName; } diff --git a/src/main/java/seng302/utilities/XMLParser.java b/src/main/java/seng302/utilities/XMLParser.java index a88af9b4..a08a0769 100644 --- a/src/main/java/seng302/utilities/XMLParser.java +++ b/src/main/java/seng302/utilities/XMLParser.java @@ -8,8 +8,8 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; +import seng302.model.ClientYacht; import seng302.model.Limit; -import seng302.model.Yacht; import seng302.model.mark.CompoundMark; import seng302.model.mark.Corner; import seng302.model.mark.Mark; @@ -125,8 +125,8 @@ public class XMLParser { * @param doc XML Document Object * @return Mapping of sourceIds to Boats. */ - public static Map parseBoats(Document doc){ - Map competingBoats = new HashMap<>(); + public static Map parseBoats(Document doc) { + Map competingBoats = new HashMap<>(); Element docEle = doc.getDocumentElement(); @@ -135,7 +135,8 @@ public class XMLParser { Node currentBoat = boatsList.item(i); if (currentBoat.getNodeName().equals("Boat")) { // Boat boat = new Boat(currentBoat); - Yacht yacht = new Yacht(XMLParser.getNodeAttributeString(currentBoat, "Type"), + ClientYacht yacht = new ClientYacht( + XMLParser.getNodeAttributeString(currentBoat, "Type"), XMLParser.getNodeAttributeInt(currentBoat, "SourceID"), XMLParser.getNodeAttributeString(currentBoat, "HullNum"), XMLParser.getNodeAttributeString(currentBoat, "ShortName"), diff --git a/src/main/java/seng302/visualiser/GameClient.java b/src/main/java/seng302/visualiser/GameClient.java index e65cfbd9..62189263 100644 --- a/src/main/java/seng302/visualiser/GameClient.java +++ b/src/main/java/seng302/visualiser/GameClient.java @@ -14,8 +14,8 @@ import javafx.scene.input.KeyEvent; import javafx.scene.layout.Pane; import seng302.gameServer.MainServerThread; import seng302.gameServer.server.messages.BoatAction; +import seng302.model.ClientYacht; import seng302.model.RaceState; -import seng302.model.Yacht; import seng302.model.stream.packets.StreamPacket; import seng302.model.stream.parser.MarkRoundingData; import seng302.model.stream.parser.PositionUpdateData; @@ -41,7 +41,7 @@ public class GameClient { private RaceViewController raceView; - private Map allBoatsMap; + private Map allBoatsMap; private RegattaXMLData regattaData; private RaceXMLData courseData; private RaceState raceState = new RaceState(); @@ -151,7 +151,7 @@ public class GameClient { holderPane.getScene().setOnKeyPressed(this::keyPressed); holderPane.getScene().setOnKeyReleased(this::keyReleased); raceView = fxmlLoader.getController(); - Yacht player = allBoatsMap.get(socketThread.getClientId()); + ClientYacht player = allBoatsMap.get(socketThread.getClientId()); raceView.loadRace(allBoatsMap, courseData, raceState, player); } @@ -224,8 +224,8 @@ public class GameClient { private void updatePosition(PositionUpdateData positionData) { if (positionData.getType() == DeviceType.YACHT_TYPE) { if (allXMLReceived() && allBoatsMap.containsKey(positionData.getDeviceId())) { - Yacht yacht = allBoatsMap.get(positionData.getDeviceId()); - yacht.updateLocation(positionData.getLat(), + ClientYacht clientYacht = allBoatsMap.get(positionData.getDeviceId()); + clientYacht.updateLocation(positionData.getLat(), positionData.getLon(), positionData.getHeading(), positionData.getGroundSpeed()); } @@ -242,11 +242,11 @@ public class GameClient { */ private void updateMarkRounding(MarkRoundingData roundingData) { if (allXMLReceived()) { - Yacht yacht = allBoatsMap.get(roundingData.getBoatId()); - yacht.setMarkRoundingTime(roundingData.getTimeStamp()); - yacht.updateTimeSinceLastMarkProperty( + ClientYacht clientYacht = allBoatsMap.get(roundingData.getBoatId()); + clientYacht.setMarkRoundingTime(roundingData.getTimeStamp()); + clientYacht.updateTimeSinceLastMarkProperty( raceState.getRaceTime() - roundingData.getTimeStamp()); - yacht.setLastMarkRounded( + clientYacht.setLastMarkRounded( courseData.getCompoundMarks().get( roundingData.getMarkId() ) @@ -258,20 +258,20 @@ public class GameClient { if (allXMLReceived()) { raceState.updateState(data); for (long[] boatData : data.getBoatData()) { - Yacht yacht = allBoatsMap.get((int) boatData[0]); - yacht.setEstimateTimeTillNextMark(raceState.getRaceTime() - boatData[1]); - yacht.setEstimateTimeAtFinish(boatData[2]); + ClientYacht clientYacht = allBoatsMap.get((int) boatData[0]); + clientYacht.setEstimateTimeTillNextMark(raceState.getRaceTime() - boatData[1]); + clientYacht.setEstimateTimeAtFinish(boatData[2]); int legNumber = (int) boatData[3]; - yacht.setLegNumber(legNumber); - yacht.setBoatStatus((int) boatData[4]); - if (legNumber != yacht.getLegNumber()) { + clientYacht.setLegNumber(legNumber); + clientYacht.setBoatStatus((int) boatData[4]); + if (legNumber != clientYacht.getLegNumber()) { int placing = 1; - for (Yacht otherYacht : allBoatsMap.values()) { - if (otherYacht.getSourceId() != boatData[0] && - yacht.getLegNumber() <= otherYacht.getLegNumber()) + for (ClientYacht otherClientYacht : allBoatsMap.values()) { + if (otherClientYacht.getSourceId() != boatData[0] && + clientYacht.getLegNumber() <= otherClientYacht.getLegNumber()) placing++; } - yacht.setPositionInteger(placing); + clientYacht.setPositionInteger(placing); } } } diff --git a/src/main/java/seng302/visualiser/GameView.java b/src/main/java/seng302/visualiser/GameView.java index a7f353d9..24f42822 100644 --- a/src/main/java/seng302/visualiser/GameView.java +++ b/src/main/java/seng302/visualiser/GameView.java @@ -19,10 +19,10 @@ import javafx.scene.paint.Color; import javafx.scene.paint.Paint; import javafx.scene.shape.Polygon; import javafx.scene.text.Text; +import seng302.model.ClientYacht; import seng302.model.Colors; import seng302.model.GeoPoint; import seng302.model.Limit; -import seng302.model.Yacht; import seng302.model.mark.CompoundMark; import seng302.model.mark.Corner; import seng302.model.mark.Mark; @@ -61,8 +61,8 @@ public class GameView extends Pane { private List borderPoints; private Map markerObjects; - private Map boatObjects = new HashMap<>(); - private Map annotations = new HashMap<>(); + private Map boatObjects = new HashMap<>(); + private Map annotations = new HashMap<>(); private ObservableList gameObjects; private Group annotationsGroup = new Group(); private Group wakesGroup = new Group(); @@ -318,23 +318,23 @@ public class GameView extends Pane { /** * Draws all the boats. - * @param yachts The yachts to set in the race + * @param clientYachts The yachts to set in the race */ - public void setBoats(List yachts) { + public void setBoats(List clientYachts) { BoatObject newBoat; final List wakes = new ArrayList<>(); - for (Yacht yacht : yachts) { + for (ClientYacht clientYacht : clientYachts) { Paint colour = Colors.getColor(); newBoat = new BoatObject(); newBoat.setFill(colour); - boatObjects.put(yacht, newBoat); - createAndBindAnnotationBox(yacht, colour); + boatObjects.put(clientYacht, newBoat); + createAndBindAnnotationBox(clientYacht, colour); // wakesGroup.getChildren().add(newBoat.getWake()); wakes.add(newBoat.getWake()); boatObjectGroup.getChildren().add(newBoat); trails.getChildren().add(newBoat.getTrail()); // TODO: 1/08/17 Make this less vile to look at. - yacht.addLocationListener((boat, lat, lon, heading, velocity) ->{ + clientYacht.addLocationListener((boat, lat, lon, heading, velocity) -> { BoatObject bo = boatObjects.get(boat); Point2D p2d = findScaledXY(lat, lon); bo.moveTo(p2d.getX(), p2d.getY(), heading, velocity); @@ -358,11 +358,11 @@ public class GameView extends Pane { }); } - private void createAndBindAnnotationBox (Yacht yacht, Paint colour) { + private void createAndBindAnnotationBox(ClientYacht clientYacht, Paint colour) { AnnotationBox newAnnotation = new AnnotationBox(); newAnnotation.setFill(colour); newAnnotation.addAnnotation( - "name", "Player: " + yacht.getShortName() + "name", "Player: " + clientYacht.getShortName() ); // newAnnotation.addAnnotation( // "velocity", @@ -385,7 +385,7 @@ public class GameView extends Pane { // return format.format(time); // } // ); - annotations.put(yacht, newAnnotation); + annotations.put(clientYacht, newAnnotation); } private void drawFps(Double fps){ @@ -562,9 +562,9 @@ public class GameView extends Pane { fpsDisplay.setVisible(visibility); } - public void selectBoat (Yacht selectedYacht) { + public void selectBoat(ClientYacht selectedClientYacht) { boatObjects.forEach((boat, group) -> - group.setIsSelected(boat == selectedYacht) + group.setIsSelected(boat == selectedClientYacht) ); } @@ -576,7 +576,7 @@ public class GameView extends Pane { timer.start(); } - public void setBoatAsPlayer (Yacht playerYacht) { + public void setBoatAsPlayer(ClientYacht playerYacht) { boatObjects.get(playerYacht).setAsPlayer(); annotations.get(playerYacht).addAnnotation( "velocity", diff --git a/src/main/java/seng302/visualiser/controllers/FinishScreenViewController.java b/src/main/java/seng302/visualiser/controllers/FinishScreenViewController.java index db2a5d17..a4dc831b 100644 --- a/src/main/java/seng302/visualiser/controllers/FinishScreenViewController.java +++ b/src/main/java/seng302/visualiser/controllers/FinishScreenViewController.java @@ -17,24 +17,24 @@ import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.GridPane; import javafx.scene.layout.Pane; -import seng302.model.Yacht; +import seng302.model.ClientYacht; public class FinishScreenViewController implements Initializable { @FXML private GridPane finishScreenGridPane; @FXML - private TableView finishOrderTable; + private TableView finishOrderTable; @FXML - private TableColumn posCol; + private TableColumn posCol; @FXML - private TableColumn boatNameCol; + private TableColumn boatNameCol; @FXML - private TableColumn shortNameCol; + private TableColumn shortNameCol; @FXML - private TableColumn countryCol; + private TableColumn countryCol; - ObservableList data = FXCollections.observableArrayList(); + ObservableList data = FXCollections.observableArrayList(); @Override public void initialize(URL location, ResourceBundle resources) { @@ -61,9 +61,9 @@ public class FinishScreenViewController implements Initializable { finishOrderTable.refresh(); } - public void setFinishers (List participants) { - List sorted = new ArrayList<>(participants); - sorted.sort(Comparator.comparingInt(Yacht::getPositionInteger)); + public void setFinishers(List participants) { + List sorted = new ArrayList<>(participants); + sorted.sort(Comparator.comparingInt(ClientYacht::getPositionInteger)); finishOrderTable.getItems().setAll(sorted); } diff --git a/src/main/java/seng302/visualiser/controllers/RaceViewController.java b/src/main/java/seng302/visualiser/controllers/RaceViewController.java index 4af617fc..1721b027 100644 --- a/src/main/java/seng302/visualiser/controllers/RaceViewController.java +++ b/src/main/java/seng302/visualiser/controllers/RaceViewController.java @@ -34,8 +34,8 @@ import javafx.scene.text.Text; import javafx.stage.Stage; import javafx.stage.StageStyle; import javafx.util.StringConverter; +import seng302.model.ClientYacht; import seng302.model.RaceState; -import seng302.model.Yacht; import seng302.model.mark.CompoundMark; import seng302.model.mark.Mark; import seng302.model.stream.xml.parser.RaceXMLData; @@ -70,10 +70,10 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel @FXML private Button selectAnnotationBtn; @FXML - private ComboBox yachtSelectionComboBox; + private ComboBox yachtSelectionComboBox; //Race Data - private Map participants; + private Map participants; private Map markers; private RaceXMLData courseData; private GameView gameView; @@ -101,7 +101,8 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel } public void loadRace ( - Map participants, RaceXMLData raceData, RaceState raceState, Yacht player + Map participants, RaceXMLData raceData, RaceState raceState, + ClientYacht player ) { this.participants = participants; this.courseData = raceData; @@ -214,7 +215,7 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel // TODO: 2/08/17 there is about 0 chance of this working. Once we are keeping track of boat positions it can be fixed. // Collect the racing yachts that aren't already in the chart sparkLineData.clear(); - List sparkLineCandidates = new ArrayList<>(participants.values()); + List sparkLineCandidates = new ArrayList<>(participants.values()); // Create a new data series for new yachts sparkLineCandidates .stream() @@ -260,15 +261,15 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel /** * Updates the yachts sparkline of the desired yacht and using the new leg number - * @param yacht The yacht to be updated on the sparkline + * @param clientYacht The yacht to be updated on the sparkline * @param legNumber the leg number that the position will be assigned to */ - void updateYachtPositionSparkline(Yacht yacht, Integer legNumber){ + void updateYachtPositionSparkline(ClientYacht clientYacht, Integer legNumber) { for (XYChart.Series positionData : sparkLineData) { positionData.getData().add( new Data<>( Integer.toString(legNumber), - 1.0 + participants.size() - yacht.getPositionInteger() + 1.0 + participants.size() - clientYacht.getPositionInteger() ) ); } @@ -376,21 +377,21 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel // positionVbox.getStylesheets().add(getClass().getResource("/css/master.css").toString()); // list of racing yacht id - List sorted = new ArrayList<>(participants.values()); - sorted.sort(Comparator.comparingInt(Yacht::getPositionInteger)); + List sorted = new ArrayList<>(participants.values()); + sorted.sort(Comparator.comparingInt(ClientYacht::getPositionInteger)); List vboxEntries = new ArrayList<>(); - for (Yacht yacht : sorted) { + for (ClientYacht clientYacht : sorted) { // System.out.println("yacht == null " + String.valueOf(yacht == null)); - if (yacht.getBoatStatus() == 3) { // 3 is finish status - Text textToAdd = new Text(yacht.getPositionInteger() + ". " + - yacht.getShortName() + " (Finished)"); + if (clientYacht.getBoatStatus() == 3) { // 3 is finish status + Text textToAdd = new Text(clientYacht.getPositionInteger() + ". " + + clientYacht.getShortName() + " (Finished)"); textToAdd.setFill(Paint.valueOf("#d3d3d3")); vboxEntries.add(textToAdd); } else { - Text textToAdd = new Text(yacht.getPositionInteger() + ". " + - yacht.getShortName() + " "); + Text textToAdd = new Text(clientYacht.getPositionInteger() + ". " + + clientYacht.getShortName() + " "); textToAdd.setFill(Paint.valueOf("#d3d3d3")); textToAdd.setStyle(""); vboxEntries.add(textToAdd); @@ -575,9 +576,9 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel /** * Sets all the annotations of the selected yacht to be visible and all others to be hidden * - * @param yacht The yacht for which we want to view all annotations + * @param clientYacht The yacht for which we want to view all annotations */ - private void setSelectedBoat(Yacht yacht) { + private void setSelectedBoat(ClientYacht clientYacht) { // for (BoatObject bg : gameViewController.getBoatGroups()) { // //We need to iterate over all race groups to get the matching yacht group belonging to this yacht if we // //are to toggle its annotations, there is no other backwards knowledge of a yacht to its yachtgroup.