AdventureGame / A2Game / views / SimpleMinigameView.java
SimpleMinigameView.java
Raw
package views;

import AdventureModel.AdventureGame;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.paint.Color;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Modality;
import javafx.stage.Stage;


// Class based off SaveView
public class SimpleMinigameView {

    private AdventureGameView adventureGameView;
    private int counter = 0;
    private Stage dialog;
    private AdventureGame model;
    private Label mainLabel;
    private boolean gameOver;

    /**
     * Constructor
     */
    public SimpleMinigameView(AdventureGameView adventureGameView, AdventureGame model) {
        this.gameOver = false;
        this.adventureGameView = adventureGameView;
        this.model = model;
        final Stage dialog = new Stage();
        dialog.initModality(Modality.APPLICATION_MODAL);
        dialog.initOwner(adventureGameView.stage);
        VBox dialogVbox = new VBox(20);
        dialogVbox.setPadding(new Insets(20, 20, 20, 20));
        dialogVbox.setStyle("-fx-background-color: #121212;");

        Button button1 = new Button("1");
        button1.setId("button1");
        button1.setStyle("-fx-background-color: #17871b; -fx-text-fill: white;");
        button1.setPrefSize(200, 50);
        button1.setFont(new Font(16));
        button1.setOnAction(e -> playGame(1));

        Button button2 = new Button("2");
        button2.setId("button2");
        button2.setStyle("-fx-background-color: #17871b; -fx-text-fill: white;");
        button2.setPrefSize(200, 50);
        button2.setFont(new Font(16));
        button2.setOnAction(e -> playGame(2));

        Button button3 = new Button("3");
        button3.setId("button3");
        button3.setStyle("-fx-background-color: #17871b; -fx-text-fill: white;");
        button3.setPrefSize(200, 50);
        button3.setFont(new Font(16));
        button3.setOnAction(e -> playGame(3));

        Button button4 = new Button("4");
        button4.setId("button4");
        button4.setStyle("-fx-background-color: #17871b; -fx-text-fill: white;");
        button4.setPrefSize(200, 50);
        button4.setFont(new Font(16));
        button4.setOnAction(e -> playGame(4));

        Button button5 = new Button("5");
        button5.setId("button5");
        button5.setStyle("-fx-background-color: #17871b; -fx-text-fill: white;");
        button5.setPrefSize(200, 50);
        button5.setFont(new Font(16));
        button5.setOnAction(e -> playGame(5));

        Label mainLabel = new Label("Press the buttons in numerical order.");
        mainLabel.setTextFill(Color.WHITE);
        mainLabel.setFont(new Font(16));
        this.mainLabel = mainLabel;

        Button closeWindowButton = new Button("Close Window");
        closeWindowButton.setOnAction(e -> {
            if (model.player.getHitPoints() == 0) {
                adventureGameView.endGame();
            }
            dialog.close();
        });
        VBox saveGameBox = new VBox(10, mainLabel, button4, button2, button1, button5, button3, closeWindowButton);
        saveGameBox.setAlignment(Pos.CENTER);

        dialogVbox.getChildren().add(saveGameBox);
        Scene dialogScene = new Scene(dialogVbox, 400, 400);
        dialog.setScene(dialogScene);
        dialog.show();
        this.dialog = dialog;
    }

    public void playGame(int input) {
        if (!gameOver) {
            if (input != counter + 1) {
                model.player.takeDamage(30);
                String dead = "";
                if (model.player.getHitPoints() == 0) {
                    dead = " -- You have died!";
                }
                mainLabel.setText("You lost! -30 HP" + dead);
                gameOver = true;
            }
            counter = input;
            if (counter == 5) {
                model.player.levelUpAttacks();
                mainLabel.setText("You won! +10 attack");
                gameOver = true;
            }
        }
    }

}