aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/sowgro/npehero/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/sowgro/npehero/gui')
-rw-r--r--src/main/java/net/sowgro/npehero/gui/ControlEditor.java2
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/LeaderboardView.java6
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/LevelDetails.java55
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/LevelSelector.java13
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/MainMenu.java25
5 files changed, 65 insertions, 36 deletions
diff --git a/src/main/java/net/sowgro/npehero/gui/ControlEditor.java b/src/main/java/net/sowgro/npehero/gui/ControlEditor.java
index 7fd288b..937cdf8 100644
--- a/src/main/java/net/sowgro/npehero/gui/ControlEditor.java
+++ b/src/main/java/net/sowgro/npehero/gui/ControlEditor.java
@@ -31,6 +31,7 @@ public class ControlEditor extends Page {
controls.setPadding(new Insets(10));
controls.setVgap(20);
controls.setHgap(40);
+ scrollPane.setFitToWidth(true);
scrollPane.setPrefWidth(700);
scrollPane.prefHeightProperty().bind(content.prefHeightProperty().multiply(0.75));
@@ -70,6 +71,7 @@ public class ControlEditor extends Page {
// control button
ToggleButton controlButton = new ToggleButton("<err>");
controlButton.setText(keyToString(control.keyProperty.get()));
+ GridPane.setHgrow(controlButton, Priority.ALWAYS);
control.keyProperty.addListener(_ -> {
controlButton.setText(keyToString(control.keyProperty.get()));
try {
diff --git a/src/main/java/net/sowgro/npehero/gui/LeaderboardView.java b/src/main/java/net/sowgro/npehero/gui/LeaderboardView.java
index 1a87e27..9176d76 100755
--- a/src/main/java/net/sowgro/npehero/gui/LeaderboardView.java
+++ b/src/main/java/net/sowgro/npehero/gui/LeaderboardView.java
@@ -27,6 +27,10 @@ public class LeaderboardView extends Page
TableColumn<LeaderboardEntry, String> scoreCol = new TableColumn<>("Score");
TableColumn<LeaderboardEntry, String> dateCol = new TableColumn<>("Date");
+ nameCol.prefWidthProperty().bind(scores.widthProperty().multiply(0.45));
+ scoreCol.prefWidthProperty().bind(scores.widthProperty().multiply(0.23));
+ dateCol.prefWidthProperty().bind(scores.widthProperty().multiply(0.27));
+
scores.getColumns().add(nameCol);
scores.getColumns().add(scoreCol);
scores.getColumns().add(dateCol);
@@ -39,7 +43,7 @@ public class LeaderboardView extends Page
scores.getStyleClass().add("unselectable");
- scores.prefWidthProperty().bind(content.prefWidthProperty().multiply(0.25));
+ scores.prefWidthProperty().bind(content.prefWidthProperty().multiply(0.30));
scores.prefHeightProperty().bind(content.prefHeightProperty().multiply(0.75));
scoreCol.setSortType(SortType.DESCENDING);
diff --git a/src/main/java/net/sowgro/npehero/gui/LevelDetails.java b/src/main/java/net/sowgro/npehero/gui/LevelDetails.java
index 1ab4ae4..844b523 100755
--- a/src/main/java/net/sowgro/npehero/gui/LevelDetails.java
+++ b/src/main/java/net/sowgro/npehero/gui/LevelDetails.java
@@ -8,11 +8,13 @@ import javafx.scene.control.ScrollPane;
import javafx.scene.control.ToggleGroup;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
+import javafx.scene.layout.BorderPane;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import javafx.scene.text.TextAlignment;
+import javafx.scene.text.TextBoundsType;
import javafx.scene.text.TextFlow;
import net.sowgro.npehero.Driver;
import net.sowgro.npehero.levelapi.Difficulty;
@@ -22,10 +24,7 @@ import net.sowgro.npehero.main.Sound;
public class LevelDetails extends VBox
{
/**
- * this class is a layout class, most of its purpose is to place UI elements like Buttons within Panes like VBoxes.
- * the creation of these UI elements are mostly not commented due to their repetitive and self explanatory nature.
- * style classes are defined in the style.css file.
- *
+ * Create a LevelDetails Pane
* @param level: the selected level on the right side
*/
public LevelDetails(Level level, LevelSelector ls)
@@ -59,17 +58,10 @@ public class LevelDetails extends VBox
else
{
- VBox details = new VBox();
- details.setPadding(new Insets(5));
-
- ScrollPane detailsScroll = new ScrollPane(details);
- detailsScroll.prefHeightProperty().bind(rightBox.prefHeightProperty());
- detailsScroll.prefWidthProperty().bind(rightBox.prefWidthProperty());
- detailsScroll.getStyleClass().remove("scroll-pane");
-
Text title = new Text();
title.setText(level.title);
title.getStyleClass().add("t1");
+// title.setLineSpacing(0.5);
Text artist = new Text();
artist.setText(level.artist);
@@ -79,11 +71,22 @@ public class LevelDetails extends VBox
desc.setText(level.desc);
desc.getStyleClass().add("t3");
- ImageView previewView = new ImageView();
- Image preview = level.preview;
- previewView.setImage(preview);
- previewView.fitWidthProperty().bind(super.prefWidthProperty().multiply(0.5));
- previewView.setPreserveRatio(true);
+ TextFlow titleFlow = new TextFlow(title);
+ titleFlow.setLineSpacing(0);
+ TextFlow artistFlow = new TextFlow(artist);
+ VBox titleArtistDesc = new VBox(titleFlow, artistFlow);
+ if (level.desc != null && !level.desc.isEmpty()) {
+
+ }
+ titleArtistDesc.setSpacing(-5);
+
+ ImageView imageView = new ImageView();
+ Image image = level.preview;
+ imageView.setImage(image);
+ imageView.fitWidthProperty().bind(super.prefWidthProperty().multiply(0.5));
+ imageView.setPreserveRatio(true);
+ VBox imageHolder = new VBox(imageView);
+ imageHolder.setAlignment(Pos.CENTER);
FlowPane diffSelector = new FlowPane();
diffSelector.setAlignment(Pos.CENTER);
@@ -107,17 +110,25 @@ public class LevelDetails extends VBox
leaderboard.disableProperty().bind(diffToggleGroup.selectedToggleProperty().isNull());
leaderboard.setOnAction(e -> {
Sound.playSfx(Sound.FORWARD);
- Driver.setMenu(new LeaderboardView((Difficulty)diffToggleGroup.getSelectedToggle().getUserData(), Driver.getMenu()));
+ Driver.setMenu(new LeaderboardView((Difficulty)diffToggleGroup.getSelectedToggle().getUserData(), ls));
});
-
HBox diffBox = new HBox();
diffSelector.prefWidthProperty().bind(diffBox.widthProperty());
diffBox.getChildren().add(diffSelector);
-
- details.setSpacing(10);
- details.getChildren().addAll(new TextFlow(title), new TextFlow(artist), new TextFlow(desc), previewView, diffBox);
+
+ BorderPane details = new BorderPane();
+ details.setCenter(imageHolder);
+ details.setBottom(diffBox);
+ details.setTop(titleArtistDesc);
+ details.setPadding(new Insets(5));
+
+ ScrollPane detailsScroll = new ScrollPane(details);
+ detailsScroll.prefHeightProperty().bind(rightBox.prefHeightProperty());
+ detailsScroll.prefWidthProperty().bind(rightBox.prefWidthProperty());
+ detailsScroll.getStyleClass().remove("scroll-pane");
detailsScroll.setFitToWidth(true);
+ details.minHeightProperty().bind(detailsScroll.heightProperty());
rightBox.getChildren().add(detailsScroll);
rightBox.setPadding(new Insets(5));
diff --git a/src/main/java/net/sowgro/npehero/gui/LevelSelector.java b/src/main/java/net/sowgro/npehero/gui/LevelSelector.java
index b2c028b..a92499a 100755
--- a/src/main/java/net/sowgro/npehero/gui/LevelSelector.java
+++ b/src/main/java/net/sowgro/npehero/gui/LevelSelector.java
@@ -21,10 +21,13 @@ public class LevelSelector extends Page
public LevelSelector()
{
//sets up table view: requires special getters, setters and constructors to work
- TableView<Level> levels = new TableView<Level>();
+ TableView<Level> levels = new TableView<>();
- TableColumn<Level,String> titleCol = new TableColumn<Level,String>("Title");
- TableColumn<Level,String> artistCol = new TableColumn<Level,String>("Artist");
+ TableColumn<Level,String> titleCol = new TableColumn<>("Title");
+ TableColumn<Level,String> artistCol = new TableColumn<>("Artist");
+
+ titleCol.prefWidthProperty().bind(levels.widthProperty().multiply(0.5));
+ artistCol.prefWidthProperty().bind(levels.widthProperty().multiply(0.45));
levels.getColumns().add(titleCol);
levels.getColumns().add(artistCol);
@@ -41,7 +44,7 @@ public class LevelSelector extends Page
Button exit = new Button();
exit.setText("Back");
- exit.setOnAction(e -> {
+ exit.setOnAction(_ -> {
Driver.setMenu(new MainMenu());
Sound.playSfx(Sound.BACKWARD);
});
@@ -70,8 +73,6 @@ public class LevelSelector extends Page
/**
* adds corresponding level details pane to the right side
- * @param rightBox
- * @param levels
*/
private void addDetails(Pane rightBox, TableView<Level> levels)
{
diff --git a/src/main/java/net/sowgro/npehero/gui/MainMenu.java b/src/main/java/net/sowgro/npehero/gui/MainMenu.java
index 6160245..ac5a2f3 100755
--- a/src/main/java/net/sowgro/npehero/gui/MainMenu.java
+++ b/src/main/java/net/sowgro/npehero/gui/MainMenu.java
@@ -10,6 +10,7 @@ import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Text;
+import javafx.scene.text.TextBoundsType;
import net.sowgro.npehero.Driver;
import net.sowgro.npehero.editor.LevelList;
import net.sowgro.npehero.main.Page;
@@ -26,10 +27,22 @@ public class MainMenu extends Page {
dropShadow.setColor(Color.WHITE);
dropShadow.setBlurType(BlurType.GAUSSIAN);
- Text title = new Text();
- title.setText("NPE Hero");
- title.getStyleClass().add("t0");
- title.setEffect(dropShadow);
+ Text npehero = new Text();
+ npehero.setBoundsType(TextBoundsType.VISUAL);
+ npehero.setText("NPE HERO");
+ npehero.getStyleClass().add("t0");
+ npehero.setEffect(dropShadow);
+
+ Text lessthan = new Text("<");
+ lessthan.setBoundsType(TextBoundsType.VISUAL);
+ lessthan.getStyleClass().add("t0e");
+
+ Text greaterthan = new Text(">");
+ greaterthan.setBoundsType(TextBoundsType.VISUAL);
+ greaterthan.getStyleClass().add("t0e");
+ HBox title = new HBox(lessthan, npehero, greaterthan);
+ title.setSpacing(20);
+ title.setAlignment(Pos.CENTER);
Button play = new Button();
play.setText("Play");
@@ -55,9 +68,7 @@ public class MainMenu extends Page {
exit.setText("Quit");
exit.setOnAction(_ -> {
Sound.playSfx(Sound.BACKWARD);
-// Driver.quit();
Platform.exit();
-// System.exit(0);
});
VBox buttonBox = new VBox();
@@ -68,7 +79,7 @@ public class MainMenu extends Page {
VBox centerBox = new VBox();
centerBox.setAlignment(Pos.CENTER);
centerBox.getChildren().addAll(title, buttonBox);
- centerBox.setSpacing(10);
+ centerBox.setSpacing(30);
content.getChildren().add(centerBox);
content.setAlignment(Pos.CENTER);