Implemented tutorial for zooming as it was left out from the last commit. Refactored updating tutorial state. #story[1189]

main
David Wu 8 years ago
parent d2d5ae62eb
commit bad6422ca9

@ -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.input.ScrollEvent;
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,7 +26,6 @@ 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.*; import visualiser.model.*;
@ -122,12 +120,12 @@ public class RaceController extends Controller {
controlKey.onAction(); // Change key state if applicable controlKey.onAction(); // Change key state if applicable
if (isTutorial){ if (isTutorial){
if (controlKey.getProtocolCode().equals(currentState.getAction())){ if (controlKey.getProtocolCode().equals(currentState.getAction())){
updateTutorialState(); checkTutorialState();
} }
} }
controllerClient.sendKey(controlKey); controllerClient.sendKey(controlKey);
event.consume(); event.consume();
} catch (InterruptedException e) { } catch (InterruptedException e) {
@ -257,9 +255,23 @@ public class RaceController extends Controller {
if(key != null) { if(key != null) {
switch (key.toString()) { switch (key.toString()) {
case "Zoom In": case "Zoom In":
if (currentState.equals(TutorialState.ZOOMIN)) {
try {
checkTutorialState();
} catch (Exception e1) {
e1.printStackTrace();
}
}
view3D.updateDistance(-10); view3D.updateDistance(-10);
break; break;
case "Zoom Out": case "Zoom Out":
if (currentState.equals(TutorialState.ZOOMOUT)) {
try {
checkTutorialState();
} catch (Exception e1) {
e1.printStackTrace();
}
}
view3D.updateDistance(10); view3D.updateDistance(10);
break; break;
} }
@ -451,10 +463,10 @@ public class RaceController extends Controller {
if (parent.getGameType()==2){ if (parent.getGameType()==2){
isTutorial = true; isTutorial = true;
tutorialStates = new ArrayList<>(Arrays.asList(TutorialState.values())); tutorialStates = new ArrayList<>(Arrays.asList(TutorialState.values()));
System.out.println(tutorialStates);
currentState = tutorialStates.get(0); currentState = tutorialStates.get(0);
tutorialStates.remove(0); tutorialStates.remove(0);
System.out.println(currentState); System.out.println("Welcome to tutorial. Exit at anytime with ESC. Turn upwind.");
System.out.println(tutorialStates);
} }
@ -555,35 +567,43 @@ public class RaceController extends Controller {
infoTableShow = !infoTableShow; infoTableShow = !infoTableShow;
} }
private void updateTutorialState() throws Exception { private void updateTutorialState(){
currentState = tutorialStates.get(0);
tutorialStates.remove(0);
}
private void checkTutorialState() throws Exception {
switch (currentState){ switch (currentState){
case UPWIND: case UPWIND:
System.out.println("You turned upwind. Now go downwind."); System.out.println("You turned upwind. Now go downwind.");
currentState = tutorialStates.get(0); updateTutorialState();
tutorialStates.remove(0);
break; break;
case DOWNWIND: case DOWNWIND:
System.out.println("You turned downwind. Now go tack/gybe."); System.out.println("You turned downwind. Now go tack/gybe.");
currentState = tutorialStates.get(0); updateTutorialState();
tutorialStates.remove(0);
break; break;
case TACKGYBE: case TACKGYBE:
System.out.println("You tack/gybe. Now go VMG."); System.out.println("You tack/gybe. Now go VMG.");
currentState = tutorialStates.get(0); updateTutorialState();
tutorialStates.remove(0);
break; break;
case VMG: case VMG:
System.out.println("You VMG. Now sails-in."); System.out.println("You VMG. Now sails-in.");
currentState = tutorialStates.get(0); updateTutorialState();
tutorialStates.remove(0);
break; break;
case SAILSIN: case SAILSIN:
System.out.println("You sails-in. Now sails-out."); System.out.println("You sails-in. Now sails-out.");
currentState = tutorialStates.get(0); updateTutorialState();
tutorialStates.remove(0);
break; break;
case SAILSOUT: case SAILSOUT:
System.out.println("You sails-out. Tutorial finished. Well done!"); System.out.println("You sails-out. Now zoom in.");
updateTutorialState();
break;
case ZOOMIN:
System.out.println("You zoomed in. Now zoom out.");
updateTutorialState();
break;
case ZOOMOUT:
System.out.println("You zoomed out. Tutorial finished. Well done!");
Alert alert = new Alert(Alert.AlertType.INFORMATION); Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Finished Tutorial"); alert.setTitle("Finished Tutorial");
alert.setHeaderText("You have finished the tutorial."); alert.setHeaderText("You have finished the tutorial.");

@ -51,7 +51,13 @@ public enum TutorialState {
/** /**
* State for sails-out in tutorial * State for sails-out in tutorial
*/ */
SAILSOUT(BoatActionEnum.SAILS_OUT); SAILSOUT(BoatActionEnum.SAILS_OUT),
ZOOMIN(null),
ZOOMOUT(null);
private BoatActionEnum action; private BoatActionEnum action;

@ -28,7 +28,7 @@
<?import javafx.scene.layout.StackPane?> <?import javafx.scene.layout.StackPane?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<SplitPane fx:id="racePane" dividerPositions="1.0" prefHeight="431.0" prefWidth="610.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="visualiser.Controllers.RaceController"> <SplitPane fx:id="racePane" dividerPositions="1.0" prefHeight="431.0" prefWidth="610.0" visible="false" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="visualiser.Controllers.RaceController">
<items> <items>
<GridPane fx:id="canvasBase"> <GridPane fx:id="canvasBase">
<columnConstraints> <columnConstraints>

Loading…
Cancel
Save