diff --git a/racevisionGame/src/main/java/mock/app/Event.java b/racevisionGame/src/main/java/mock/app/Event.java index 7d1ec47d..47696875 100644 --- a/racevisionGame/src/main/java/mock/app/Event.java +++ b/racevisionGame/src/main/java/mock/app/Event.java @@ -87,7 +87,6 @@ public class Event { //Read XML files. try { this.raceXML = RaceXMLCreator.alterRaceToWind(raceXMLFile, 90); - //this.raceXML = XMLReader.readXMLFileToString(raceXMLFile, StandardCharsets.UTF_8); this.boatXML = XMLReader.readXMLFileToString(boatsXMLFile, StandardCharsets.UTF_8); this.regattaXML = XMLReader.readXMLFileToString(regattaXMLFile, StandardCharsets.UTF_8); diff --git a/racevisionGame/src/main/java/mock/model/MockRace.java b/racevisionGame/src/main/java/mock/model/MockRace.java index 159e2951..379123af 100644 --- a/racevisionGame/src/main/java/mock/model/MockRace.java +++ b/racevisionGame/src/main/java/mock/model/MockRace.java @@ -305,7 +305,6 @@ public class MockRace extends Race { } - /** * Calculates the distance a boat has travelled and updates its current position according to this value. * @@ -318,7 +317,7 @@ public class MockRace extends Race { //Checks if the current boat has finished the race or not. boolean finish = this.isLastLeg(boat.getCurrentLeg()); - if (!finish && totalElapsedMilliseconds >= updatePeriodMilliseconds) { + if (!finish && totalElapsedMilliseconds >= updatePeriodMilliseconds && boat.isSailsOut()) { checkPosition(boat, totalElapsedMilliseconds); @@ -344,9 +343,12 @@ public class MockRace extends Race { newOptimalVMG(boat); } - this.updateEstimatedTime(boat); + } else { + boat.setCurrentSpeed(0); } + this.updateEstimatedTime(boat); + } private void newOptimalVMG(MockBoat boat) { @@ -709,4 +711,4 @@ public class MockRace extends Race { public List getCompoundMarks() { return compoundMarks; } -} +} \ No newline at end of file diff --git a/racevisionGame/src/main/java/mock/model/RaceLogic.java b/racevisionGame/src/main/java/mock/model/RaceLogic.java index ecc2309e..5f0c4191 100644 --- a/racevisionGame/src/main/java/mock/model/RaceLogic.java +++ b/racevisionGame/src/main/java/mock/model/RaceLogic.java @@ -185,4 +185,4 @@ public class RaceLogic implements RunnableWithFramePeriod, Observer { // else if(e.getBearing().degrees() > 270) System.out.println("Port"); // else System.out.println("Behind"); } -} +} \ No newline at end of file diff --git a/racevisionGame/src/main/java/mock/model/commandFactory/CommandFactory.java b/racevisionGame/src/main/java/mock/model/commandFactory/CommandFactory.java index 4edb87c5..6c2224ec 100644 --- a/racevisionGame/src/main/java/mock/model/commandFactory/CommandFactory.java +++ b/racevisionGame/src/main/java/mock/model/commandFactory/CommandFactory.java @@ -33,6 +33,8 @@ public class CommandFactory { case TACK_GYBE: return new TackGybeCommand(race, boat); case UPWIND: return new WindCommand(race, boat, true); case DOWNWIND: return new WindCommand(race, boat, false); + case SAILS_OUT: return new SailsCommand(race, boat, true); + case SAILS_IN: return new SailsCommand(race, boat, false); default: throw new CommandConstructionException("Could not create command for BoatAction: " + action + ". Unknown BoatAction."); } diff --git a/racevisionGame/src/main/java/mock/model/commandFactory/SailsCommand.java b/racevisionGame/src/main/java/mock/model/commandFactory/SailsCommand.java new file mode 100644 index 00000000..7d620a42 --- /dev/null +++ b/racevisionGame/src/main/java/mock/model/commandFactory/SailsCommand.java @@ -0,0 +1,21 @@ +package mock.model.commandFactory; + +import mock.model.MockBoat; +import mock.model.MockRace; + +public class SailsCommand implements Command { + private MockRace race; + private MockBoat boat; + private boolean sailsOut; + + public SailsCommand(MockRace race, MockBoat boat, Boolean sailsOut) { + this.race = race; + this.boat = boat; + this.sailsOut = sailsOut; + } + + @Override + public void execute() { + this.boat.setSailsOut(this.sailsOut); + } +} diff --git a/racevisionGame/src/main/java/network/BinaryMessageDecoder.java b/racevisionGame/src/main/java/network/BinaryMessageDecoder.java index 7bd9c233..9cca1815 100644 --- a/racevisionGame/src/main/java/network/BinaryMessageDecoder.java +++ b/racevisionGame/src/main/java/network/BinaryMessageDecoder.java @@ -6,12 +6,14 @@ import network.Exceptions.InvalidMessageTypeException; import network.MessageDecoders.*; import network.Messages.*; import network.Messages.Enums.MessageType; -import static network.Utils.ByteConverter.*; import java.nio.ByteBuffer; import java.util.Arrays; import java.util.zip.CRC32; +import static network.Utils.ByteConverter.bytesToInt; +import static network.Utils.ByteConverter.bytesToLong; + /** * This class can be used to decode/convert a byte array into a messageBody object, descended from AC35Data. */ diff --git a/racevisionGame/src/main/java/network/BinaryMessageEncoder.java b/racevisionGame/src/main/java/network/BinaryMessageEncoder.java index ced31af1..0d55d519 100644 --- a/racevisionGame/src/main/java/network/BinaryMessageEncoder.java +++ b/racevisionGame/src/main/java/network/BinaryMessageEncoder.java @@ -1,13 +1,13 @@ package network; - import network.Messages.Enums.MessageType; -import static network.Utils.ByteConverter.*; import java.nio.ByteBuffer; import java.util.zip.CRC32; +import static network.Utils.ByteConverter.*; + /** * This class can be used to encode/convert a byte array message body, plus header data into a byte array containing the entire message, ready to send. diff --git a/racevisionGame/src/main/java/network/MessageDecoders/RaceStatusDecoder.java b/racevisionGame/src/main/java/network/MessageDecoders/RaceStatusDecoder.java index 7e26e105..3c785e90 100644 --- a/racevisionGame/src/main/java/network/MessageDecoders/RaceStatusDecoder.java +++ b/racevisionGame/src/main/java/network/MessageDecoders/RaceStatusDecoder.java @@ -14,9 +14,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import static network.Utils.ByteConverter.bytesToInt; -import static network.Utils.ByteConverter.bytesToLong; -import static network.Utils.ByteConverter.bytesToShort; +import static network.Utils.ByteConverter.*; /** diff --git a/racevisionGame/src/main/java/network/MessageEncoders/RaceVisionByteEncoder.java b/racevisionGame/src/main/java/network/MessageEncoders/RaceVisionByteEncoder.java index 303b30db..174e52e8 100644 --- a/racevisionGame/src/main/java/network/MessageEncoders/RaceVisionByteEncoder.java +++ b/racevisionGame/src/main/java/network/MessageEncoders/RaceVisionByteEncoder.java @@ -7,13 +7,14 @@ import network.Exceptions.InvalidMessageTypeException; import network.Messages.*; import network.Messages.Enums.MessageType; -import static network.Utils.ByteConverter.*; - import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; +import static network.Utils.ByteConverter.intToBytes; +import static network.Utils.ByteConverter.longToBytes; + /** diff --git a/racevisionGame/src/main/java/network/Messages/XMLMessage.java b/racevisionGame/src/main/java/network/Messages/XMLMessage.java index e3a4aa1b..9e009084 100644 --- a/racevisionGame/src/main/java/network/Messages/XMLMessage.java +++ b/racevisionGame/src/main/java/network/Messages/XMLMessage.java @@ -4,7 +4,6 @@ package network.Messages; import network.Messages.Enums.MessageType; import network.Messages.Enums.XMLMessageType; -import java.io.InputStream; import java.nio.charset.StandardCharsets; /** diff --git a/racevisionGame/src/main/java/shared/dataInput/RaceDataSource.java b/racevisionGame/src/main/java/shared/dataInput/RaceDataSource.java index 668714e9..b89dc45d 100644 --- a/racevisionGame/src/main/java/shared/dataInput/RaceDataSource.java +++ b/racevisionGame/src/main/java/shared/dataInput/RaceDataSource.java @@ -1,7 +1,6 @@ package shared.dataInput; import network.Messages.Enums.RaceTypeEnum; -import shared.model.Boat; import shared.model.CompoundMark; import shared.model.GPSCoordinate; import shared.model.Leg; diff --git a/racevisionGame/src/main/java/shared/dataInput/RegattaXMLReader.java b/racevisionGame/src/main/java/shared/dataInput/RegattaXMLReader.java index 08d4a034..0a756b03 100644 --- a/racevisionGame/src/main/java/shared/dataInput/RegattaXMLReader.java +++ b/racevisionGame/src/main/java/shared/dataInput/RegattaXMLReader.java @@ -2,15 +2,11 @@ package shared.dataInput; import org.w3c.dom.Element; import org.w3c.dom.NodeList; -import org.xml.sax.SAXException; -import shared.dataInput.XMLReader; import shared.enums.XMLFileType; import shared.exceptions.InvalidRegattaDataException; import shared.exceptions.XMLReaderException; import shared.model.GPSCoordinate; -import javax.xml.parsers.ParserConfigurationException; -import java.io.IOException; import java.io.InputStream; /** diff --git a/racevisionGame/src/main/java/shared/dataInput/XMLReader.java b/racevisionGame/src/main/java/shared/dataInput/XMLReader.java index dd5a4d6d..ee31ff4d 100644 --- a/racevisionGame/src/main/java/shared/dataInput/XMLReader.java +++ b/racevisionGame/src/main/java/shared/dataInput/XMLReader.java @@ -3,7 +3,6 @@ package shared.dataInput; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; -import org.xml.sax.InputSource; import org.xml.sax.SAXException; import shared.enums.XMLFileType; import shared.exceptions.XMLReaderException; diff --git a/racevisionGame/src/main/java/shared/model/Boat.java b/racevisionGame/src/main/java/shared/model/Boat.java index 7d86afbf..31ce7ad4 100644 --- a/racevisionGame/src/main/java/shared/model/Boat.java +++ b/racevisionGame/src/main/java/shared/model/Boat.java @@ -93,6 +93,10 @@ public class Boat extends Collider { @Nullable private ZonedDateTime timeAtLastMark; + /** + * The state of the boats sails. True if sails are out. + */ + private boolean sailsOut = true; /** * Constructs a boat object with a given sourceID, name, country/team abbreviation, and polars table. @@ -392,6 +396,13 @@ public class Boat extends Collider { this.timeAtLastMark = timeAtLastMark; } + public void setSailsOut(boolean sailsOut) { + this.sailsOut = sailsOut; + } + + public boolean isSailsOut() { + return sailsOut; + } public void bounce(double repulsionRadius) { Azimuth reverseAzimuth = Azimuth.fromDegrees(getBearing().degrees() - 180d); setPosition(GPSCoordinate.calculateNewPosition(getPosition(), 2 * repulsionRadius, reverseAzimuth)); diff --git a/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/BoatLocationCommand.java b/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/BoatLocationCommand.java index 160955bc..98364fc8 100644 --- a/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/BoatLocationCommand.java +++ b/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/BoatLocationCommand.java @@ -7,6 +7,7 @@ import shared.exceptions.BoatNotFoundException; import shared.exceptions.MarkNotFoundException; import shared.model.GPSCoordinate; import shared.model.Mark; +import visualiser.model.ThisBoat; import visualiser.model.VisualiserBoat; import visualiser.model.VisualiserRaceState; diff --git a/racevisionGame/src/main/java/visualiser/Controllers/HostController.java b/racevisionGame/src/main/java/visualiser/Controllers/HostController.java index c2d8021d..d383a974 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/HostController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/HostController.java @@ -1,10 +1,8 @@ package visualiser.Controllers; -import javafx.application.Application; import javafx.fxml.FXML; -import javafx.scene.control.*; +import javafx.scene.control.TextField; import javafx.scene.layout.AnchorPane; -import javafx.stage.Stage; import mock.app.Event; import org.xml.sax.SAXException; import mock.exceptions.EventConstructionException; @@ -12,14 +10,12 @@ import shared.exceptions.InvalidBoatDataException; import shared.exceptions.InvalidRaceDataException; import shared.exceptions.InvalidRegattaDataException; import shared.exceptions.XMLReaderException; -import visualiser.model.RaceConnection; import javax.xml.bind.JAXBException; import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; import java.net.Socket; import java.net.URL; -import java.net.UnknownHostException; import java.util.ResourceBundle; import java.util.logging.Level; import java.util.logging.Logger; diff --git a/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java b/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java index 5ae51d35..8a2c8713 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java @@ -7,7 +7,6 @@ import javafx.scene.control.Button; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.TextField; -import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.layout.AnchorPane; import visualiser.model.RaceConnection; diff --git a/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java index e2e8237e..0fc5f765 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java @@ -120,8 +120,8 @@ public class RaceController extends Controller { ControlKey controlKey = keyFactory.getKey(codeString); if(controlKey != null) { try { - controllerClient.sendKey(controlKey); controlKey.onAction(); // Change key state if applicable + controllerClient.sendKey(controlKey); event.consume(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); diff --git a/racevisionGame/src/main/java/visualiser/Controllers/TitleController.java b/racevisionGame/src/main/java/visualiser/Controllers/TitleController.java index 412858ee..887d3f07 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/TitleController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/TitleController.java @@ -1,14 +1,9 @@ package visualiser.Controllers; import javafx.fxml.FXML; -import javafx.fxml.FXMLLoader; -import javafx.scene.Parent; -import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.RadioButton; -import javafx.scene.image.Image; import javafx.scene.layout.AnchorPane; -import javafx.stage.Stage; import visualiser.app.App; import java.io.IOException; diff --git a/racevisionGame/src/main/java/visualiser/gameController/ControllerClient.java b/racevisionGame/src/main/java/visualiser/gameController/ControllerClient.java index 57459868..f2a3b391 100644 --- a/racevisionGame/src/main/java/visualiser/gameController/ControllerClient.java +++ b/racevisionGame/src/main/java/visualiser/gameController/ControllerClient.java @@ -12,7 +12,6 @@ import visualiser.gameController.Keys.ControlKey; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; -import java.net.SocketException; import java.nio.ByteBuffer; import java.util.concurrent.BlockingQueue; import java.util.logging.Level; diff --git a/racevisionGame/src/main/java/visualiser/gameController/Keys/SailsToggleKey.java b/racevisionGame/src/main/java/visualiser/gameController/Keys/SailsToggleKey.java index 15b88512..f1e4d65b 100644 --- a/racevisionGame/src/main/java/visualiser/gameController/Keys/SailsToggleKey.java +++ b/racevisionGame/src/main/java/visualiser/gameController/Keys/SailsToggleKey.java @@ -1,6 +1,7 @@ package visualiser.gameController.Keys; import network.Messages.Enums.BoatActionEnum; +import visualiser.model.ThisBoat; /** * Key to toggle the sails @@ -13,7 +14,7 @@ public class SailsToggleKey extends ControlKey { * */ public SailsToggleKey(String name) { - super(name, BoatActionEnum.SAILS_IN); + super(name, BoatActionEnum.NOT_A_STATUS); } /** @@ -21,10 +22,12 @@ public class SailsToggleKey extends ControlKey { */ @Override public void onAction() { - if(protocolCode == BoatActionEnum.SAILS_IN) { - protocolCode = BoatActionEnum.SAILS_OUT; - } else { + if(ThisBoat.getInstance().isSailsOut()) { protocolCode = BoatActionEnum.SAILS_IN; + ThisBoat.getInstance().setSailsOut(false); + } else { + protocolCode = BoatActionEnum.SAILS_OUT; + ThisBoat.getInstance().setSailsOut(true); } } diff --git a/racevisionGame/src/main/java/visualiser/gameController/Keys/ZoomInKey.java b/racevisionGame/src/main/java/visualiser/gameController/Keys/ZoomInKey.java index 35b6ce94..51f98a58 100644 --- a/racevisionGame/src/main/java/visualiser/gameController/Keys/ZoomInKey.java +++ b/racevisionGame/src/main/java/visualiser/gameController/Keys/ZoomInKey.java @@ -1,7 +1,5 @@ package visualiser.gameController.Keys; -import javafx.scene.input.KeyCode; - /** * key to zoom into the game */ diff --git a/racevisionGame/src/main/java/visualiser/model/Ping.java b/racevisionGame/src/main/java/visualiser/model/Ping.java index b31716b5..7f83ed10 100644 --- a/racevisionGame/src/main/java/visualiser/model/Ping.java +++ b/racevisionGame/src/main/java/visualiser/model/Ping.java @@ -1,8 +1,5 @@ package visualiser.model; -import javafx.beans.property.SimpleStringProperty; -import javafx.beans.property.StringProperty; - import java.io.IOException; import java.net.InetSocketAddress; import java.net.Socket; diff --git a/racevisionGame/src/main/java/visualiser/model/RaceConnection.java b/racevisionGame/src/main/java/visualiser/model/RaceConnection.java index f9f2d4ea..0aed5618 100644 --- a/racevisionGame/src/main/java/visualiser/model/RaceConnection.java +++ b/racevisionGame/src/main/java/visualiser/model/RaceConnection.java @@ -3,10 +3,6 @@ package visualiser.model; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; -import java.io.IOException; -import java.net.InetSocketAddress; -import java.net.Socket; - /** * Connection for Races */ diff --git a/racevisionGame/src/main/java/visualiser/model/ResizableRaceCanvas.java b/racevisionGame/src/main/java/visualiser/model/ResizableRaceCanvas.java index 1c17b540..11d66f7c 100644 --- a/racevisionGame/src/main/java/visualiser/model/ResizableRaceCanvas.java +++ b/racevisionGame/src/main/java/visualiser/model/ResizableRaceCanvas.java @@ -1,6 +1,7 @@ package visualiser.model; +import javafx.scene.image.Image; import javafx.scene.paint.Color; import javafx.scene.paint.LinearGradient; import javafx.scene.paint.Paint; @@ -35,6 +36,10 @@ public class ResizableRaceCanvas extends ResizableCanvas { */ private RaceMap map; + private Image sailsRight = new Image("/images/sailsRight.png"); + private Image sailsLeft = new Image("/images/sailsLeft.png"); + private Image sailsLuff = new Image("/images/sailsLuff.gif", 25, 10, false, false); + /** * The race we read data from and draw. */ @@ -336,8 +341,6 @@ public class ResizableRaceCanvas extends ResizableCanvas { } - - /** * Draws a given boat on the canvas. * @param boat The boat to draw. @@ -375,7 +378,9 @@ public class ResizableRaceCanvas extends ResizableCanvas { gc.fillPolygon(x, y, x.length); gc.restore(); - + if (boat.getSourceID() == ThisBoat.getInstance().getSourceID()) { + drawSails(boat); + } } /** @@ -413,6 +418,70 @@ public class ResizableRaceCanvas extends ResizableCanvas { } + /** + * Draws sails for a given boat on the canvas. Sail position is + * determined by the boats heading and the current wind direction + * according to the "points of sail". + * @param boat boat to display sails for + */ + private void drawSails(VisualiserBoat boat) { + GraphCoordinate boatPos = + this.map.convertGPS(boat.getPosition()); + double xPos = boatPos.getX(); // x pos of sail (on boat) + double yPos = boatPos.getY() - 6; // y pos of sail (on boat) + double boatBearing = boat.getBearing().degrees(); + double windDirection = 0; //visualiserRace.getWindDirection().degrees(); + double sailRotateAngle = 0; // rotation for correct sail display + Image sailImage = null; + Boolean rightSail = true; + + // Getting the correct Points of Sail + if (ThisBoat.getInstance().isSailsOut()){ + // correct sail and sailRotateAngle start depending on wind+bearing + if ((windDirection + 180) > 360) { + if ((boatBearing < windDirection) && + (boatBearing > windDirection - 180)) { + rightSail = false; + } else { + if (boatBearing < 180) { + sailRotateAngle = -180; + } + } + } else { + if (!((boatBearing > windDirection) && + (boatBearing < windDirection + 180))) { + rightSail = false; + if (boatBearing > 180) { + sailRotateAngle = -180; + } + } + } + + if (rightSail) { + sailImage = sailsRight; + xPos -= 1; // right align sail to boat edge on canvas + } else { + sailImage = sailsLeft; + xPos -= 5; // left align sail to boat edge on canvas + } + sailRotateAngle += ((boatBearing + windDirection) * 0.5); + } + // Sails in = luffing sail + else { + xPos -= 6; + yPos += 1; + sailImage = sailsLuff; + sailRotateAngle = boatBearing + 90; + } + + gc.save(); + + // rotate sails based on boats current heading + rotate(sailRotateAngle, boatPos.getX(), boatPos.getY()); + gc.drawImage(sailImage, xPos, yPos); + + gc.restore(); + } /** * Draws the wake for a given boat. @@ -756,4 +825,4 @@ public class ResizableRaceCanvas extends ResizableCanvas { -} +} \ No newline at end of file diff --git a/racevisionGame/src/main/java/visualiser/model/ThisBoat.java b/racevisionGame/src/main/java/visualiser/model/ThisBoat.java new file mode 100644 index 00000000..91396902 --- /dev/null +++ b/racevisionGame/src/main/java/visualiser/model/ThisBoat.java @@ -0,0 +1,31 @@ +package visualiser.model; + +/** + * The properties of the boat currently being controlled by the player. Singleton. + */ +public class ThisBoat { + private VisualiserBoat boat; + private static ThisBoat instance = new ThisBoat(); + + private ThisBoat(){} + + public static ThisBoat getInstance(){ + return instance; + } + + public void setSailsOut(boolean sailsOut) { + this.boat.setSailsOut(sailsOut); + } + + public boolean isSailsOut() { + return this.boat.isSailsOut(); + } + + public int getSourceID() { + return this.boat.getSourceID(); + } + + public void setBoat(VisualiserBoat boat) { + this.boat = boat; + } +} diff --git a/racevisionGame/src/main/java/visualiser/model/VisualiserRaceState.java b/racevisionGame/src/main/java/visualiser/model/VisualiserRaceState.java index 77db4f7c..a294d3fd 100644 --- a/racevisionGame/src/main/java/visualiser/model/VisualiserRaceState.java +++ b/racevisionGame/src/main/java/visualiser/model/VisualiserRaceState.java @@ -205,6 +205,7 @@ public class VisualiserRaceState extends RaceState { if (boat.getSourceID() == getPlayerBoatID()) { boat.setClientBoat(true); + ThisBoat.getInstance().setBoat(boat); } } diff --git a/racevisionGame/src/main/resources/images/sailsLeft.png b/racevisionGame/src/main/resources/images/sailsLeft.png new file mode 100644 index 00000000..4f72adf1 Binary files /dev/null and b/racevisionGame/src/main/resources/images/sailsLeft.png differ diff --git a/racevisionGame/src/main/resources/images/sailsLuff.gif b/racevisionGame/src/main/resources/images/sailsLuff.gif new file mode 100644 index 00000000..924023ba Binary files /dev/null and b/racevisionGame/src/main/resources/images/sailsLuff.gif differ diff --git a/racevisionGame/src/main/resources/images/sailsRight.png b/racevisionGame/src/main/resources/images/sailsRight.png new file mode 100644 index 00000000..6591f4be Binary files /dev/null and b/racevisionGame/src/main/resources/images/sailsRight.png differ diff --git a/racevisionGame/src/main/resources/visualiser/scenes/arrow.fxml b/racevisionGame/src/main/resources/visualiser/scenes/arrow.fxml index 4057753d..196c4c10 100644 --- a/racevisionGame/src/main/resources/visualiser/scenes/arrow.fxml +++ b/racevisionGame/src/main/resources/visualiser/scenes/arrow.fxml @@ -1,18 +1,13 @@ + - - - - - + - - diff --git a/racevisionGame/src/main/resources/visualiser/scenes/hostgame.fxml b/racevisionGame/src/main/resources/visualiser/scenes/hostgame.fxml index 5657fa30..5a5d1c7b 100644 --- a/racevisionGame/src/main/resources/visualiser/scenes/hostgame.fxml +++ b/racevisionGame/src/main/resources/visualiser/scenes/hostgame.fxml @@ -1,12 +1,9 @@ - - - - + + - diff --git a/racevisionGame/src/main/resources/visualiser/scenes/main.fxml b/racevisionGame/src/main/resources/visualiser/scenes/main.fxml index 99e802e5..074a9b31 100644 --- a/racevisionGame/src/main/resources/visualiser/scenes/main.fxml +++ b/racevisionGame/src/main/resources/visualiser/scenes/main.fxml @@ -1,9 +1,6 @@ - - - diff --git a/racevisionGame/src/main/resources/visualiser/scenes/title.fxml b/racevisionGame/src/main/resources/visualiser/scenes/title.fxml index 48870b1f..f448a226 100644 --- a/racevisionGame/src/main/resources/visualiser/scenes/title.fxml +++ b/racevisionGame/src/main/resources/visualiser/scenes/title.fxml @@ -1,12 +1,9 @@ - - - diff --git a/racevisionGame/src/main/resources/visualiser/scenes/titleScreen.fxml b/racevisionGame/src/main/resources/visualiser/scenes/titleScreen.fxml index 2d0477a1..b7aaabcf 100644 --- a/racevisionGame/src/main/resources/visualiser/scenes/titleScreen.fxml +++ b/racevisionGame/src/main/resources/visualiser/scenes/titleScreen.fxml @@ -1,20 +1,10 @@ - - + + - - - - - - - - - - diff --git a/racevisionGame/src/test/java/mock/model/PolarsTest.java b/racevisionGame/src/test/java/mock/model/PolarsTest.java index 491e5935..ca49172a 100644 --- a/racevisionGame/src/test/java/mock/model/PolarsTest.java +++ b/racevisionGame/src/test/java/mock/model/PolarsTest.java @@ -6,9 +6,7 @@ import org.junit.Before; import org.junit.Test; import shared.model.Bearing; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; +import static org.junit.Assert.*; /** diff --git a/racevisionGame/src/test/java/mock/model/VMGTest.java b/racevisionGame/src/test/java/mock/model/VMGTest.java index 173df3ee..23cb6e27 100644 --- a/racevisionGame/src/test/java/mock/model/VMGTest.java +++ b/racevisionGame/src/test/java/mock/model/VMGTest.java @@ -4,7 +4,7 @@ import org.junit.Before; import org.junit.Test; import shared.model.Bearing; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; public class VMGTest { diff --git a/racevisionGame/src/test/java/network/BinaryMessageDecoderTest.java b/racevisionGame/src/test/java/network/BinaryMessageDecoderTest.java index 46441775..de5e6aec 100644 --- a/racevisionGame/src/test/java/network/BinaryMessageDecoderTest.java +++ b/racevisionGame/src/test/java/network/BinaryMessageDecoderTest.java @@ -14,9 +14,6 @@ import shared.dataInput.XMLReader; import shared.exceptions.XMLReaderException; import javax.xml.transform.TransformerException; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import static org.junit.Assert.fail; diff --git a/racevisionGame/src/test/java/network/Utils/ByteConverterTest.java b/racevisionGame/src/test/java/network/Utils/ByteConverterTest.java index 32ffc6ee..6621b1eb 100644 --- a/racevisionGame/src/test/java/network/Utils/ByteConverterTest.java +++ b/racevisionGame/src/test/java/network/Utils/ByteConverterTest.java @@ -1,6 +1,5 @@ package network.Utils; -import network.Utils.ByteConverter; import org.junit.Test; import java.nio.ByteOrder; diff --git a/racevisionGame/src/test/java/shared/dataInput/BoatXMLReaderTest.java b/racevisionGame/src/test/java/shared/dataInput/BoatXMLReaderTest.java index 029447d6..1e25a359 100644 --- a/racevisionGame/src/test/java/shared/dataInput/BoatXMLReaderTest.java +++ b/racevisionGame/src/test/java/shared/dataInput/BoatXMLReaderTest.java @@ -3,23 +3,17 @@ package shared.dataInput; import org.junit.Before; import org.junit.Test; -import org.xml.sax.SAXException; import shared.enums.XMLFileType; import shared.exceptions.InvalidBoatDataException; import shared.exceptions.XMLReaderException; import shared.model.Boat; import shared.model.Mark; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.TransformerException; -import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; +import static org.junit.Assert.*; /** * Created by cbt24 on 10/05/17. diff --git a/racevisionGame/src/test/java/shared/model/AngleTest.java b/racevisionGame/src/test/java/shared/model/AngleTest.java index 6e03e788..4618f21f 100644 --- a/racevisionGame/src/test/java/shared/model/AngleTest.java +++ b/racevisionGame/src/test/java/shared/model/AngleTest.java @@ -1,7 +1,5 @@ package shared.model; -import static org.junit.Assert.*; - public class AngleTest { //TODO } diff --git a/racevisionGame/src/test/java/shared/model/AzimuthTest.java b/racevisionGame/src/test/java/shared/model/AzimuthTest.java index 9a3c3431..dc3be932 100644 --- a/racevisionGame/src/test/java/shared/model/AzimuthTest.java +++ b/racevisionGame/src/test/java/shared/model/AzimuthTest.java @@ -1,7 +1,5 @@ package shared.model; -import static org.junit.Assert.*; - public class AzimuthTest { //TODO } diff --git a/racevisionGame/src/test/java/shared/model/BearingTest.java b/racevisionGame/src/test/java/shared/model/BearingTest.java index 3855e829..876a0deb 100644 --- a/racevisionGame/src/test/java/shared/model/BearingTest.java +++ b/racevisionGame/src/test/java/shared/model/BearingTest.java @@ -1,7 +1,5 @@ package shared.model; -import static org.junit.Assert.*; - public class BearingTest { //TODO } diff --git a/racevisionGame/src/test/java/shared/model/CompoundMarkTest.java b/racevisionGame/src/test/java/shared/model/CompoundMarkTest.java index 5a305bac..44d68905 100644 --- a/racevisionGame/src/test/java/shared/model/CompoundMarkTest.java +++ b/racevisionGame/src/test/java/shared/model/CompoundMarkTest.java @@ -1,7 +1,6 @@ package shared.model; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import static org.junit.Assert.assertEquals; diff --git a/racevisionGame/src/test/java/shared/model/MarkTest.java b/racevisionGame/src/test/java/shared/model/MarkTest.java index a78eb512..9c3535ee 100644 --- a/racevisionGame/src/test/java/shared/model/MarkTest.java +++ b/racevisionGame/src/test/java/shared/model/MarkTest.java @@ -1,7 +1,5 @@ package shared.model; -import static org.junit.Assert.*; - public class MarkTest { //TODO } diff --git a/racevisionGame/src/test/java/shared/model/RaceClockTest.java b/racevisionGame/src/test/java/shared/model/RaceClockTest.java index 2dd62ff5..6ad3e8d7 100644 --- a/racevisionGame/src/test/java/shared/model/RaceClockTest.java +++ b/racevisionGame/src/test/java/shared/model/RaceClockTest.java @@ -1,7 +1,5 @@ package shared.model; -import static org.junit.Assert.*; - public class RaceClockTest { //TODO } diff --git a/racevisionGame/src/test/java/visualiser/gameController/GameControllerManualTest.java b/racevisionGame/src/test/java/visualiser/gameController/GameControllerManualTest.java index 6c7c4f81..f01b7abb 100644 --- a/racevisionGame/src/test/java/visualiser/gameController/GameControllerManualTest.java +++ b/racevisionGame/src/test/java/visualiser/gameController/GameControllerManualTest.java @@ -7,7 +7,6 @@ import javafx.scene.Scene; import javafx.scene.layout.GridPane; import javafx.stage.Stage; import javafx.stage.WindowEvent; -import visualiser.gameController.InputChecker; /** * Start to manually test the game controller diff --git a/racevisionGame/src/test/java/visualiser/model/RaceConnectionTest.java b/racevisionGame/src/test/java/visualiser/model/RaceConnectionTest.java index 02fb463e..85a5a8f7 100644 --- a/racevisionGame/src/test/java/visualiser/model/RaceConnectionTest.java +++ b/racevisionGame/src/test/java/visualiser/model/RaceConnectionTest.java @@ -4,7 +4,6 @@ import org.junit.Before; import org.junit.Ignore; import org.junit.Test; -import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; /**