Merge branch 'master' of https://eng-git.canterbury.ac.nz/seng302-2017/team-7 into controllerSplit

# Conflicts:
#	racevisionGame/src/main/java/visualiser/Controllers/HostController.java
#	racevisionGame/src/main/java/visualiser/Controllers/MainController.java
#	racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java
#	racevisionGame/src/main/java/visualiser/Controllers/StartController.java
#	racevisionGame/src/main/java/visualiser/Controllers/TitleController.java
#	racevisionGame/src/main/resources/visualiser/scenes/raceView.fxml
#	racevisionGame/src/main/resources/visualiser/scenes/titleScreen.fxml
main
Jessica Syder 8 years ago
parent c30391ef23
commit 9bc36ba544

@ -57,7 +57,7 @@ public class LobbyController extends Controller {
} else { } else {
joinGameBtn.setDisable(true); joinGameBtn.setDisable(true);
} }
} catch (Exception e){} } catch (Exception ignored){}
} }
/** /**

@ -12,7 +12,6 @@ import javafx.scene.chart.LineChart;
import javafx.scene.control.*; import javafx.scene.control.*;
import javafx.scene.input.KeyCode; import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent; import javafx.scene.input.KeyEvent;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
import javafx.scene.shape.MeshView; import javafx.scene.shape.MeshView;
@ -27,6 +26,7 @@ import visualiser.app.App;
import visualiser.enums.TutorialState; import visualiser.enums.TutorialState;
import visualiser.gameController.ControllerClient; import visualiser.gameController.ControllerClient;
import visualiser.gameController.Keys.ControlKey; import visualiser.gameController.Keys.ControlKey;
import visualiser.gameController.Keys.KeyFactory;
import visualiser.layout.Subject3D; import visualiser.layout.Subject3D;
import visualiser.layout.View3D; import visualiser.layout.View3D;
import visualiser.model.Sparkline; import visualiser.model.Sparkline;
@ -34,9 +34,12 @@ import visualiser.model.VisualiserBoat;
import visualiser.model.VisualiserRaceEvent; import visualiser.model.VisualiserRaceEvent;
import visualiser.model.VisualiserRaceState; import visualiser.model.VisualiserRaceState;
import visualiser.utils.GPSConverter; import visualiser.utils.GPSConverter;
import java.io.IOException; import java.io.IOException;
import java.net.URL; import java.net.URL;
import java.util.*; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -73,7 +76,6 @@ public class RaceViewController extends Controller {
private @FXML TableColumn<VisualiserBoat, Leg> boatMarkColumn; private @FXML TableColumn<VisualiserBoat, Leg> boatMarkColumn;
private @FXML TableColumn<VisualiserBoat, Number> boatSpeedColumn; private @FXML TableColumn<VisualiserBoat, Number> boatSpeedColumn;
private @FXML LineChart<Number, Number> sparklineChart; private @FXML LineChart<Number, Number> sparklineChart;
private @FXML Label tutorialText; private @FXML Label tutorialText;
@ -91,10 +93,35 @@ public class RaceViewController extends Controller {
this.isHost = isHost; this.isHost = isHost;
keyFactory.load(); keyFactory.load();
tutorialCheck();
initKeypressHandler(); initKeypressHandler();
initialiseRaceVisuals(); initialiseRaceVisuals();
} }
/**
* Checks if the current game is a tutorial race and sets up initial
* tutorial displays if it is.
*/
private void tutorialCheck(){
if (App.gameType == 4) {
isTutorial = true;
tutorialText.setVisible(true);
tutorialStates = new ArrayList<>(Arrays.asList(TutorialState.values()));
currentState = tutorialStates.get(0);
tutorialStates.remove(0);
searchMapForKey("Upwind");
tutorialText.setText(
"Welcome to the tutorial! Exit at anytime with ESC. \nWe will first learn how to turn upwind. Press " +
keyToPress + " to turn upwind.");
} else {
isTutorial = false;
tutorialText.setVisible(false);
}
}
/** /**
* Sets up the listener and actions that occur when a key is pressed. * Sets up the listener and actions that occur when a key is pressed.
*/ */
@ -167,7 +194,6 @@ public class RaceViewController extends Controller {
initialiseFps(); initialiseFps();
initialiseInfoTable(); initialiseInfoTable();
initialiseView3D(); initialiseView3D();
initialiseArrow();
initialiseRaceClock(); initialiseRaceClock();
raceTimer(); // start the timer raceTimer(); // start the timer
new Sparkline(this.raceState, this.sparklineChart); new Sparkline(this.raceState, this.sparklineChart);
@ -374,45 +400,6 @@ public class RaceViewController extends Controller {
}); });
} }
/**
* Displays a specified race.
* @param visualiserRace Object modelling the race.
* @param controllerClient Socket Client that manipulates the controller.
* @param isHost is user a host
*/
public void startRace(VisualiserRaceEvent visualiserRace, ControllerClient controllerClient, Boolean isHost) {
this.visualiserRace = visualiserRace;
this.controllerClient = controllerClient;
this.isHost = isHost;
//Check if the game is a tutorial
if (parent.getGameType()==4){
isTutorial = true;
tutorialText.setVisible(true);
tutorialStates = new ArrayList<>(Arrays.asList(TutorialState.values()));
currentState = tutorialStates.get(0);
tutorialStates.remove(0);
searchMapForKey("Upwind");
tutorialText.setText("Welcome to the tutorial! Exit at anytime with ESC. \nWe will first learn how to turn upwind. Press " + keyToPress + " to turn upwind.");
} else {
isTutorial = false;
tutorialText.setVisible(false);
}
initialiseRace();
//Display this controller.
racePane.setVisible(true);
}
/** /**
* Transition from the race view to the finish view. * Transition from the race view to the finish view.
*/ */
@ -422,16 +409,6 @@ public class RaceViewController extends Controller {
fc.loadFinish(raceState.getBoats()); fc.loadFinish(raceState.getBoats());
} }
/**
* Initialises the arrow controller with data from the race to observe.
* @param race The race to observe.
*/
private void initialiseArrow(VisualiserRaceEvent race) {
arrowController.setWindProperty(race.getVisualiserRaceState().windProperty());
}
/** /**
* Timer which monitors the race. * Timer which monitors the race.
*/ */
@ -581,19 +558,16 @@ public class RaceViewController extends Controller {
alert.setContentText("Now you know the controls you are ready to race!"); alert.setContentText("Now you know the controls you are ready to race!");
Optional<ButtonType> result = alert.showAndWait(); Optional<ButtonType> result = alert.showAndWait();
if (result.get() == ButtonType.OK) { if (result.get() == ButtonType.OK) {
parent.endEvent(); App.game.endEvent();
racePane.setVisible(false); loadTitleScreen();
App.app.showMainStage(App.getStage());
} }
break; break;
default: default:
//State not found. Exit tutorial to title menu //State not found. Exit tutorial to title menu
parent.endEvent(); App.game.endEvent();
racePane.setVisible(false); loadTitleScreen();
App.app.showMainStage(App.getStage());
break; break;
} }
} }
} }

@ -1,28 +1,15 @@
package visualiser.Controllers; package visualiser.Controllers;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.control.RadioButton; import javafx.scene.control.RadioButton;
import javafx.scene.image.Image; import javafx.scene.image.Image;
import javafx.scene.image.ImageView; import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.Pane; import javafx.scene.layout.Pane;
import javafx.stage.Modality; import javafx.stage.Modality;
import javafx.stage.Stage;
import mock.app.Event;
import mock.exceptions.EventConstructionException;
import javafx.stage.WindowEvent;
import visualiser.app.App; import visualiser.app.App;
import java.io.IOException; import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
/** /**
* Controller for the opening title window. * Controller for the opening title window.
@ -93,12 +80,10 @@ public class TitleController extends Controller {
} }
} }
public void tutorialStartPressed() {
public void tutorialStartPressed() throws IOException { App.gameType = 4;
titleWrapper.setVisible(false); HostGameController hgc = new HostGameController();
parent.setGameType(4); hgc.hostGamePressed();
parent.beginGame();
} }
} }

@ -3,7 +3,6 @@ package visualiser.app;
import javafx.animation.FadeTransition; import javafx.animation.FadeTransition;
import javafx.application.Application; import javafx.application.Application;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.concurrent.Task; import javafx.concurrent.Task;
@ -14,7 +13,6 @@ import javafx.geometry.Rectangle2D;
import javafx.scene.Parent; import javafx.scene.Parent;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.ProgressBar; import javafx.scene.control.ProgressBar;
import javafx.scene.effect.DropShadow; import javafx.scene.effect.DropShadow;
import javafx.scene.image.Image; import javafx.scene.image.Image;
@ -32,6 +30,7 @@ public class App extends Application {
private static Stage stage; private static Stage stage;
public static Event game; public static Event game;
public static Boolean dayMode = true; public static Boolean dayMode = true;
public static Integer gameType = 0;
private Pane splashLayout; private Pane splashLayout;
private ProgressBar loadProgress; private ProgressBar loadProgress;
private Label progressText; private Label progressText;

@ -1,12 +1,6 @@
package visualiser.enums; package visualiser.enums;
import javafx.scene.input.KeyCode;
import network.Messages.BoatAction;
import network.Messages.Enums.BoatActionEnum; import network.Messages.Enums.BoatActionEnum;
import visualiser.gameController.Keys.ControlKey;
import static visualiser.app.App.keyFactory;
import java.util.ArrayList;
/** /**
* State of which stage the tutorial is currently in * State of which stage the tutorial is currently in

@ -40,7 +40,9 @@
</Text> </Text>
<RadioButton fx:id="nightModeRD" layoutX="681.0" layoutY="168.0" mnemonicParsing="false" onAction="#setNightMode" text="Night Mode" /> <RadioButton fx:id="nightModeRD" layoutX="681.0" layoutY="168.0" mnemonicParsing="false" onAction="#setNightMode" text="Night Mode" />
<RadioButton fx:id="dayModeRD" layoutX="574.0" layoutY="168.0" mnemonicParsing="false" onAction="#setDayMode" selected="true" text="Day Mode" /> <RadioButton fx:id="dayModeRD" layoutX="574.0" layoutY="168.0" mnemonicParsing="false" onAction="#setDayMode" selected="true" text="Day Mode" />
<Button layoutX="28.0" layoutY="152.0" mnemonicParsing="false" onAction="#controlBtnPressed" text="Controls" /> <Button layoutX="28.0" layoutY="152.0"
mnemonicParsing="false" onAction="#showControls"
text="Controls" />
</children> </children>
</Pane> </Pane>
<Pane fx:id="menuPane" prefHeight="20.0" prefWidth="20.0" style="-fx-background-color: #6be6ff;" GridPane.columnSpan="4" GridPane.rowSpan="4"> <Pane fx:id="menuPane" prefHeight="20.0" prefWidth="20.0" style="-fx-background-color: #6be6ff;" GridPane.columnSpan="4" GridPane.rowSpan="4">

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_144" class="java.beans.XMLDecoder"> <java version="1.8.0_121" class="java.beans.XMLDecoder">
<object class="java.util.HashMap"> <object class="java.util.HashMap">
<void method="put"> <void method="put">
<string>SPACE</string> <string>SPACE</string>

Loading…
Cancel
Save