diff options
| author | sowgro <tpoke.ferrari@gmail.com> | 2024-08-28 19:50:58 -0400 | 
|---|---|---|
| committer | sowgro <tpoke.ferrari@gmail.com> | 2024-08-28 19:50:58 -0400 | 
| commit | c3554cb31774afc8bf335b761649b7aacf7128c5 (patch) | |
| tree | c7b40548cfb8500fd716fd65fb03513a231c0f4a /src | |
| parent | f3a037701799169066c6cb12b3c7023029b8b281 (diff) | |
| download | NPEhero-c3554cb31774afc8bf335b761649b7aacf7128c5.tar.gz NPEhero-c3554cb31774afc8bf335b761649b7aacf7128c5.tar.bz2 NPEhero-c3554cb31774afc8bf335b761649b7aacf7128c5.zip | |
Fix sizing of tables, improve display of level details, improve logo
Diffstat (limited to 'src')
11 files changed, 102 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); diff --git a/src/main/resources/net/sowgro/npehero/style.css b/src/main/resources/net/sowgro/npehero/style.css index 9549b43..6985a7f 100755 --- a/src/main/resources/net/sowgro/npehero/style.css +++ b/src/main/resources/net/sowgro/npehero/style.css @@ -206,9 +206,16 @@ Slider:focused .thumb{      -fx-fill: black;  } +.t0e { +    -fx-fill: #d45500; +    -fx-font-size: 250; +    -fx-font-family: "RIT Meera New"; +} +  .t1 {      -fx-font-size: 50;      -fx-fill: white; +    -fx-padding: 0;  }  .t11 { | 
