diff --git a/src/main/java/seng302/App.java b/src/main/java/seng302/App.java index fdfc3ad4..7b53c2cf 100644 --- a/src/main/java/seng302/App.java +++ b/src/main/java/seng302/App.java @@ -105,7 +105,6 @@ public class App extends Application { } }, 0, 1200); - try { parseArgs(args); } catch (ParseException e) { diff --git a/src/main/java/seng302/discoveryServer/DiscoveryServer.java b/src/main/java/seng302/discoveryServer/DiscoveryServer.java index 88c531e7..c5707b92 100644 --- a/src/main/java/seng302/discoveryServer/DiscoveryServer.java +++ b/src/main/java/seng302/discoveryServer/DiscoveryServer.java @@ -48,7 +48,7 @@ public class DiscoveryServer { " .:;...'cxxxxxxxxxxxxoc;,::,..cdl;;l' \n" + " .cl;':,'';oxxxxxxdxxxxxx:....,cooc,cO; \n" + " .,,,::;,lxoc:,,:lxxxxxxxxxxxo:,,;lxxl;'oNc \n" + - " .cdxo;':lxxxxxxc'';cccccoxxxxxxxxxxxxo,.;lc. " + ANSI_YELLOW + "Party-Parrots-At-Sea Discovery Server v0.1 " + selectedColor +"\n" + + " .cdxo;':lxxxxxxc'';cccccoxxxxxxxxxxxxo,.;lc. " + ANSI_YELLOW + "Party-Parrots-At-Sea Discovery Server v1.0.0 (Release) " + selectedColor +"\n" + " .loc'.'lxxxxxxxxocc;''''';ccoxxxxxxxxx:..oc \n" + "olc,..',:cccccccccccc:;;;;;;;;:ccccccccc,.'c, \n" + "Ol;......................................;l' "); diff --git a/src/main/java/seng302/discoveryServer/DiscoveryServerClient.java b/src/main/java/seng302/discoveryServer/DiscoveryServerClient.java index 79df1c2f..80521951 100644 --- a/src/main/java/seng302/discoveryServer/DiscoveryServerClient.java +++ b/src/main/java/seng302/discoveryServer/DiscoveryServerClient.java @@ -19,7 +19,7 @@ import java.util.Timer; import java.util.TimerTask; public class DiscoveryServerClient { - private final Integer UPDATE_INTERVAL_MS = 5000; + private final Integer UPDATE_INTERVAL_MS = 1000; private static String roomCode = null; private Timer serverListingUpdateTimer; diff --git a/src/main/java/seng302/discoveryServer/util/ServerListing.java b/src/main/java/seng302/discoveryServer/util/ServerListing.java index 4c5bdaad..d477b717 100644 --- a/src/main/java/seng302/discoveryServer/util/ServerListing.java +++ b/src/main/java/seng302/discoveryServer/util/ServerListing.java @@ -1,7 +1,7 @@ package seng302.discoveryServer.util; public class ServerListing { - public final static int SERVER_TTL_DEFAULT = 10; + public final static int SERVER_TTL_DEFAULT = 3; private String serverName = ""; private String mapName = ""; diff --git a/src/main/java/seng302/model/ClientYacht.java b/src/main/java/seng302/model/ClientYacht.java index 9e38b781..612ca1e5 100644 --- a/src/main/java/seng302/model/ClientYacht.java +++ b/src/main/java/seng302/model/ClientYacht.java @@ -13,15 +13,11 @@ import javafx.beans.property.ReadOnlyIntegerProperty; import javafx.beans.property.ReadOnlyIntegerWrapper; import javafx.beans.property.ReadOnlyLongProperty; import javafx.beans.property.ReadOnlyLongWrapper; -import javafx.beans.value.ObservableObjectValue; -import javafx.collections.FXCollections; import javafx.scene.paint.Color; -import jdk.nashorn.internal.objects.annotations.Function; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import seng302.model.token.TokenType; import seng302.visualiser.fxObjects.assets_3D.BoatMeshType; -import seng302.model.token.TokenType; import seng302.visualiser.fxObjects.assets_3D.BoatObject; /** @@ -286,6 +282,7 @@ public class ClientYacht extends Observable { public void setHeading(Double heading) { this.heading = heading; + System.out.println(heading); setHeadingProperty(); } diff --git a/src/main/java/seng302/model/mark/CompoundMark.java b/src/main/java/seng302/model/mark/CompoundMark.java index b9385446..c45750af 100644 --- a/src/main/java/seng302/model/mark/CompoundMark.java +++ b/src/main/java/seng302/model/mark/CompoundMark.java @@ -72,7 +72,6 @@ public class CompoundMark { getSubMark(1).setRoundingSide(RoundingSide.STARBOARD); break; - } } diff --git a/src/main/java/seng302/visualiser/ClientToServerThread.java b/src/main/java/seng302/visualiser/ClientToServerThread.java index c7f23280..b4840004 100644 --- a/src/main/java/seng302/visualiser/ClientToServerThread.java +++ b/src/main/java/seng302/visualiser/ClientToServerThread.java @@ -180,10 +180,12 @@ public class ClientToServerThread implements Runnable { notifyDisconnectListeners("Connection to server was terminated"); closeSocket(); - Platform.runLater(() -> { - ViewManager.getInstance().showErrorSnackBar("Server rejected connection."); + //thread.interrupt(); + +// Platform.runLater(() -> { +// ViewManager.getInstance().showErrorSnackBar("Server rejected connection."); // ViewManager.getInstance().goToStartView(); - }); +// }); } public void sendCustomizationRequest(CustomizeRequestType reqType, byte[] payload) { diff --git a/src/main/java/seng302/visualiser/GameClient.java b/src/main/java/seng302/visualiser/GameClient.java index 77b383c4..ed59a5ce 100644 --- a/src/main/java/seng302/visualiser/GameClient.java +++ b/src/main/java/seng302/visualiser/GameClient.java @@ -83,7 +83,7 @@ public class GameClient { * @param ipAddress IP to connect to. * @param portNumber Port to connect to. */ - public void runAsClient(String ipAddress, Integer portNumber) { + public boolean runAsClient(String ipAddress, Integer portNumber) { try { startClientToServerThread(ipAddress, portNumber); socketThread.addDisconnectionListener((cause) -> { @@ -94,12 +94,19 @@ public class GameClient { ViewManager.getInstance().setPlayerList(clientLobbyList); - while (regattaData == null){ + int triesLeft = 10; + + while (regattaData == null && triesLeft >= 0){ try { Thread.sleep(100); - } catch (InterruptedException e) { - e.printStackTrace(); + } catch (InterruptedException ignored) { + ; } + triesLeft--; + } + + if (triesLeft < 1){ + return false; } ViewManager.getInstance().setProperty("serverName", regattaData.getRegattaName()); @@ -112,6 +119,8 @@ public class GameClient { } catch (IOException ioe) { ViewManager.getInstance().showErrorSnackBar("There are no servers currently available."); } + + return true; } /** diff --git a/src/main/java/seng302/visualiser/MapMaker.java b/src/main/java/seng302/visualiser/MapMaker.java index 073c9d60..5bda5b7e 100644 --- a/src/main/java/seng302/visualiser/MapMaker.java +++ b/src/main/java/seng302/visualiser/MapMaker.java @@ -1,6 +1,5 @@ package seng302.visualiser; -import java.io.File; import java.io.IOException; import java.io.StringReader; import java.util.ArrayList; @@ -35,7 +34,8 @@ public class MapMaker { private int index = 0; private XMLGenerator xmlGenerator = new XMLGenerator(); - private List maps = new ArrayList<>(Arrays.asList("default.xml", "horseshoe.xml", "loop.xml")); + private List maps = new ArrayList<>( + Arrays.asList("default.xml", "horseshoe.xml", "madagascar.xml", "loop.xml")); public static MapMaker getInstance() { if (instance == null) { diff --git a/src/main/java/seng302/visualiser/controllers/ServerListController.java b/src/main/java/seng302/visualiser/controllers/ServerListController.java index 2e133ceb..77e8bf4d 100644 --- a/src/main/java/seng302/visualiser/controllers/ServerListController.java +++ b/src/main/java/seng302/visualiser/controllers/ServerListController.java @@ -140,7 +140,9 @@ public class ServerListController implements Initializable, ServerListenerDelega return; } - ViewManager.getInstance().getGameClient().runAsClient(listing.getAddress(), listing.getPortNumber()); + if (!ViewManager.getInstance().getGameClient().runAsClient(listing.getAddress(), listing.getPortNumber())){ + ViewManager.getInstance().showErrorSnackBar("Could not connect to server"); + } }); /* diff --git a/src/main/java/seng302/visualiser/fxObjects/assets_3D/BoatMeshType.java b/src/main/java/seng302/visualiser/fxObjects/assets_3D/BoatMeshType.java index 4be41d90..fbd85eba 100644 --- a/src/main/java/seng302/visualiser/fxObjects/assets_3D/BoatMeshType.java +++ b/src/main/java/seng302/visualiser/fxObjects/assets_3D/BoatMeshType.java @@ -13,7 +13,7 @@ public enum BoatMeshType { PIRATE_SHIP("pirateship_hull.stl", "pirateship_mast.stl", -0.5415, "pirateship_mainsail.stl", -0.5415, "pirateship_frontsail.stl", true, 1.2, 1.6, 1.2), DUCKY("ducky_hull.stl", "ducky_mast.stl", -2.18539, "ducky_sail.stl", -2.18539, "ducky_eyes.stl", false, 1.2, 1.1, 1.4), - PARROT("parrot_hull.stl", null, 0, "parrot_sail.stl", 0, "parrot_features.stl", true, 1, 1, 1), + PARROT("parrot_hull.stl", null, 0, "parrot_features.stl", 0, "parrot_sail.stl", true, 1, 1, 1), WAKA("waka_hull.stl", "waka_mast.stl", 0, "waka_sail.stl", 0, null, true, 1.7, 0.5, 1.5); final String hullFile, mastFile, sailFile, jibFile; diff --git a/src/main/java/seng302/visualiser/fxObjects/assets_3D/ModelFactory.java b/src/main/java/seng302/visualiser/fxObjects/assets_3D/ModelFactory.java index e454b666..828a4492 100644 --- a/src/main/java/seng302/visualiser/fxObjects/assets_3D/ModelFactory.java +++ b/src/main/java/seng302/visualiser/fxObjects/assets_3D/ModelFactory.java @@ -100,19 +100,19 @@ public class ModelFactory { mast.setMaterial(new PhongMaterial(primaryColour)); boatAssets.getChildren().add(mast); } else { - boatAssets.getChildren().add(new Group()); + boatAssets.getChildren().add(new MeshView()); } MeshView sail = importBoatSTL(boatType.sailFile); sail.setMaterial( - new PhongMaterial(boatType == BoatMeshType.PARROT ? Color.DARKGRAY : Color.WHITE) + new PhongMaterial(boatType == BoatMeshType.PARROT ? Color.BLACK : Color.WHITE) ); boatAssets.getChildren().add(sail); if (boatType.jibFile != null) { MeshView jib = importBoatSTL(boatType.jibFile); jib.setMaterial( - new PhongMaterial(boatType == BoatMeshType.PARROT ? Color.BLACK : Color.WHITE) + new PhongMaterial(boatType == BoatMeshType.PARROT ? Color.DARKGRAY : Color.WHITE) ); boatAssets.getChildren().add(jib); } diff --git a/src/main/resources/maps/madagascar.xml b/src/main/resources/maps/madagascar.xml new file mode 100644 index 00000000..37113567 --- /dev/null +++ b/src/main/resources/maps/madagascar.xml @@ -0,0 +1,65 @@ + + + + Madagascar + + -15.67707 + 49.79338 + + 10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/java/seng302/utilities/MapMakerTest.java b/src/test/java/seng302/utilities/MapMakerTest.java new file mode 100644 index 00000000..dc2af1b1 --- /dev/null +++ b/src/test/java/seng302/utilities/MapMakerTest.java @@ -0,0 +1,9 @@ +package seng302.utilities; + +/** + * Created by cir27 on 28/09/17. + */ +public class MapMakerTest { +// @Test + +} diff --git a/src/test/java/steps/CustomMapsSteps.java b/src/test/java/steps/CustomMapsSteps.java index 5d7a2f1d..42e9314b 100644 --- a/src/test/java/steps/CustomMapsSteps.java +++ b/src/test/java/steps/CustomMapsSteps.java @@ -16,26 +16,26 @@ public class CustomMapsSteps { @Given("^that the game has multiple race xml files$") public void that_the_game_has_multiple_race_xml_files() throws Throwable { -// mapMaker = MapMaker.getInstance(); -// String firstMap = mapMaker.getCurrentRacePath(); -// int numMaps = 0; -// do { -// mapMaker.next(); -// numMaps++; -// } while (!mapMaker.getCurrentRacePath().equals(firstMap)); -// Assert.assertTrue(numMaps >= 2); + mapMaker = MapMaker.getInstance(); + String firstMap = mapMaker.getCurrentRacePath(); + int numMaps = 0; + do { + mapMaker.next(); + numMaps++; + } while (!mapMaker.getCurrentRacePath().equals(firstMap)); + Assert.assertTrue(numMaps >= 2); } @Then("^all of them can be seen$") public void all_of_them_can_be_seen() throws Throwable { -// File[] files = new File(this.getClass().getResource("/maps/").getPath()).listFiles(); -// for (File file : files) { -// if (file.isFile()) { -// Assert.assertTrue(file.getAbsolutePath().equals(mapMaker.getCurrentRacePath())); -// mapMaker.next(); -// System.out.println(file.getAbsolutePath()); -// } -// } + File[] files = new File(this.getClass().getResource("/maps/").getPath()).listFiles(); + for (File file : files) { + if (file.isFile()) { + Assert.assertTrue(file.getAbsolutePath().equals(mapMaker.getCurrentRacePath())); + mapMaker.next(); + System.out.println(file.getAbsolutePath()); + } + } } @Given("^that I choose a race$")