From 1fec62042798d06b9260414d252c341e07e248f9 Mon Sep 17 00:00:00 2001 From: Michael Rausch Date: Mon, 11 Sep 2017 15:50:22 +1200 Subject: [PATCH] Merged 3d branch into new UI Tags: #story[1245] --- .../seng302/gameServer/MainServerThread.java | 33 +++------------ .../gameServer/ServerToClientThread.java | 42 ++++++------------- .../java/seng302/utilities/XMLGenerator.java | 11 ++--- .../controllers/RaceViewController.java | 27 +++++------- .../dialogs/ServerCreationController.java | 11 ++--- 5 files changed, 38 insertions(+), 86 deletions(-) diff --git a/src/main/java/seng302/gameServer/MainServerThread.java b/src/main/java/seng302/gameServer/MainServerThread.java index 4c8eaebc..40d2d4cd 100644 --- a/src/main/java/seng302/gameServer/MainServerThread.java +++ b/src/main/java/seng302/gameServer/MainServerThread.java @@ -5,9 +5,7 @@ import org.slf4j.LoggerFactory; import org.w3c.dom.Document; import org.xml.sax.InputSource; import org.xml.sax.SAXException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import seng302.gameServer.messages.*; +import seng302.gameServer.messages.Message; import seng302.model.GeoPoint; import seng302.model.Player; import seng302.model.PolarTable; @@ -33,9 +31,6 @@ import java.util.*; * Created by wmu16 on 13/07/17. */ public class MainServerThread implements Runnable, ClientConnectionDelegate { - - private Logger logger = LoggerFactory.getLogger(MainServerThread.class); - private static final int PORT = 4942; private static final Integer CLIENT_UPDATES_PER_SECOND = 60; @@ -203,22 +198,7 @@ public class MainServerThread implements Runnable, ClientConnectionDelegate { GameState.setWindDirection(direction.doubleValue()); } - // TODO: 29/08/17 wmu16 - This should not be in one function (init and a scheduling update) - public void startGame() { - initialiseBoatPositions(); - Timer t = new Timer(); - t.schedule(new TimerTask() { - @Override - public void run() { - broadcastMessage(MessageFactory.getRaceStatusMessage()); - if (GameState.getCurrentStage() == GameStages.PRE_RACE - || GameState.getCurrentStage() == GameStages.LOBBYING) { - broadcastMessage(MessageFactory.getRaceStartStatusMessage()); - } - } - }, 0, 500); - } // TODO: 29/08/17 wmu16 - This sort of update should be in game state @@ -331,14 +311,13 @@ public class MainServerThread implements Runnable, ClientConnectionDelegate { t.schedule(new TimerTask() { @Override public void run() { - broadcastMessage(makeRaceStatusMessage()); - if (GameState.getCurrentStage() == GameStages.PRE_RACE || GameState.getCurrentStage() == GameStages.LOBBYING) { - broadcastMessage(makeRaceStartMessage()); + broadcastMessage(MessageFactory.getRaceStatusMessage()); + if (GameState.getCurrentStage() == GameStages.PRE_RACE + || GameState.getCurrentStage() == GameStages.LOBBYING) { + broadcastMessage(MessageFactory.getRaceStartStatusMessage()); } - serverToClientThreads.remove(closedConnection); - closedConnection.terminate(); } - } + }, 0, 500); if (GameState.getCurrentStage() != GameStages.RACING) { diff --git a/src/main/java/seng302/gameServer/ServerToClientThread.java b/src/main/java/seng302/gameServer/ServerToClientThread.java index f942539d..df5d3141 100644 --- a/src/main/java/seng302/gameServer/ServerToClientThread.java +++ b/src/main/java/seng302/gameServer/ServerToClientThread.java @@ -4,35 +4,23 @@ package seng302.gameServer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import seng302.gameServer.messages.*; -import seng302.gameServer.messages.BoatAction; -import seng302.gameServer.messages.BoatLocationMessage; -import seng302.gameServer.messages.ClientType; -import seng302.gameServer.messages.CustomizeRequestType; -import seng302.gameServer.messages.Message; -import seng302.gameServer.messages.RegistrationResponseMessage; -import seng302.gameServer.messages.RegistrationResponseStatus; -import seng302.gameServer.messages.XMLMessage; -import seng302.gameServer.messages.XMLMessageSubType; -import seng302.gameServer.messages.YachtEventCodeMessage; import seng302.model.Player; import seng302.model.ServerYacht; import seng302.model.stream.packets.PacketType; import seng302.model.stream.packets.StreamPacket; -import seng302.model.stream.xml.generator.Race; +import seng302.model.stream.xml.generator.RaceXMLTemplate; import seng302.utilities.XMLGenerator; import java.io.*; import java.net.Socket; import java.net.SocketException; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import java.util.concurrent.ThreadLocalRandom; import java.util.stream.Collectors; import java.util.zip.CRC32; import java.util.zip.Checksum; -import seng302.model.stream.xml.generator.RaceXMLTemplate; -import seng302.model.stream.xml.generator.RegattaXMLTemplate; -import seng302.model.token.Token; -import seng302.utilities.XMLGenerator; /** * A class describing a single connection to a Client for the purposes of sending and receiving on @@ -220,26 +208,22 @@ public class ServerToClientThread implements Runnable { } public void sendSetupMessages() { - xml = new XMLGenerator(); - Race race = new Race(); + xmlGenerator = new XMLGenerator(); + RaceXMLTemplate race = new RaceXMLTemplate(new ArrayList<>(GameState.getYachts().values()), new ArrayList<>()); - for (ServerYacht yacht : GameState.getYachts().values()) { - race.addBoat(yacht); - } - - xml.setRace(race); + xmlGenerator.setRaceTemplate(race); XMLMessage xmlMessage; - xmlMessage = new XMLMessage(xml.getRegattaAsXml(), XMLMessageSubType.REGATTA, - xml.getRegattaAsXml().length()); + xmlMessage = new XMLMessage(xmlGenerator.getRegattaAsXml(), XMLMessageSubType.REGATTA, + xmlGenerator.getRegattaAsXml().length()); sendMessage(xmlMessage); - xmlMessage = new XMLMessage(xml.getBoatsAsXml(), XMLMessageSubType.BOAT, - xml.getBoatsAsXml().length()); + xmlMessage = new XMLMessage(xmlGenerator.getBoatsAsXml(), XMLMessageSubType.BOAT, + xmlGenerator.getBoatsAsXml().length()); sendMessage(xmlMessage); - xmlMessage = new XMLMessage(xml.getRaceAsXml(), XMLMessageSubType.RACE, - xml.getRaceAsXml().length()); + xmlMessage = new XMLMessage(xmlGenerator.getRaceAsXml(), XMLMessageSubType.RACE, + xmlGenerator.getRaceAsXml().length()); sendMessage(xmlMessage); } diff --git a/src/main/java/seng302/utilities/XMLGenerator.java b/src/main/java/seng302/utilities/XMLGenerator.java index 2d45dc23..f118a6e2 100644 --- a/src/main/java/seng302/utilities/XMLGenerator.java +++ b/src/main/java/seng302/utilities/XMLGenerator.java @@ -4,16 +4,13 @@ import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; import seng302.gameServer.messages.XMLMessageSubType; -import seng302.model.stream.xml.generator.Race; -import seng302.model.stream.xml.generator.Regatta; +import seng302.model.stream.xml.generator.RaceXMLTemplate; +import seng302.model.stream.xml.generator.RegattaXMLTemplate; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; -import seng302.model.stream.xml.generator.RaceXMLTemplate; -import seng302.model.stream.xml.generator.RegattaXMLTemplate; -import seng302.gameServer.messages.XMLMessageSubType; import java.util.Random; /** @@ -25,12 +22,10 @@ public class XMLGenerator { private static final String BOATS_TEMPLATE_NAME = "boats.ftlh"; private static final String RACE_TEMPLATE_NAME = "race.ftlh"; private Configuration configuration; - private static Regatta regatta = null; - private Race race; private RegattaXMLTemplate regatta; private RaceXMLTemplate race; - public static Regatta DEFAULT_REGATTA = new Regatta("Party Parrot Test Server " + new Random().nextInt(100), + public static RegattaXMLTemplate DEFAULT_REGATTA = new RegattaXMLTemplate("Party Parrot Test Server " + new Random().nextInt(100), "Bermuda", 57.6679590, 11.8503233); diff --git a/src/main/java/seng302/visualiser/controllers/RaceViewController.java b/src/main/java/seng302/visualiser/controllers/RaceViewController.java index 13ec30c1..d8b28e81 100644 --- a/src/main/java/seng302/visualiser/controllers/RaceViewController.java +++ b/src/main/java/seng302/visualiser/controllers/RaceViewController.java @@ -1,15 +1,7 @@ package seng302.visualiser.controllers; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Timer; -import java.util.TimerTask; -import java.util.concurrent.TimeUnit; import javafx.animation.Timeline; import javafx.application.Platform; -import javafx.collections.FXCollections; import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; import javafx.fxml.FXML; @@ -30,14 +22,11 @@ import javafx.scene.layout.Pane; import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; -import javafx.scene.paint.Paint; import javafx.scene.shape.Line; import javafx.scene.shape.Polyline; import javafx.scene.text.Text; import javafx.stage.Stage; import javafx.stage.StageStyle; -import javafx.util.StringConverter; -import seng302.gameServer.messages.BoatStatus; import seng302.model.ClientYacht; import seng302.model.RaceState; import seng302.model.mark.CompoundMark; @@ -50,6 +39,10 @@ import seng302.visualiser.controllers.annotations.ImportantAnnotationsState; import seng302.visualiser.fxObjects.assets_2D.BoatObject; import seng302.visualiser.fxObjects.assets_2D.WindArrow; +import java.io.IOException; +import java.util.*; +import java.util.concurrent.TimeUnit; + /** * Controller class that manages the display of a race */ @@ -112,12 +105,12 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel //positionVbox.getStylesheets().add(getClass().getResource("/css/master.css").toString()); //selectAnnotationBtn.setOnAction(event -> loadSelectAnnotationView()); - rvAnchorPane.prefWidthProperty().bind(ViewManager.getInstance().getDecorator().widthProperty()); - rvAnchorPane.prefHeightProperty().bind(ViewManager.getInstance().getDecorator().heightProperty()); - selectAnnotationBtn.setOnAction(event -> loadSelectAnnotationView()); - windArrowHolder.getChildren().addAll(windArrow); - windArrow.setLayoutX(windArrowHolder.getWidth() / 2); - windArrow.setLayoutY(windArrowHolder.getHeight() / 2); +// rvAnchorPane.prefWidthProperty().bind(ViewManager.getInstance().getDecorator().widthProperty()); +// rvAnchorPane.prefHeightProperty().bind(ViewManager.getInstance().getDecorator().heightProperty()); +// selectAnnotationBtn.setOnAction(event -> loadSelectAnnotationView()); +// windArrowHolder.getChildren().addAll(windArrow); +// windArrow.setLayoutX(windArrowHolder.getWidth() / 2); +// windArrow.setLayoutY(windArrowHolder.getHeight() / 2); } diff --git a/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java b/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java index eff7c395..cac2acb7 100644 --- a/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java +++ b/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java @@ -2,17 +2,17 @@ package seng302.visualiser.controllers.dialogs; import com.jfoenix.controls.JFXButton; import com.jfoenix.controls.JFXSlider; -import com.jfoenix.validation.RequiredFieldValidator; -import java.net.URL; -import java.util.ResourceBundle; - import com.jfoenix.controls.JFXTextField; +import com.jfoenix.validation.RequiredFieldValidator; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Label; import seng302.gameServer.ServerDescription; -import seng302.visualiser.validators.FieldLengthValidator; import seng302.visualiser.controllers.ViewManager; +import seng302.visualiser.validators.FieldLengthValidator; + +import java.net.URL; +import java.util.ResourceBundle; public class ServerCreationController implements Initializable { @@ -49,6 +49,7 @@ public class ServerCreationController implements Initializable { private void validateServerSettings() { serverName.validate(); System.out.println(serverName.getActiveValidator()); + createServer(); }