From 4cf8846cda2e6a203d25474066ebc84800a58353 Mon Sep 17 00:00:00 2001 From: Joseph Gardner Date: Thu, 17 Aug 2017 12:17:45 +1200 Subject: [PATCH] Map wind rotation works with multiplayer xml. #story[1092] --- .../src/main/java/mock/app/Event.java | 75 ++++--------------- .../src/main/java/mock/model/MockRace.java | 10 +-- .../mock/mockXML/raceSinglePlayer.xml | 4 +- .../main/resources/mock/mockXML/raceTest.xml | 4 +- 4 files changed, 22 insertions(+), 71 deletions(-) diff --git a/racevisionGame/src/main/java/mock/app/Event.java b/racevisionGame/src/main/java/mock/app/Event.java index 6398e9d2..47696875 100644 --- a/racevisionGame/src/main/java/mock/app/Event.java +++ b/racevisionGame/src/main/java/mock/app/Event.java @@ -4,12 +4,7 @@ import mock.dataInput.PolarParser; import mock.exceptions.EventConstructionException; import mock.model.*; import mock.model.commandFactory.CompositeCommand; -import mock.model.MockRace; -import mock.model.Polars; import mock.xml.RaceXMLCreator; -import mock.model.RaceLogic; -import mock.model.SourceIdAllocator; -import mock.model.commandFactory.CompositeCommand; import network.Messages.LatestMessages; import org.xml.sax.SAXException; import shared.dataInput.*; @@ -20,13 +15,11 @@ import shared.exceptions.InvalidRegattaDataException; import shared.exceptions.XMLReaderException; import shared.model.Bearing; import shared.model.Constants; -import shared.xml.Race.XMLRace; -import shared.xml.XMLUtilities; import javax.xml.bind.JAXBException; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerException; -import java.io.*; +import java.io.IOException; import java.net.UnknownHostException; import java.nio.charset.StandardCharsets; import java.time.Duration; @@ -93,55 +86,32 @@ public class Event { //Read XML files. try { - this.raceXML = RaceXMLCreator.alterRaceToWind("mock/mockXML/raceSchemaTest.xml", 90); + this.raceXML = RaceXMLCreator.alterRaceToWind(raceXMLFile, 90); this.boatXML = XMLReader.readXMLFileToString(boatsXMLFile, StandardCharsets.UTF_8); this.regattaXML = XMLReader.readXMLFileToString(regattaXMLFile, StandardCharsets.UTF_8); } catch (XMLReaderException e) { throw new EventConstructionException("Could not read XML files.", e); + } catch (IOException e) { + e.printStackTrace(); + } catch (ParserConfigurationException e) { + e.printStackTrace(); + } catch (SAXException e) { + e.printStackTrace(); + } catch (InvalidRaceDataException e) { + e.printStackTrace(); + } catch (JAXBException e) { + e.printStackTrace(); } this.xmlFileType = XMLFileType.Contents; this.boatPolars = PolarParser.parse("mock/polars/acc_polars.csv"); - this.latestMessages = new LatestMessages(); - this.connectionAcceptor = new ConnectionAcceptor(latestMessages); - } - - public static Event getEvent() { - return theEvent; - } - - public String getAddress() throws UnknownHostException { - return connectionAcceptor.getAddress(); - } - - public int getPort() { - return connectionAcceptor.getServerPort(); - } - - /** - * Sends the initial race data and then begins race simulation. - * @throws InvalidRaceDataException Thrown if the race xml file cannot be parsed. - * @throws XMLReaderException Thrown if any of the xml files cannot be parsed. - * @throws InvalidBoatDataException Thrown if the boat xml file cannot be parsed. - * @throws InvalidRegattaDataException Thrown if the regatta xml file cannot be parsed. - * @throws ParserConfigurationException Error in parsing XML - * @throws JAXBException error in mapping the xml to a schema - * @throws SAXException error in reading the schema - * @throws IOException error in finding the schema - */ - public void start() throws InvalidRaceDataException, XMLReaderException, InvalidBoatDataException, InvalidRegattaDataException, ParserConfigurationException, JAXBException, SAXException, IOException { - new Thread(connectionAcceptor, "Event.Start()->ConnectionAcceptor thread").start(); - - sendXMLs(); + //Parse the XML files into data sources. try { this.raceDataSource = new RaceXMLReader(this.raceXML, this.xmlFileType); - XMLRace race = (XMLRace) XMLUtilities.xmlToClass(raceXML, - RaceXMLCreator.class.getClassLoader().getResource("mock/mockXML/schema/raceSchema.xsd"), - XMLRace.class); this.boatDataSource = new BoatXMLReader(this.boatXML, this.xmlFileType); this.regattaDataSource = new RegattaXMLReader(this.regattaXML, this.xmlFileType); @@ -215,21 +185,4 @@ public class Event { connectionAcceptor.setBoatsXml(boatXML); } - - - //The start time is current time + 4 minutes. prestart is 3 minutes, and we add another minute. - long millisecondsToAdd = Constants.RacePreStartTime + Duration.ofMinutes(1).toMillis(); - long secondsToAdd = millisecondsToAdd / 1000; - //Scale the time using our time scalar. - secondsToAdd = secondsToAdd / Constants.RaceTimeScale; - - DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"); - ZonedDateTime creationTime = ZonedDateTime.now(); - raceXML = raceXML.replace("CREATION_TIME", dateFormat.format(creationTime)); - - raceXML = raceXML.replace("START_TIME", dateFormat.format(creationTime.plusSeconds(secondsToAdd))); - - return raceXML; - - } -} +} \ No newline at end of file diff --git a/racevisionGame/src/main/java/mock/model/MockRace.java b/racevisionGame/src/main/java/mock/model/MockRace.java index 9d8f3616..e2a044ef 100644 --- a/racevisionGame/src/main/java/mock/model/MockRace.java +++ b/racevisionGame/src/main/java/mock/model/MockRace.java @@ -399,8 +399,7 @@ public class MockRace extends Race { double lastAngle = -1; boolean lastAngleWasGood = false; - //Check all bearings between [0his.latestMessages = new LatestMessages(); - thi, 360). + //Check all bearings between [0, 360) for (double angle = 0; angle < 360; angle += 1) { //Create bearing from angle. @@ -636,8 +635,6 @@ public class MockRace extends Race { protected int getNumberOfActiveBoats() { int numberOfActiveBoats = 0; -his.latestMessages = new LatestMessages(); - thi for (MockBoat boat : this.boats) { //If the boat is currently racing, count it. @@ -710,6 +707,7 @@ his.latestMessages = new LatestMessages(); } - - + public List getCompoundMarks() { + return compoundMarks; + } } diff --git a/racevisionGame/src/main/resources/mock/mockXML/raceSinglePlayer.xml b/racevisionGame/src/main/resources/mock/mockXML/raceSinglePlayer.xml index 553c2571..f939b16d 100644 --- a/racevisionGame/src/main/resources/mock/mockXML/raceSinglePlayer.xml +++ b/racevisionGame/src/main/resources/mock/mockXML/raceSinglePlayer.xml @@ -2,8 +2,8 @@ 5326 FLEET - CREATION_TIME - + 2017-08-03T02:13:14+1200 + diff --git a/racevisionGame/src/main/resources/mock/mockXML/raceTest.xml b/racevisionGame/src/main/resources/mock/mockXML/raceTest.xml index edd634dc..761b9b91 100644 --- a/racevisionGame/src/main/resources/mock/mockXML/raceTest.xml +++ b/racevisionGame/src/main/resources/mock/mockXML/raceTest.xml @@ -2,8 +2,8 @@ 5326 FLEET - CREATION_TIME - + 2017-08-03T02:13:14+1200 +