aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/sowgro/npehero/editor
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2024-10-18 00:25:28 -0400
committersowgro <tpoke.ferrari@gmail.com>2024-10-18 00:25:28 -0400
commitb3cc60eba7f1bc646c0cc6356a338fcfeb0ee0f5 (patch)
tree3fa547dce2fc1a3a7a8fa36c6449848960628b54 /src/main/java/net/sowgro/npehero/editor
parent28ade1fce71064db5c95a0d69fe94e3097042e36 (diff)
downloadNPEhero-dev2.tar.gz
NPEhero-dev2.tar.bz2
NPEhero-dev2.zip
Add default color customizationdev2
Diffstat (limited to 'src/main/java/net/sowgro/npehero/editor')
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/DiffEditor.java1
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/LevelEditor.java47
-rw-r--r--src/main/java/net/sowgro/npehero/editor/NotesEditor2.java39
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);