340 lines
12 KiB
Java
340 lines
12 KiB
Java
package gui;
|
|
|
|
import javafx.geometry.Insets;
|
|
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;
|
|
|
|
/**
|
|
* 2019-03-19
|
|
* Authors:Siddhant, Vikram, Harkamal, Haris, Nathan
|
|
* WarehouseGUI allows the user to store goods in a warehouse in order to have more hold on the ship
|
|
*/
|
|
|
|
public class WarehouseGUI extends Player {
|
|
//Create the labels, buttons and textfields required
|
|
private HBox hBox;
|
|
private VBox vBox;
|
|
private TextField textField;
|
|
private RadioButton generalRadio;
|
|
private ToggleGroup Goods;
|
|
private RadioButton armsRadio;
|
|
private RadioButton silkRadio;
|
|
private RadioButton opiumRadio;
|
|
private Button withdrawButton;
|
|
private Button depositButton;
|
|
private Button quitButton;
|
|
private Label title;
|
|
private HBox hBox0;
|
|
private VBox vBox0;
|
|
private Label playerLabel;
|
|
private Label playerGeneral;
|
|
private Label playerArms;
|
|
private Label playerSilk;
|
|
private Label playerOpium;
|
|
private VBox vBox1;
|
|
private Label houseLabel;
|
|
private Label houseGeneral;
|
|
private Label houseArms;
|
|
private Label houseSilk;
|
|
private Label houseOpium;
|
|
private BorderPane borderPane;
|
|
|
|
/**
|
|
* constructor that creates an object of type player
|
|
* @param player
|
|
*/
|
|
public WarehouseGUI(Player player) {
|
|
Player playerDummy = new Player(player);
|
|
setPlayer(playerDummy);
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param stage
|
|
* @return stage after creating buttons and layout
|
|
*/
|
|
public Stage initializeWarehouse(Stage stage){
|
|
|
|
//Initializes the instances created above to a new type
|
|
hBox = new HBox();
|
|
vBox = new VBox();
|
|
generalRadio = new RadioButton();
|
|
Goods = new ToggleGroup();
|
|
armsRadio = new RadioButton();
|
|
silkRadio = new RadioButton();
|
|
opiumRadio = new RadioButton();
|
|
withdrawButton = new Button();
|
|
depositButton = new Button();
|
|
quitButton = new Button();
|
|
title = new Label();
|
|
hBox0 = new HBox();
|
|
vBox0 = new VBox();
|
|
playerLabel = new Label();
|
|
playerGeneral = new Label();
|
|
playerArms = new Label();
|
|
playerSilk = new Label();
|
|
playerOpium = new Label();
|
|
vBox1 = new VBox();
|
|
houseLabel = new Label();
|
|
houseGeneral = new Label();
|
|
houseArms = new Label();
|
|
houseSilk = new Label();
|
|
houseOpium = new Label();
|
|
borderPane = new BorderPane();
|
|
textField = new TextField();
|
|
|
|
//Creating the box for the warehouse GUI
|
|
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);
|
|
|
|
vBox.setAlignment(javafx.geometry.Pos.CENTER_LEFT);
|
|
vBox.setPrefHeight(200.0);
|
|
vBox.setPrefWidth(100.0);
|
|
|
|
//Adding general button
|
|
generalRadio.setMnemonicParsing(false);
|
|
generalRadio.setSelected(true);
|
|
generalRadio.setText("General");
|
|
|
|
generalRadio.setToggleGroup(Goods);
|
|
|
|
//Adding Arms Button
|
|
armsRadio.setMnemonicParsing(false);
|
|
armsRadio.setText("Arms");
|
|
armsRadio.setToggleGroup(Goods);
|
|
|
|
//Adding Silk button
|
|
silkRadio.setMnemonicParsing(false);
|
|
silkRadio.setText("Silk");
|
|
silkRadio.setToggleGroup(Goods);
|
|
|
|
// Adding opium button
|
|
opiumRadio.setMnemonicParsing(false);
|
|
opiumRadio.setText("Opium");
|
|
opiumRadio.setToggleGroup(Goods);
|
|
|
|
// Remove materials button
|
|
withdrawButton.setMnemonicParsing(false);
|
|
withdrawButton.setText("Withdraw");
|
|
|
|
// Add materials button
|
|
depositButton.setMnemonicParsing(false);
|
|
depositButton.setText("Deposit");
|
|
|
|
//Go back to the previous screen button
|
|
quitButton.setMnemonicParsing(false);
|
|
quitButton.setText("Go back");
|
|
borderPane.setBottom(hBox);
|
|
|
|
|
|
//Takes you to the HK warehouse
|
|
borderPane.setAlignment(title, javafx.geometry.Pos.CENTER);
|
|
title.setText("Hong Kong Warehouse");
|
|
title.setFont(new Font(24.0));
|
|
title.setPadding(new Insets(10.0, 0.0, 0.0, 0.0));
|
|
borderPane.setTop(title);
|
|
|
|
// Making the BOX again
|
|
borderPane.setAlignment(hBox0, javafx.geometry.Pos.CENTER);
|
|
hBox0.setAlignment(javafx.geometry.Pos.CENTER);
|
|
hBox0.setPrefHeight(100.0);
|
|
hBox0.setPrefWidth(200.0);
|
|
hBox0.setSpacing(10.0);
|
|
|
|
vBox0.setAlignment(javafx.geometry.Pos.CENTER_LEFT);
|
|
vBox0.setSpacing(10.0);
|
|
|
|
playerLabel.setText("Player:");
|
|
playerLabel.setFont(new Font(18.0));
|
|
|
|
// displays the hold of general
|
|
playerGeneral.setText("General:");
|
|
|
|
// displays the hold of Arms
|
|
|
|
playerArms.setText("Arms:");
|
|
|
|
// displays the hold of Silk
|
|
|
|
playerSilk.setText("Silk:");
|
|
|
|
// displays the hold of Opium
|
|
|
|
playerOpium.setText("Opium:");
|
|
|
|
vBox1.setAlignment(javafx.geometry.Pos.CENTER_LEFT);
|
|
vBox1.setSpacing(10.0);
|
|
|
|
houseLabel.setAlignment(javafx.geometry.Pos.TOP_CENTER);
|
|
houseLabel.setText("Warehouse:");
|
|
houseLabel.setFont(new Font(18.0));
|
|
|
|
|
|
houseGeneral.setText("General:");
|
|
|
|
houseArms.setText("Arms:");
|
|
|
|
houseSilk.setText("Silk:");
|
|
|
|
houseOpium.setText("Opium:");
|
|
|
|
//Shows the values of the goods that are in the warehouse
|
|
borderPane.setMargin(hBox0, new Insets(0.0));
|
|
hBox0.setPadding(new Insets(10.0, 0.0, 0.0, 0.0));
|
|
vBox0.setPadding(new Insets(0, 0.0, 0.0, 0.0));
|
|
borderPane.setCenter(hBox0);
|
|
|
|
//Add buttons for the goods
|
|
vBox.getChildren().add(generalRadio);
|
|
vBox.getChildren().add(armsRadio);
|
|
vBox.getChildren().add(silkRadio);
|
|
vBox.getChildren().add(opiumRadio);
|
|
|
|
//Adds the buttons for withdraw, deposit and quitting
|
|
hBox.getChildren().add(vBox);
|
|
hBox.getChildren().add(textField);
|
|
hBox.getChildren().add(withdrawButton);
|
|
hBox.getChildren().add(depositButton);
|
|
hBox.getChildren().add(quitButton);
|
|
|
|
//Adds the buttons for the amount of the good the player has
|
|
vBox0.getChildren().add(playerLabel);
|
|
vBox0.getChildren().add(playerGeneral);
|
|
vBox0.getChildren().add(playerArms);
|
|
vBox0.getChildren().add(playerSilk);
|
|
vBox0.getChildren().add(playerOpium);
|
|
|
|
//Amount of stock the warehouse has of the goods
|
|
vBox1.getChildren().add(houseLabel);
|
|
vBox1.getChildren().add(houseGeneral);
|
|
vBox1.getChildren().add(houseArms);
|
|
vBox1.getChildren().add(houseSilk);
|
|
vBox1.getChildren().add(houseOpium);
|
|
|
|
hBox0.getChildren().add(vBox0);
|
|
hBox0.getChildren().add(vBox1);
|
|
|
|
updateLabels();
|
|
|
|
//Goes back to shop
|
|
quitButton.setOnAction(event -> {
|
|
TaipanShopGUI taipanShopGUI = new TaipanShopGUI(getPlayer());
|
|
taipanShopGUI.initializeShop(stage);
|
|
stage.show();
|
|
});
|
|
//Runs when the withdraw button is selected. and removes the amount of the selected good
|
|
withdrawButton.setOnAction(event -> {
|
|
try {
|
|
int withdraw = Integer.parseInt(textField.getText());
|
|
|
|
if(withdraw <= 0){
|
|
title.setText("Please enter a valid value");
|
|
}
|
|
//Transfers general amount
|
|
else if(Goods.getSelectedToggle() == generalRadio && withdraw <= getwGeneral()){
|
|
setGeneralHeld(getPlayer().getGeneralHeld()+withdraw);
|
|
setwGeneral(getPlayer().getwGeneral()-withdraw);
|
|
}
|
|
//Transfers Arms amount
|
|
else if(Goods.getSelectedToggle() == armsRadio && withdraw <= getwArms()){
|
|
setArmsHeld(getPlayer().getArmsHeld()+withdraw);
|
|
setwArms(getPlayer().getwArms()-withdraw);
|
|
}
|
|
//Transfers Silk Amount
|
|
else if(Goods.getSelectedToggle() == silkRadio && withdraw <= getwSilk()){
|
|
setSilkHeld(getPlayer().getSilkHeld()+withdraw);
|
|
setwSilk(getPlayer().getwSilk()-withdraw);
|
|
}
|
|
//Transfers Opium amount
|
|
else if(Goods.getSelectedToggle() == opiumRadio && withdraw <= getwOpium()) {
|
|
setOpiumHeld(getPlayer().getOpiumHeld() + withdraw);
|
|
setwOpium(getPlayer().getwOpium() - withdraw);
|
|
}
|
|
// Ensures a valid value is entered
|
|
else{
|
|
title.setText("Please enter a valid value");
|
|
}
|
|
updateLabels();
|
|
}
|
|
catch (Exception e) {
|
|
title.setText("Please enter a valid value");
|
|
}
|
|
});
|
|
//Button to add a user entered amount to the warehouse
|
|
depositButton.setOnAction(event -> {
|
|
try {
|
|
int deposit = Integer.parseInt(textField.getText());
|
|
|
|
if(deposit <= 0){
|
|
title.setText("Please enter a valid value");
|
|
}
|
|
//Transfers general amount
|
|
else if(Goods.getSelectedToggle() == generalRadio && deposit <= getGeneralHeld()){
|
|
setGeneralHeld(getPlayer().getGeneralHeld()-deposit);
|
|
setwGeneral(getPlayer().getwGeneral()+deposit);
|
|
}
|
|
//Transfers Arms amount
|
|
else if(Goods.getSelectedToggle() == armsRadio && deposit <= getArmsHeld()){
|
|
setArmsHeld(getPlayer().getArmsHeld()-deposit);
|
|
setwArms(getPlayer().getwArms()+deposit);
|
|
}
|
|
//Transfers Silk amount
|
|
else if(Goods.getSelectedToggle() == silkRadio && deposit <= getSilkHeld()){
|
|
setSilkHeld(getPlayer().getSilkHeld()-deposit);
|
|
setwSilk(getPlayer().getwSilk()+deposit);
|
|
}
|
|
//Transfers Opium amount
|
|
else if(Goods.getSelectedToggle() == opiumRadio && deposit <= getOpiumHeld()){
|
|
setOpiumHeld(getPlayer().getOpiumHeld()-deposit);
|
|
setwOpium(getPlayer().getwOpium()+deposit);
|
|
}
|
|
//Checks if the correct value is entered
|
|
else{
|
|
title.setText("Please enter a valid value");
|
|
}
|
|
updateLabels();
|
|
}
|
|
catch (Exception e) {
|
|
title.setText("Please enter a valid value");
|
|
}
|
|
});
|
|
|
|
|
|
//Create the sceene and box of the desired size
|
|
Scene root = new Scene(borderPane, 600, 480);
|
|
root.getStylesheets().add("styleguide.css");
|
|
|
|
stage.setTitle("Warehouse");
|
|
stage.setResizable(false);
|
|
stage.setScene(root);
|
|
return stage;
|
|
}
|
|
|
|
/**
|
|
* As soon as the transfer is made the table of the amount of goods is updated using this method
|
|
*/
|
|
public void updateLabels(){
|
|
playerLabel.setText("Player: " + (getPlayer().getCargoSpace()-((getPlayer().getGuns()*10)+ getPlayer().getGeneralHeld() + getPlayer().getArmsHeld() + getPlayer().getSilkHeld() + getPlayer().getOpiumHeld())));
|
|
houseLabel.setText("Warehouse: " + (10000 -(getPlayer().getwGeneral() + getPlayer().getwArms() + getPlayer().getwSilk() + getPlayer().getwOpium())));
|
|
|
|
playerGeneral.setText("General: " + getPlayer().getGeneralHeld());
|
|
playerArms.setText("Arms: " + getPlayer().getArmsHeld());
|
|
playerSilk.setText("Silk: " + getPlayer().getSilkHeld() );
|
|
playerOpium.setText("Opium: " + getPlayer().getOpiumHeld());
|
|
|
|
houseGeneral.setText("General: " + getPlayer().getwGeneral());
|
|
houseArms.setText("Arms: " + getPlayer().getwArms());
|
|
houseSilk.setText("Silk: " + getPlayer().getwSilk());
|
|
houseOpium.setText("Opium: " + getPlayer().getwOpium());
|
|
}
|
|
}
|