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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
package net.sowgro.npehero.gui;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
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 javafx.util.Duration;
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
{
private final Label yourScore;
HBox content = new HBox();
ScoreController score2;
public GameOver(Level level, Difficulty diff, Page prev, ScoreController score2)
{
this.score2 = score2;
Label topText = new Label();
topText.setText("LEVEL COMPLETE");
topText.getStyleClass().add("t11");
Label levelName = new Label();
levelName.setText(level.title);
levelName.getStyleClass().add("t2");
Label levelArtist = new Label();
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(10));
var scoreLabel = new BorderPane();
scoreLabel.setLeft(new Label("Final Score"));
scoreLabel.setRight(new Label("Max Score"));
ScoreController maxScoreController = new ScoreController();
for (int i = 0; i < diff.notes.list.size(); i++) {
maxScoreController.perfect();
}
var score = new BorderPane(new Label("/"));
yourScore = new Label("0");
score.setLeft(yourScore);
score.setRight( new Label(maxScoreController.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);
scoreBox.setPadding(new Insets(10));
Text nameLabel = new Text();
nameLabel.setText("Leaderboard entry");
nameLabel.getStyleClass().add("t3");
TextField name = new TextField();
name.setPromptText("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(10);
nameBox.setPadding(new Insets(10));
Button exit = new Button();
exit.setText("Back");
exit.setOnAction(_ -> {
Sound.playSfx(Sound.BACKWARD);
Driver.setMenu(prev);
});
Button replay = new Button();
replay.setText("Replay");
replay.setOnAction(_ -> {
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.setPrefWidth(450);
centerBox.setMaxWidth(450);
content.getChildren().add(centerBox);
content.setAlignment(Pos.CENTER);
}
@Override
public void onView() {
// score count up animation
Timeline tl = new Timeline();
int stepSize = score2.score.get() / 20;
for (int i = 1; i <= 20; i++) {
int i1 = i;
tl.getKeyFrames().add(new KeyFrame(
Duration.seconds(i / 20.0 + 0.5),
_ -> yourScore.setText(i1 * stepSize + "")
));
}
tl.play();
}
@Override
public Pane getContent() {
return content;
}
}
|