diff options
Diffstat (limited to 'src/main/java/net/sowgro')
10 files changed, 95 insertions, 81 deletions
diff --git a/src/main/java/net/sowgro/npehero/Driver.java b/src/main/java/net/sowgro/npehero/Driver.java index 2845cf4..bddc3eb 100755 --- a/src/main/java/net/sowgro/npehero/Driver.java +++ b/src/main/java/net/sowgro/npehero/Driver.java @@ -112,31 +112,20 @@ public class Driver extends Application Driver.setMenu(last); } - /** - * Replaces/adds a new pane to the primaryPane - * @param pane the new pane - */ - private static void setMenu(Pane pane) { + public static void setMenu(Page p) { + currentPage = p; + Pane pane = currentPage.getContent(); + pane.setOpacity(0.0); primaryPane.setContent(pane); pane.prefWidthProperty().bind(primaryPane.widthProperty()); //makes pane fill the window pane.prefHeightProperty().bind(primaryPane.heightProperty()); - primaryPane.requestFocus(); //make the pane itself focused by the keyboard naviagtion so no button is highlighted by default - } - - /** - * @return the current pane in primaryPane - */ - public static Page getMenu() { - return currentPage; - } - - public static void setMenu(Page p) { - if (currentPage != null) { - currentPage.onLeave(); - } - currentPage = p; - setMenu(currentPage.getContent()); + primaryPane.requestFocus(); //make the pane itself focused by the keyboard navigation so no button is highlighted by default currentPage.onView(); + FadeTransition ft = new FadeTransition(Duration.millis(100), currentPage.getContent()); + ft.setInterpolator(Interpolator.EASE_BOTH); + ft.setFromValue(0.0); + ft.setToValue(1.0); + ft.play(); } /** @@ -171,7 +160,7 @@ public class Driver extends Application st.setToY(1.0); ParallelTransition pt = new ParallelTransition(ft, st, st2); - pt.setDelay(Duration.seconds(0.1)); + pt.setDelay(Duration.seconds(0.3)); pt.play(); st.setOnFinished(_ -> backgroundImage.setImage(image)); } diff --git a/src/main/java/net/sowgro/npehero/editor/DiffEditor.java b/src/main/java/net/sowgro/npehero/editor/DiffEditor.java index 7671bc6..8591019 100755 --- a/src/main/java/net/sowgro/npehero/editor/DiffEditor.java +++ b/src/main/java/net/sowgro/npehero/editor/DiffEditor.java @@ -10,7 +10,6 @@ import net.sowgro.npehero.Driver; import net.sowgro.npehero.gameplay.Block; import net.sowgro.npehero.gui.LevelSurround; import javafx.scene.layout.VBox; -import javafx.scene.text.Text; import net.sowgro.npehero.levelapi.Difficulty; import net.sowgro.npehero.levelapi.Note; import net.sowgro.npehero.main.*; @@ -30,11 +29,11 @@ public class DiffEditor extends Page this.diff = diff; this.prev = prev; - Text folderNameLabel = new Text("Folder name"); + Label folderNameLabel = new Label("Folder name"); TextField folderName = new TextField(diff.thisDir.getName()); folderName.setDisable(true); - Text titleLabel = new Text("Title"); + Label titleLabel = new Label("Title"); TextField title = new TextField(diff.title); Button editNotes = new Button("Edit notes"); @@ -110,6 +109,8 @@ public class DiffEditor extends Page scroll.getStyleClass().remove("scroll-pane"); scroll.getStyleClass().add("box"); // scroll.setPrefHeight(400); + System.out.println("dbg"+scroll.heightProperty()); + // TODO scroll.heightProperty is 0 here until the window is resized, idk what to do scroll.prefWidthProperty().bind(scroll.heightProperty().multiply(0.66)); Pane[] lanes = new Pane[5]; @@ -121,7 +122,7 @@ public class DiffEditor extends Page scrollContent.setSpacing(5); scrollContent.setAlignment(Pos.CENTER); - diff.notes.list.forEach(n -> lanes[n.lane].getChildren().add(drawNote(n))); + diff.notes.list.forEach(n -> lanes[n.lane].getChildren().add(drawBlock(n))); VBox notePreview = new VBox(); @@ -170,7 +171,7 @@ public class DiffEditor extends Page } // Duplicates of NotesEditor2 methods, should be made generic and combined - private Block drawNote(Note n) { + private Block drawBlock(Note n) { Color color = diff.level.colors[n.lane]; Block b = new Block(color,20, 20, 5, false, n); b.heightProperty().bind(scroll.widthProperty().divide(8)); diff --git a/src/main/java/net/sowgro/npehero/editor/DiffList.java b/src/main/java/net/sowgro/npehero/editor/DiffList.java index f3769ab..7369457 100755 --- a/src/main/java/net/sowgro/npehero/editor/DiffList.java +++ b/src/main/java/net/sowgro/npehero/editor/DiffList.java @@ -37,18 +37,14 @@ public class DiffList extends Page TableColumn<Difficulty,String> titleCol = new TableColumn<>("Name"); TableColumn<Difficulty,String> validCol = new TableColumn<>("Valid?"); + titleCol.prefWidthProperty().bind(diffs.widthProperty().multiply(0.4)); + validCol.prefWidthProperty().bind(diffs.widthProperty().multiply(0.4)); + diffs.getColumns().add(titleCol); diffs.getColumns().add(validCol); titleCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().title)); - validCol.setCellValueFactory(data -> { - if (data.getValue().isValid()) { - return new ReadOnlyStringWrapper("Yes"); - } - else { - return new ReadOnlyStringWrapper("No"); - } - }); + validCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().isValid() ? "Yes" : "No")); diffs.setItems(level.difficulties.list); diff --git a/src/main/java/net/sowgro/npehero/editor/LevelEditor.java b/src/main/java/net/sowgro/npehero/editor/LevelEditor.java index ae56d44..e17d209 100755 --- a/src/main/java/net/sowgro/npehero/editor/LevelEditor.java +++ b/src/main/java/net/sowgro/npehero/editor/LevelEditor.java @@ -90,19 +90,14 @@ public class LevelEditor extends Page TableColumn<Difficulty,String> diffCol = new TableColumn<>("Difficulty"); TableColumn<Difficulty,String> validCol = new TableColumn<>("Valid?"); + diffCol.prefWidthProperty().bind(diffList.widthProperty().multiply(0.45)); + validCol.prefWidthProperty().bind(diffList.widthProperty().multiply(0.45)); + diffList.getColumns().add(diffCol); diffList.getColumns().add(validCol); diffCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().title)); - validCol.setCellValueFactory(data -> { - if (data.getValue().isValid()) { - return new ReadOnlyStringWrapper("Yes"); - } - else { - return new ReadOnlyStringWrapper("No"); - } - }); - + validCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().isValid() ? "Yes" : "No")); diffList.setItems(level.difficulties.list); diffList.setRowFactory( _ -> { diff --git a/src/main/java/net/sowgro/npehero/editor/LevelList.java b/src/main/java/net/sowgro/npehero/editor/LevelList.java index 596f433..41c824e 100755 --- a/src/main/java/net/sowgro/npehero/editor/LevelList.java +++ b/src/main/java/net/sowgro/npehero/editor/LevelList.java @@ -34,6 +34,10 @@ public class LevelList extends Page TableColumn<Level,String> artistCol = new TableColumn<>("Artist"); TableColumn<Level,String> validCol = new TableColumn<>("Valid?"); + titleCol.prefWidthProperty().bind(levels.widthProperty().multiply(0.4)); + artistCol.prefWidthProperty().bind(levels.widthProperty().multiply(0.4)); + validCol.prefWidthProperty().bind(levels.widthProperty().multiply(0.15)); + levels.getColumns().add(titleCol); levels.getColumns().add(artistCol); levels.getColumns().add(validCol); @@ -128,7 +132,7 @@ public class LevelList extends Page Button exit = new Button(); exit.setText("Back"); - exit.setOnAction(e -> { + exit.setOnAction(_ -> { Sound.playSfx(Sound.BACKWARD); Driver.setMenu(new MainMenu()); }); 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); |