diff options
Diffstat (limited to 'src/main/java/net/sowgro/npehero/gui')
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); |