diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2024-10-18 00:25:28 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2024-10-18 00:25:28 -0400 |
commit | b3cc60eba7f1bc646c0cc6356a338fcfeb0ee0f5 (patch) | |
tree | 3fa547dce2fc1a3a7a8fa36c6449848960628b54 /src/main/java/net/sowgro/npehero/editor/LevelEditor.java | |
parent | 28ade1fce71064db5c95a0d69fe94e3097042e36 (diff) | |
download | NPEhero-dev2.tar.gz NPEhero-dev2.tar.bz2 NPEhero-dev2.zip |
Add default color customizationdev2
Diffstat (limited to 'src/main/java/net/sowgro/npehero/editor/LevelEditor.java')
-rwxr-xr-x | src/main/java/net/sowgro/npehero/editor/LevelEditor.java | 47 |
1 files changed, 33 insertions, 14 deletions
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 |