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
|
package net.sowgro.npehero.gui;
import javafx.animation.AnimationTimer;
import javafx.scene.control.Label;
import javafx.scene.layout.*;
import net.sowgro.npehero.Driver;
import net.sowgro.npehero.gameplay.SongPlayer;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.text.Text;
import net.sowgro.npehero.levelapi.Difficulty;
import net.sowgro.npehero.gameplay.ScoreController;
import net.sowgro.npehero.main.Page;
import net.sowgro.npehero.main.Sound;
public class LevelSurround extends Page
{
private final StackPane content = new StackPane();
public LevelSurround(Difficulty difficulty, Page prev)
{
ScoreController sc = new ScoreController();
SongPlayer game = new SongPlayer(difficulty, prev, sc);
Button exit = new Button();
exit.setText("Back");
exit.setOnAction(_ -> {
Driver.setMenu(prev);
Sound.playSfx(Sound.BACKWARD);
game.cancel();
});
HBox buttonBox = new HBox();
buttonBox.getChildren().addAll(exit);
buttonBox.setAlignment(Pos.TOP_LEFT);
buttonBox.setSpacing(10);
Text title = new Text();
title.setText(difficulty.level.title);
title.getStyleClass().add("t2");
Text artist = new Text();
artist.setText(difficulty.level.artist+" - "+difficulty.title);
artist.getStyleClass().add("t3");
VBox titleTextBox = new VBox();
titleTextBox.setAlignment(Pos.TOP_RIGHT);
titleTextBox.getChildren().addAll(title, artist);
titleTextBox.getStyleClass().add("box");
titleTextBox.setPadding(new Insets(10));
AnchorPane topBar = new AnchorPane();
topBar.getChildren().addAll(buttonBox,titleTextBox);
AnchorPane.setLeftAnchor(buttonBox, 0.0);
AnchorPane.setRightAnchor(titleTextBox, 0.0);
AnchorPane.setTopAnchor(buttonBox, 0.0);
AnchorPane.setTopAnchor(titleTextBox, 0.0);
topBar.setPadding(new Insets(10));
Text scoreLabel = new Text();
scoreLabel.setText("Score:");
scoreLabel.getStyleClass().add("t3");
Text scoreDisplay = new Text();
scoreDisplay.textProperty().bind(sc.score.asString());
scoreDisplay.getStyleClass().add("t1");
VBox scoreTextBox = new VBox();
scoreTextBox.setAlignment(Pos.BOTTOM_LEFT);
scoreTextBox.getChildren().addAll(scoreLabel,scoreDisplay);
scoreTextBox.setPadding(new Insets(10));
scoreTextBox.getStyleClass().add("box");
scoreTextBox.minWidthProperty().bind(scoreTextBox.heightProperty());
AnchorPane scoreBox = new AnchorPane();
scoreBox.getChildren().add(scoreTextBox);
AnchorPane.setLeftAnchor(scoreTextBox, 0.0);
AnchorPane.setBottomAnchor(scoreTextBox, 0.0);
scoreBox.setPadding(new Insets(10));
Text comboLabel = new Text();
comboLabel.setText("Combo:");
comboLabel.getStyleClass().add("t3");
Text comboDisplay = new Text();
comboDisplay.textProperty().bind(sc.combo.asString());
comboDisplay.getStyleClass().add("t1");
Label comboMultiplier = new Label();
comboMultiplier.getStyleClass().add("gray");
comboMultiplier.textProperty().bind(sc.comboMultiplier.asString().concat("x score multiplier"));
VBox comboTextBox = new VBox();
comboTextBox.setAlignment(Pos.BOTTOM_RIGHT);
comboTextBox.getChildren().addAll(comboLabel,comboDisplay, comboMultiplier);
comboTextBox.setPadding(new Insets(10));
comboTextBox.getStyleClass().add("box");
comboTextBox.minWidthProperty().bind(comboTextBox.heightProperty());
AnchorPane comboBox = new AnchorPane();
comboBox.getChildren().add(comboTextBox);
AnchorPane.setRightAnchor(comboTextBox, 0.0);
AnchorPane.setBottomAnchor(comboTextBox, 0.0);
comboBox.setPadding(new Insets(10));
game.setMinHeight(1080);
game.setMinWidth(1080 * 0.55);
game.setMaxHeight(1080);
game.setMaxWidth(1080 * 0.55);
var scale = content.prefHeightProperty().divide(1080);
game.scaleXProperty().bind(scale);
game.scaleYProperty().bind(scale);
game.getStyleClass().add("box");
BorderPane gameHolder = new BorderPane(game);
gameHolder.maxHeightProperty().bind(content.prefHeightProperty());
gameHolder.maxWidthProperty().bind(content.prefHeightProperty().multiply(0.55));
gameHolder.minHeightProperty().bind(content.prefHeightProperty());
gameHolder.minWidthProperty().bind(content.prefHeightProperty().multiply(0.55));
var widthBind = content.widthProperty().subtract(gameHolder.widthProperty()).divide(2);
scoreBox.prefWidthProperty().bind(widthBind);
comboBox.prefWidthProperty().bind(widthBind);
HBox centerBox = new HBox();
// HBox.setHgrow(gameHolder, Priority.NEVER);
centerBox.getChildren().addAll(comboBox, gameHolder, scoreBox);
centerBox.setAlignment(Pos.BOTTOM_CENTER);
content.getChildren().addAll(centerBox, topBar);
new AnimationTimer() {
@Override
public void handle(long now) {
game.start();
}
}.start();
}
@Override
public Pane getContent() {
return content;
}
@Override
public void onLeave() {
Sound.playSong(Sound.MENU_SONG);
}
}
|