Merge branch 'develop' into story1273_minimap

# Conflicts:
#	src/main/java/seng302/visualiser/fxObjects/assets_3D/ModelFactory.java
#	src/main/resources/meshes/boatSTLs/parrot_features.stl
This commit is contained in:
William Muir
2017-09-28 14:41:08 +13:00
16 changed files with 202 additions and 61 deletions
+14
View File
@@ -13,6 +13,9 @@ import org.slf4j.LoggerFactory;
import seng302.discoveryServer.DiscoveryServer;
import seng302.visualiser.controllers.ViewManager;
import java.util.Timer;
import java.util.TimerTask;
public class App extends Application {
private static Logger logger = LoggerFactory.getLogger(App.class);
@@ -92,6 +95,17 @@ public class App extends Application {
}
public static void main(String[] args) throws Exception {
/*
* Do not trust Java to do garbage collection
*/
new Timer().schedule(new TimerTask() {
@Override
public void run() {
System.gc();
}
}, 0, 1200);
try {
parseArgs(args);
} catch (ParseException e) {
@@ -158,7 +158,13 @@ public abstract class Message {
* @return The current buffer as a byte array
*/
public byte[] getBuffer(){
return buffer.array();
byte[] bytes = buffer.array();
// buffer.reset();
// buffer.clear();
// buffer = null;
return bytes;
}
/**
@@ -35,7 +35,7 @@ public class MapMaker {
private int index = 0;
private XMLGenerator xmlGenerator = new XMLGenerator();
private List<String> maps = new ArrayList<>(Arrays.asList("default.xml", "horseshoe.xml"));
private List<String> maps = new ArrayList<>(Arrays.asList("default.xml", "horseshoe.xml", "loop.xml"));
public static MapMaker getInstance() {
if (instance == null) {
@@ -1,24 +1,12 @@
package seng302.visualiser.controllers;
import com.jfoenix.controls.JFXDecorator;
import com.jfoenix.controls.JFXSnackbar;
import javafx.application.Platform;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.SceneAntialiasing;
import javafx.scene.image.Image;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import seng302.gameServer.ServerAdvertiser;
import seng302.utilities.Sounds;
import seng302.visualiser.GameClient;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.application.Platform;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
/**
* Created by Kusal on 26-Sep-17.
@@ -37,7 +25,7 @@ public class SplashScreenController implements Initializable{
class SplashScreen extends Thread {
public void run(){
try {
Thread.sleep(2000);
Thread.sleep(3000);
Platform.runLater(new Runnable() {
@Override
public void run() {
@@ -27,7 +27,7 @@ public class KeyBindingDialogController implements Initializable {
@FXML
private Label closeLabel;
@FXML
private JFXButton zoomInbtn;
private JFXButton zoomInBtn;
@FXML
private JFXButton zoomOutBtn;
@FXML
@@ -43,6 +43,8 @@ public class KeyBindingDialogController implements Initializable {
@FXML
private JFXButton resetBtn;
@FXML
private JFXButton confirmBtn;
@FXML
private Label upwindLabel;
@FXML
private Label downwindLabel;
@@ -70,7 +72,7 @@ public class KeyBindingDialogController implements Initializable {
gameKeyBind = GameKeyBind.getInstance();
buttons = new ArrayList<>();
Collections.addAll(buttons,
zoomInbtn, zoomOutBtn, vmgBtn, sailInOutBtn, tackGybeBtn, upwindBtn, downwindBtn,
zoomInBtn, zoomOutBtn, vmgBtn, sailInOutBtn, tackGybeBtn, upwindBtn, downwindBtn,
viewButton, rightButton, leftButton, forwardButton, backwardButton);
bindButtonWithAction();
loadKeyBind();
@@ -91,6 +93,7 @@ public class KeyBindingDialogController implements Initializable {
});
closeLabel.setOnMouseClicked(event -> ViewManager.getInstance().closeKeyBindingDialog());
confirmBtn.setOnMouseClicked(event -> ViewManager.getInstance().closeKeyBindingDialog());
}
/**
@@ -93,7 +93,7 @@ public class ModelFactory {
Group boatAssets = new Group();
MeshView hull = importBoatSTL(boatType.hullFile);
hull.setMaterial(new PhongMaterial(primaryColour));
boatAssets.getChildren().addAll(hull);
boatAssets.getChildren().add(hull);
if (boatType.mastFile != null) {
MeshView mast = importBoatSTL(boatType.mastFile);
@@ -105,14 +105,14 @@ public class ModelFactory {
MeshView sail = importBoatSTL(boatType.sailFile);
sail.setMaterial(
new PhongMaterial(boatType == BoatMeshType.PARROT ? Color.BLACK : Color.WHITE)
new PhongMaterial(boatType == BoatMeshType.PARROT ? Color.DARKGRAY : Color.WHITE)
);
boatAssets.getChildren().addAll(sail);
boatAssets.getChildren().add(sail);
if (boatType.jibFile != null) {
MeshView jib = importBoatSTL(boatType.jibFile);
sail.setMaterial(
new PhongMaterial(boatType == BoatMeshType.PARROT ? Color.DARKGRAY : Color.WHITE)
jib.setMaterial(
new PhongMaterial(boatType == BoatMeshType.PARROT ? Color.BLACK : Color.WHITE)
);
boatAssets.getChildren().add(jib);
}
+45 -5
View File
@@ -1,10 +1,50 @@
#background {
-fx-background-color: #E7F1F8;
.root {
-fx-effect: -fx-pp-dropshadow-dark;
-fx-background-radius: 5;
-fx-padding: 10;
}
#rootPane {
-fx-background-image: url("/images/waves.png");
}
#headText {
-fx-background-color: transparent;
-fx-font-size: 52px;
-fx-text-fill: -fx-pp-light-text-color;
-fx-effect: -fx-pp-dropshadow-headers;
-fx-text-fill: rgb(30, 30, 30);
-fx-effect: -fx-pp-dropshadow-dark;
}
#subHeadLabel {
-fx-text-fill: rgb(30, 30, 30);
-fx-effect: -fx-pp-dropshadow-dark;
-fx-font-size: 12px;
}
.materialDesign-purple .arc {
-fx-stroke: #ab47bc;
}
.materialDesign-blue .arc {
-fx-stroke: #2962ff;
}
.materialDesign-cyan .arc {
-fx-stroke: #00b8d4;
}
.materialDesign-green .arc {
-fx-stroke: #00c853;
}
.materialDesign-yellow .arc {
-fx-stroke: #ffd600;
}
.materialDesign-orange .arc {
-fx-stroke: #ff6d00;
}
.materialDesign-red .arc {
-fx-stroke: #d50000;
}
@@ -35,14 +35,14 @@ JFXToggleButton {
-fx-text-fill: -fx-pp-theme-color;
}
#resetBtn {
#resetBtn, #confirmBtn {
-fx-background-color: -fx-pp-theme-color;
-fx-text-fill: -fx-pp-front-color;
-fx-effect: -fx-pp-dropshadow-light;
-fx-font-size: 18;
}
#resetBtn:hover {
#resetBtn:hover, #confirmBtn:hover {
-fx-font-size: 20;
}
+61
View File
@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<RaceDefinition>
<CourseName> Loopty Loop </CourseName>
<CentralLat> 57.6679590 </CentralLat>
<CentralLng> 11.8503233 </CentralLng>
<MaxPlayers> 5 </MaxPlayers>
<Marks>
<CompoundMark CompoundMarkID="1">
<Mark Lat="57.6675700" Lng="11.8359880"/>
<Mark Lat="57.667610" Lng="11.833473"/>
</CompoundMark>
<CompoundMark CompoundMarkID="2">
<Mark Lat="57.670914" Lng="11.835263"/>
<Mark Lat="57.6699024" Lng="11.8353195"/>
</CompoundMark>
<CompoundMark CompoundMarkID="3">
<Mark Lat="57.6674596" Lng="11.8417500"/>
<Mark Lat="57.667473" Lng="11.84429"/>
</CompoundMark>
<CompoundMark CompoundMarkID="4">
<Mark Lat="57.6657945" Lng="11.8351409"/>
<Mark Lat="57.6643158" Lng="11.8352297"/>
</CompoundMark>
<CompoundMark CompoundMarkID="5">
<Mark Lat="57.667311" Lng="11.828857"/>
<Mark Lat="57.667334" Lng="11.825853"/>
</CompoundMark>
</Marks>
<Course>
<OpeningSegment>
<Corner CompoundMarkID="1" Rounding="PS"/>
<Corner CompoundMarkID="2" Rounding="P"/>
</OpeningSegment>
<RepeatingSegment>
<Corner CompoundMarkID="3" Rounding="SP"/>
<Corner CompoundMarkID="4" Rounding="PS"/>
</RepeatingSegment>
<ClosingSegment>
<Corner CompoundMarkID="5" Rounding="PS"/>
</ClosingSegment>
</Course>
<CourseLimit>
<Limit Lat="57.672937" Lng="11.836257" />
<Limit Lat="57.671239" Lng="11.843078" />
<Limit Lat="57.667128" Lng="11.848022" />
<Limit Lat="57.664512" Lng="11.844839" />
<Limit Lat="57.662515" Lng="11.835569" />
<Limit Lat="57.663939" Lng="11.827501" />
<Limit Lat="57.667542" Lng="11.822952" />
<Limit Lat="57.671123" Lng="11.826858" />
</CourseLimit>
</RaceDefinition>
Binary file not shown.
Binary file not shown.
Binary file not shown.
+2 -2
View File
@@ -113,8 +113,8 @@
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="80.0" minHeight="80.0" prefHeight="80.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="1.7976931348623157E308" minHeight="400.0" prefHeight="459.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="70.0" minHeight="70.0" prefHeight="70.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="1.7976931348623157E308" minHeight="400.0" prefHeight="429.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="100.0" minHeight="100.0" prefHeight="100.0" vgrow="SOMETIMES" />
</rowConstraints>
<stylesheets>
<String fx:value="/css/Master.css" />
+34 -17
View File
@@ -1,30 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import com.jfoenix.controls.JFXSpinner?>
<?import java.net.URL?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.StackPane?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>
<StackPane id="background" fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="seng302.visualiser.controllers.SplashScreenController">
<StackPane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity"
minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8"
xmlns:fx="http://javafx.com/fxml/1"
fx:controller="seng302.visualiser.controllers.SplashScreenController">
<children>
<ImageView fitHeight="296.0" fitWidth="295.0" pickOnBounds="true" preserveRatio="true" StackPane.alignment="TOP_CENTER">
<AnchorPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308">
<children>
<Label fx:id="subHeadLabel" layoutX="225.0" layoutY="370.0"
text="MADE BY :PARTYPARROT:"/>
<StackPane layoutX="150.0" layoutY="10.0" prefHeight="150.0" prefWidth="200.0">
<children>
<ImageView fitHeight="190.0" fitWidth="190.0" pickOnBounds="true"
preserveRatio="true">
<image>
<Image url="@../PP.png" />
<Image url="@../PP.png"/>
</image>
<StackPane.margin>
<Insets top="20.0" />
</StackPane.margin>
</ImageView>
<Text fx:id="headText" strokeType="OUTSIDE" strokeWidth="0.0" text="Party Parrots at Sea" StackPane.alignment="BOTTOM_CENTER">
<font>
<Font name="System Bold" size="42.0" />
</font>
<StackPane.margin>
<Insets bottom="20.0" />
</StackPane.margin>
</Text>
<JFXSpinner fx:id="materialDesignRed" radius="150.0" startingAngle="0.0"
styleClass="materialDesign-red"/>
<JFXSpinner radius="140.0" startingAngle="20.0"
styleClass="materialDesign-orange"/>
<JFXSpinner radius="130.0" startingAngle="40.0"
styleClass="materialDesign-yellow"/>
<JFXSpinner radius="120.0" startingAngle="60.0"
styleClass="materialDesign-green"/>
<JFXSpinner radius="110.0" startingAngle="80.0" styleClass="materialDesign-cyan"/>
<JFXSpinner radius="100.0" startingAngle="100.0"
styleClass="materialDesign-blue"/>
<JFXSpinner radius="90.0" startingAngle="120.0"
styleClass="materialDesign-purple"/>
</children>
</StackPane>
<Label fx:id="headText" layoutX="36.0" layoutY="295.0" text="PARTY PARROT AT SEA"/>
</children>
</AnchorPane>
</children>
<stylesheets>
<URL value="@../css/Master.css"/>
@@ -23,6 +23,7 @@
<GridPane>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
<ColumnConstraints/>
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="60.0"
@@ -112,7 +113,7 @@
<Insets/>
</GridPane.margin>
</Label>
<JFXButton id="ZOOM IN" fx:id="zoomInbtn" buttonType="RAISED"
<JFXButton id="ZOOM IN" fx:id="zoomInBtn" buttonType="RAISED"
maxHeight="-Infinity" maxWidth="-Infinity" minHeight="35.0"
minWidth="-Infinity" prefWidth="120.0" text="Z"
GridPane.columnIndex="1" GridPane.halignment="CENTER"
@@ -223,8 +224,19 @@
GridPane.valignment="TOP"/>
<JFXButton fx:id="resetBtn" buttonType="RAISED" maxHeight="-Infinity"
maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="45.0"
prefWidth="150.0" text="RESET" GridPane.columnSpan="2" GridPane.halignment="CENTER"
GridPane.rowIndex="2" GridPane.valignment="CENTER"/>
prefWidth="140.0" text="RESET" GridPane.columnSpan="2" GridPane.halignment="LEFT"
GridPane.rowIndex="2" GridPane.valignment="CENTER">
<GridPane.margin>
<Insets left="60.0"/>
</GridPane.margin>
</JFXButton>
<JFXButton fx:id="confirmBtn" buttonType="RAISED" maxHeight="-Infinity"
maxWidth="-Infinity" minHeight="45.0" minWidth="140.0" prefHeight="45.0"
prefWidth="140.0" text="CONFIRM" GridPane.halignment="RIGHT" GridPane.rowIndex="2">
<GridPane.margin>
<Insets right="60.0"/>
</GridPane.margin>
</JFXButton>
</children>
</GridPane>
</children>