diff options
Diffstat (limited to 'src/main/java/net/sowgro/npehero/editor')
3 files changed, 57 insertions, 30 deletions
diff --git a/src/main/java/net/sowgro/npehero/editor/DiffEditor.java b/src/main/java/net/sowgro/npehero/editor/DiffEditor.java index 0ae8f5f..7d2a8a6 100755 --- a/src/main/java/net/sowgro/npehero/editor/DiffEditor.java +++ b/src/main/java/net/sowgro/npehero/editor/DiffEditor.java @@ -132,6 +132,7 @@ public class DiffEditor extends Page          main.getChildren().addAll(optionsScroll);          main.setSpacing(10);          main.maxWidthProperty().bind(content.widthProperty().multiply(0.95)); +        main.maxHeightProperty().bind(content.heightProperty().multiply(0.75));          Button exit = new Button();          exit.setText("Back"); diff --git a/src/main/java/net/sowgro/npehero/editor/LevelEditor.java b/src/main/java/net/sowgro/npehero/editor/LevelEditor.java index f255705..a4e787a 100755 --- a/src/main/java/net/sowgro/npehero/editor/LevelEditor.java +++ b/src/main/java/net/sowgro/npehero/editor/LevelEditor.java @@ -1,12 +1,14 @@  package net.sowgro.npehero.editor;  import java.io.IOException; +import java.util.Objects;  import javafx.geometry.Insets;  import javafx.geometry.Pos;  import javafx.scene.Node;  import javafx.scene.control.*;  import javafx.scene.layout.*; +import javafx.scene.paint.Color;  import javafx.stage.FileChooser;  import javafx.stage.FileChooser.ExtensionFilter;  import net.sowgro.npehero.Driver; @@ -25,6 +27,7 @@ public class LevelEditor extends Page      private final Level level;      private final HBox content = new HBox(); +    private final CheckBox useCustomColors;      record OptionEntry(String label, Node action, ValidIndicator vi) {          OptionEntry(String label, Node action) { @@ -47,14 +50,17 @@ public class LevelEditor extends Page          descEntry = new TextField(level.desc); -        colorsPickers = new ColorPicker[] { -                new ColorPicker(level.colors[0]), -                new ColorPicker(level.colors[1]), -                new ColorPicker(level.colors[2]), -                new ColorPicker(level.colors[3]), -                new ColorPicker(level.colors[4]) -        }; -        for (ColorPicker cp : colorsPickers) { +        useCustomColors = new CheckBox("Use Custom Colors"); +        useCustomColors.setSelected(!hasNull(level.colors)); + +        colorsPickers = new ColorPicker[5]; +        for (int i = 0; i < colorsPickers.length; i++) { +            var cp = new ColorPicker(Objects.requireNonNullElse( +                    level.colors[i], +                    Settings.defaultColors[i] +            )); +            colorsPickers[i] = cp; +            cp.disableProperty().bind(useCustomColors.selectedProperty().not());              cp.getStyleClass().add("button");              cp.setMinHeight(60);              cp.setMinWidth(60); @@ -64,6 +70,9 @@ public class LevelEditor extends Page          colorPickerBox.getChildren().addAll(colorsPickers);          colorPickerBox.setSpacing(10); +        VBox blockColors = new VBox(useCustomColors, colorPickerBox); +        blockColors.setSpacing(10); +          Node songFile = createFileImportBox(                  Level.SONG_FILE,                  () -> level.song, @@ -103,7 +112,7 @@ public class LevelEditor extends Page                          new OptionEntry("Song File", songFile, songValid),                          new OptionEntry("Preview Image", previewImage),                          new OptionEntry("Background Image", backgroundImage), -                        new OptionEntry("Block Colors", colorPickerBox), +                        new OptionEntry("Block Colors", blockColors),                  }          };          HBox options = new HBox(); @@ -111,6 +120,7 @@ public class LevelEditor extends Page              VBox colBox = new VBox();              colBox.setSpacing(10);              colBox.setPrefWidth(400); +              for (OptionEntry option : col) {                  Label label = new Label(option.label);                  HBox labelBox = new HBox(label); @@ -174,11 +184,13 @@ public class LevelEditor extends Page          level.title = titleEntry.getText();          level.artist = artistEntry.getText();          level.desc = descEntry.getText(); -        level.colors[0] = colorsPickers[0].getValue(); -        level.colors[1] = colorsPickers[1].getValue(); -        level.colors[2] = colorsPickers[2].getValue(); -        level.colors[3] = colorsPickers[3].getValue(); -        level.colors[4] = colorsPickers[4].getValue(); +        for (int i = 0; i < colorsPickers.length; i++) { +            if (useCustomColors.isSelected()) { +                level.colors[i] = colorsPickers[i].getValue(); +            } else { +                level.colors[i] = null; +            } +        }          try {              level.writeMetadata();          } catch (IOException e) { @@ -239,4 +251,11 @@ public class LevelEditor extends Page          b1.setSpacing(10);          return b1;      } + +    boolean hasNull(Color[] arr) { +        for (Color color : arr) { +            if (color == null) return true; +        } +        return false; +    }  }
\ No newline at end of file diff --git a/src/main/java/net/sowgro/npehero/editor/NotesEditor2.java b/src/main/java/net/sowgro/npehero/editor/NotesEditor2.java index bd9fd85..4491786 100644 --- a/src/main/java/net/sowgro/npehero/editor/NotesEditor2.java +++ b/src/main/java/net/sowgro/npehero/editor/NotesEditor2.java @@ -30,21 +30,23 @@ import net.sowgro.npehero.main.*;  import net.sowgro.npehero.main.Control;  import java.io.IOException; +import java.util.Objects;  import java.util.Set;  import java.util.concurrent.atomic.AtomicInteger;  public class NotesEditor2 extends Page {      private final DoubleBinding scaleBind; -    Difficulty diff; -    ScrollPane scroll = new ScrollPane(); -    Pane[] lanes; -    MediaPlayer m; -    Polygon playhead; -    ListProperty<Block> selectedNotes = new SimpleListProperty<>(FXCollections.observableArrayList()); -    ListProperty<Note> noteList; -    DiffEditor prev; -    DoubleProperty newEndTime = new SimpleDoubleProperty(0); -    CheckBox selectMultiple; +    private final Difficulty diff; +    private final ScrollPane scroll = new ScrollPane(); +    private final Pane[] lanes; +    private final MediaPlayer m; +    private final Polygon playhead; +    private final ListProperty<Block> selectedNotes = new SimpleListProperty<>(FXCollections.observableArrayList()); +    private final ListProperty<Note> noteList; +    private final DiffEditor prev; +    private final DoubleProperty newEndTime = new SimpleDoubleProperty(0); +    private final CheckBox selectMultiple; +    private final Color[] colors = new Color[5];      private final HBox content = new HBox(); @@ -54,6 +56,11 @@ public class NotesEditor2 extends Page {          m = new MediaPlayer(diff.level.song);          m.volumeProperty().bind(Settings.musicVol);          this.prev = prev; +        for (int i = 0; i < colors.length; i++) { +            colors[i] = Settings.forceDefaultColors +                    ? Settings.defaultColors[i] +                    : Objects.requireNonNullElse(diff.level.colors[i], Settings.defaultColors[i]); +        }          // Buttons          VBox actionBox = new VBox(); @@ -438,7 +445,7 @@ public class NotesEditor2 extends Page {      }      private Block drawBlock(Note n) { -        Color color = diff.level.colors[n.lane]; +        Color color = colors[n.lane];          Block b = new Block(color, false, n);  //        var sizeBind = scroll.widthProperty().divide(8);  //        b.heightProperty().bind(sizeBind); @@ -516,11 +523,11 @@ public class NotesEditor2 extends Page {      private Pane addHelp() {          Label l1 = new Label("Use the following keys");          HBox hb = new HBox( -                createTarget(diff.level.colors[0], Control.LANE0), -                createTarget(diff.level.colors[1], Control.LANE1), -                createTarget(diff.level.colors[2], Control.LANE2), -                createTarget(diff.level.colors[3], Control.LANE3), -                createTarget(diff.level.colors[4], Control.LANE4) +                createTarget(colors[0], Control.LANE0), +                createTarget(colors[1], Control.LANE1), +                createTarget(colors[2], Control.LANE2), +                createTarget(colors[3], Control.LANE3), +                createTarget(colors[4], Control.LANE4)          );          hb.setSpacing(10);          hb.setAlignment(Pos.CENTER_LEFT);  | 
