|
|
|
|
@ -18,6 +18,7 @@ import shared.exceptions.InvalidRegattaDataException;
|
|
|
|
|
import shared.exceptions.XMLReaderException;
|
|
|
|
|
import shared.model.Bearing;
|
|
|
|
|
import shared.model.Constants;
|
|
|
|
|
import shared.xml.XMLUtilities;
|
|
|
|
|
|
|
|
|
|
import javax.xml.bind.JAXBException;
|
|
|
|
|
import javax.xml.parsers.ParserConfigurationException;
|
|
|
|
|
@ -70,6 +71,8 @@ public class Event {
|
|
|
|
|
|
|
|
|
|
private Thread connectionThread;
|
|
|
|
|
|
|
|
|
|
private int mapIndex;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -79,11 +82,29 @@ public class Event {
|
|
|
|
|
* @param singlePlayer Whether or not to create a single player event.
|
|
|
|
|
* @throws EventConstructionException Thrown if we cannot create an Event for any reason.
|
|
|
|
|
*/
|
|
|
|
|
public Event(boolean singlePlayer) throws EventConstructionException {
|
|
|
|
|
|
|
|
|
|
String raceXMLFile = "mock/mockXML/raceThreePlayers.xml";
|
|
|
|
|
public Event(boolean singlePlayer, int mapIndex) throws EventConstructionException {
|
|
|
|
|
this.mapIndex = mapIndex;
|
|
|
|
|
String raceXMLFile;
|
|
|
|
|
String boatsXMLFile = "mock/mockXML/boatTest.xml";
|
|
|
|
|
String regattaXMLFile = "mock/mockXML/regattaTest.xml";
|
|
|
|
|
switch (mapIndex){
|
|
|
|
|
case 0:raceXMLFile = "mock/mockXML/raceSixPlayers.xml";
|
|
|
|
|
break;
|
|
|
|
|
case 1:raceXMLFile = "mock/mockXML/oMapLayout.xml";
|
|
|
|
|
break;
|
|
|
|
|
case 2: raceXMLFile = "mock/mockXML/iMapLayout.xml";
|
|
|
|
|
break;
|
|
|
|
|
case 3: raceXMLFile = "mock/mockXML/mMapLayout.xml";
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
raceXMLFile = "mock/mockXML/raceTutorial.xml";
|
|
|
|
|
boatsXMLFile = "mock/mockXML/boatTutorial.xml";
|
|
|
|
|
regattaXMLFile = "mock/mockXML/regattaTutorial.xml";
|
|
|
|
|
break;
|
|
|
|
|
default: raceXMLFile = "mock/mockXML/raceSixPlayers.xml";
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (singlePlayer) {
|
|
|
|
|
raceXMLFile = "mock/mockXML/raceSinglePlayer.xml";
|
|
|
|
|
@ -95,7 +116,9 @@ public class Event {
|
|
|
|
|
//this.raceXML = RaceXMLCreator.alterRaceToWind(raceXMLFile, 90);
|
|
|
|
|
this.raceXML = XMLReader.readXMLFileToString(raceXMLFile, StandardCharsets.UTF_8);
|
|
|
|
|
this.raceXML = Event.setRaceXMLAtCurrentTimeToNow(XMLReader.readXMLFileToString(raceXMLFile, StandardCharsets.UTF_8));
|
|
|
|
|
|
|
|
|
|
if(mapIndex==4){
|
|
|
|
|
this.raceXML = Event.setRaceXMLAtCurrentTimeToNow(XMLReader.readXMLFileToString(raceXMLFile, StandardCharsets.UTF_8), 1000, 5000);
|
|
|
|
|
}
|
|
|
|
|
this.boatXML = XMLReader.readXMLFileToString(boatsXMLFile, StandardCharsets.UTF_8);
|
|
|
|
|
this.regattaXML = XMLReader.readXMLFileToString(regattaXMLFile, StandardCharsets.UTF_8);
|
|
|
|
|
|
|
|
|
|
@ -178,9 +201,14 @@ public class Event {
|
|
|
|
|
* @return String containing edited xml
|
|
|
|
|
*/
|
|
|
|
|
public static String setRaceXMLAtCurrentTimeToNow(String raceXML) {
|
|
|
|
|
return setRaceXMLAtCurrentTimeToNow(raceXML, Constants.RacePreStartTime, Constants.RacePreparatoryTime);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static String setRaceXMLAtCurrentTimeToNow(String raceXML, long racePreStartTime, long racePreparatoryTime){
|
|
|
|
|
//The start time is current time + 4 minutes. prestart is 3 minutes, and we add another minute.
|
|
|
|
|
long millisecondsToAdd = Constants.RacePreStartTime + 1 * 60 * 1000;
|
|
|
|
|
|
|
|
|
|
long millisecondsToAdd = racePreStartTime + racePreparatoryTime;
|
|
|
|
|
|
|
|
|
|
long secondsToAdd = millisecondsToAdd / 1000;
|
|
|
|
|
//Scale the time using our time scalar.
|
|
|
|
|
secondsToAdd = secondsToAdd / Constants.RaceTimeScale;
|
|
|
|
|
@ -190,7 +218,6 @@ public class Event {
|
|
|
|
|
raceXML = raceXML.replace("RACE_CREATION_TIME", dateFormat.format(creationTime));
|
|
|
|
|
raceXML = raceXML.replace("RACE_START_TIME", dateFormat.format(creationTime.plusSeconds(secondsToAdd)));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return raceXML;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|