234 lines
7.3 KiB
Java
234 lines
7.3 KiB
Java
package gui;
|
|
|
|
import javafx.geometry.Pos;
|
|
import javafx.scene.Scene;
|
|
import javafx.scene.control.*;
|
|
import javafx.scene.layout.BorderPane;
|
|
import javafx.scene.layout.HBox;
|
|
import javafx.scene.layout.VBox;
|
|
import javafx.scene.text.Font;
|
|
import javafx.stage.Stage;
|
|
import logic.Player;
|
|
import logic.FileSaving;
|
|
import logic.StartLogic;
|
|
|
|
/**
|
|
* 2019-03-10
|
|
* Authors: Harkamal, Vikram, Haris, Siddhant, Nathan
|
|
* StartGUI class, Initializes and displays the start menu for Taipan
|
|
*/
|
|
|
|
|
|
public class StartGUI extends Player {
|
|
|
|
private BorderPane borderPane = new BorderPane();
|
|
private HBox hBox = new HBox();
|
|
private TextField nameField = new TextField();
|
|
private Button startButton = new Button();
|
|
private Button continueButton = new Button();
|
|
private VBox vBox = new VBox();
|
|
private Label choiceLabel = new Label();
|
|
private RadioButton gunChoice = new RadioButton();
|
|
private ToggleGroup Start = new ToggleGroup();
|
|
private RadioButton cashChoice = new RadioButton();
|
|
private VBox vBox0 = new VBox();
|
|
private Label title = new Label();
|
|
private Label authors = new Label();
|
|
|
|
/**
|
|
* Copy constructor.
|
|
* @param player object of the class Player
|
|
*/
|
|
public StartGUI(Player player) {
|
|
Player playerTemp = new Player(player);
|
|
setPlayer(playerTemp);
|
|
}
|
|
|
|
/**
|
|
* Asks the user to input the name that they would like to be called in the game
|
|
*
|
|
* @param name the name that you would like to be called in the game
|
|
*/
|
|
public void setFirm(String name) {
|
|
if (name.length() <= 22) {
|
|
super.setName(name);
|
|
} else {
|
|
super.setName("Taipan");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Sets up the graphical part of StartGUI and includes all logic for the class
|
|
* @param stage sets the stage to which we will execute the scene of the StartGUI class
|
|
*/
|
|
public void initializeStart(Stage stage) {
|
|
|
|
/**
|
|
* Creates an HBox at the center of the borderpane with a width of 200, height of 100 and spacing of 10.
|
|
*
|
|
*/
|
|
BorderPane.setAlignment(hBox, javafx.geometry.Pos.CENTER);
|
|
hBox.setAlignment(javafx.geometry.Pos.CENTER);
|
|
hBox.setPrefHeight(100.0);
|
|
hBox.setPrefWidth(200.0);
|
|
hBox.setSpacing(10.0);
|
|
|
|
/**
|
|
* Creates a borderpane window of width 600 and height 480.
|
|
*
|
|
*/
|
|
borderPane.setPrefHeight(480.0);
|
|
borderPane.setPrefWidth(600.0);
|
|
|
|
/**
|
|
* Creates a prompt text field that asks for your firm name and has a default text set to "Taipan".
|
|
*
|
|
*/
|
|
nameField.setPromptText("Enter Firm Name.");
|
|
nameField.setText("Taipan");
|
|
|
|
/**
|
|
* Creates a button with text "Start"
|
|
*
|
|
*/
|
|
startButton.setMnemonicParsing(false);
|
|
startButton.setText("New");
|
|
|
|
/**
|
|
* Creates a button with text "Continue"
|
|
*
|
|
*/
|
|
continueButton.setMnemonicParsing(false);
|
|
continueButton.setText("Load");
|
|
|
|
/**
|
|
* Creates a VBox at the left of center of the borderpane.
|
|
*
|
|
*/
|
|
vBox.setAlignment(javafx.geometry.Pos.CENTER_LEFT);
|
|
|
|
/**
|
|
* Creates a label with text "Do you want to start with..." to indicate the user has to choose between 2 given scenarios.
|
|
*
|
|
*/
|
|
choiceLabel.setText("Do you want to start with...");
|
|
|
|
/**
|
|
* Label for scenario one which is you start with five guns and no cash or debt.
|
|
*
|
|
*/
|
|
gunChoice.setMnemonicParsing(false);
|
|
gunChoice.setSelected(true);
|
|
gunChoice.setText("Five guns and no cash (But no debt!)?");
|
|
|
|
gunChoice.setToggleGroup(Start);
|
|
|
|
/**
|
|
* Label for scenario 2 which is you start with cash but also a debt.
|
|
*
|
|
*/
|
|
cashChoice.setAlignment(javafx.geometry.Pos.TOP_LEFT);
|
|
cashChoice.setMnemonicParsing(false);
|
|
cashChoice.setText("Cash (and a debt)");
|
|
cashChoice.setToggleGroup(Start);
|
|
borderPane.setBottom(hBox);
|
|
|
|
/**
|
|
* Creates a VBox at the center of the borderpane with a width of 100 and height of 200.
|
|
*
|
|
*/
|
|
BorderPane.setAlignment(vBox0, javafx.geometry.Pos.CENTER);
|
|
vBox0.setAlignment(javafx.geometry.Pos.CENTER);
|
|
vBox0.setPrefHeight(200.0);
|
|
vBox0.setPrefWidth(100.0);
|
|
|
|
/**
|
|
* Creates a label with text "Taipan" in size 66 font and default font style.
|
|
*
|
|
*/
|
|
title.setText("Taipan");
|
|
title.setFont(new Font(66.0));
|
|
|
|
/**
|
|
* Creates a label with our names as text
|
|
*
|
|
*/
|
|
authors.setPrefHeight(80.0);
|
|
authors.setPrefWidth(480.0);
|
|
authors.setText("By Vikram Bawa, Haris Muhammad, Siddhant Dewani, Nathan Lum \nand Harkamal Randhawa");
|
|
|
|
/**
|
|
* Puts Vbox0 in the center of the borderpane.
|
|
*
|
|
*/
|
|
authors.setTextAlignment(javafx.scene.text.TextAlignment.CENTER);
|
|
authors.setAlignment(Pos.CENTER);
|
|
vBox0.setAlignment(Pos.CENTER);
|
|
borderPane.setCenter(vBox0);
|
|
|
|
/**
|
|
* Adds all the buttons and labels to their respective boxes.
|
|
*
|
|
*/
|
|
hBox.getChildren().add(nameField);
|
|
hBox.getChildren().add(startButton);
|
|
hBox.getChildren().add(continueButton);
|
|
vBox.getChildren().add(choiceLabel);
|
|
vBox.getChildren().add(gunChoice);
|
|
vBox.getChildren().add(cashChoice);
|
|
hBox.getChildren().add(vBox);
|
|
vBox0.getChildren().add(title);
|
|
vBox0.getChildren().add(authors);
|
|
startButton.setDefaultButton(true);
|
|
|
|
/**
|
|
* Adds function to the "Start" button, scenario 1 gives the player $400 and a $5000 debt at the start of the game;
|
|
* scenario 2 gives the player 5 guns.
|
|
*
|
|
*/
|
|
startButton.setOnAction(event -> {
|
|
StartLogic startLogic = new StartLogic(getPlayer());
|
|
if (Start.getSelectedToggle() == cashChoice) {
|
|
startLogic.money_and_debt();
|
|
}
|
|
if (Start.getSelectedToggle() == gunChoice) {
|
|
startLogic.guns();
|
|
}
|
|
|
|
String response = nameField.getText();
|
|
// purely for testing purposes.
|
|
if (response.equalsIgnoreCase("Vikram")) {
|
|
startLogic.cheat();
|
|
setCargoSpace(Integer.MAX_VALUE);
|
|
}
|
|
setFirm(response);
|
|
|
|
setPlayer(startLogic.getPlayer());
|
|
TaipanShopGUI shop = new TaipanShopGUI(getPlayer());
|
|
shop.initializeShop(stage);
|
|
stage.show();
|
|
});
|
|
|
|
continueButton.setOnAction(event -> {
|
|
FileSaving saving = new FileSaving();
|
|
if(saving.loadFile() != null){
|
|
TaipanShopGUI shop = new TaipanShopGUI(saving.loadFile());
|
|
shop.initializeShop(stage);
|
|
stage.show();
|
|
}
|
|
else{
|
|
authors.setText("There are no previous saves!");
|
|
}
|
|
});
|
|
|
|
Scene root = new Scene(borderPane, 600, 480);
|
|
root.getStylesheets().add("styleguide.css");
|
|
|
|
stage.setTitle("Start");
|
|
stage.setResizable(false);
|
|
stage.setScene(root);
|
|
stage.setHeight(510);
|
|
stage.setWidth(600);
|
|
}
|
|
}
|