aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/sowgro/npehero/gui/GameOver.java
blob: bcdd25ea77e1f0a8e3a20a36d7700af60eba46f5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package net.sowgro.npehero.gui;

import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import net.sowgro.npehero.Driver;
import net.sowgro.npehero.gameplay.ScoreController;
import net.sowgro.npehero.main.ErrorDisplay;
import net.sowgro.npehero.levelapi.Difficulty;
import net.sowgro.npehero.levelapi.Level;
import net.sowgro.npehero.main.Page;
import net.sowgro.npehero.main.Sound;

import java.io.IOException;

public class GameOver extends Page
{
    HBox content = new HBox();

    public GameOver(Level level, Difficulty diff, Page prev, ScoreController score2)
    {
        Text topText = new Text();
        topText.setText("Level Complete");
        topText.getStyleClass().add("t11");

        Text levelName = new Text();
        levelName.setText(level.title);
        levelName.getStyleClass().add("t2");

        Text levelArtist = new Text();
        levelArtist.setText(level.artist+" - "+diff.title);
        levelArtist.getStyleClass().add("t3");

        VBox levelDetailsBox = new VBox();
        levelDetailsBox.getChildren().addAll(levelName,levelArtist);
        levelDetailsBox.getStyleClass().add("box");
        levelDetailsBox.setPadding(new Insets(5));


        Text scoreLabel = new Text();
        scoreLabel.setText("Final score");
        scoreLabel.getStyleClass().add("t3");
        Label maxScoreLabel = new Label("Max possible score");
        ScoreController maxScoreController = new ScoreController();
        for (int i = 0; i < diff.notes.list.size(); i++) {
            maxScoreController.perfect();
        }
        Label maxScore = new Label(maxScoreController.score.get() + "");

        Text score = new Text();
        score.setText(score2.score.get()+"");
        score.getStyleClass().add("t2");
        score.setStyle("-fx-font-size: 30;");

        VBox scoreBox = new VBox();
        scoreBox.getStyleClass().add("box");
        scoreBox.getChildren().addAll(scoreLabel,score, maxScoreLabel, maxScore);
        scoreBox.setPadding(new Insets(5));


        Text nameLabel = new Text();
        nameLabel.setText("Leaderboard entry");
        nameLabel.getStyleClass().add("t3");

        TextField name = new TextField();
        name.setText("name");

        Button save = new Button();
        save.setText("Add");
        save.setOnAction(_ -> {
            Sound.playSfx(Sound.FORWARD);
            save.setDisable(true);
            name.setDisable(true);
            try {
                diff.leaderboard.add(name.getText(), score2.score.get());
            } catch (IOException e) {
                Driver.setMenu(new ErrorDisplay("Failed to save score to leaderboard", e, this));
            }
        });

        BorderPane b = new BorderPane();
        b.setRight(save);
        b.setCenter(name);

        VBox nameBox = new VBox();
        nameBox.getChildren().addAll(nameLabel,b);
        nameBox.getStyleClass().add("box");
        nameBox.setSpacing(5);
        nameBox.setPadding(new Insets(5));


        Button exit = new Button();
        exit.setText("Back");
        exit.setOnAction(e -> {
            Sound.playSfx(Sound.BACKWARD);
            Driver.setMenu(prev);
        });

        Button replay = new Button();
        replay.setText("Replay");
        replay.setOnAction(e -> {
            Sound.playSfx(Sound.FORWARD);
            Driver.setMenu(new LevelSurround(diff, prev));
        });

        BorderPane buttonBox = new BorderPane();
        buttonBox.setLeft(exit);
        buttonBox.setRight(replay);

        VBox centerBox = new VBox();
        centerBox.getChildren().addAll(topText,levelDetailsBox,scoreBox,nameBox,buttonBox);
        centerBox.setSpacing(10);
        centerBox.setAlignment(Pos.CENTER);
        centerBox.setMaxWidth(300);

        content.getChildren().add(centerBox);
        content.setAlignment(Pos.CENTER);
    }

    @Override
    public Pane getContent() {
        return content;
    }
}