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); |