aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/sowgro/npehero/devmenu/DiffEditor.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/sowgro/npehero/devmenu/DiffEditor.java')
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/devmenu/DiffEditor.java131
1 files changed, 97 insertions, 34 deletions
diff --git a/src/main/java/net/sowgro/npehero/devmenu/DiffEditor.java b/src/main/java/net/sowgro/npehero/devmenu/DiffEditor.java
index 4bb55e4..74cfab6 100755
--- a/src/main/java/net/sowgro/npehero/devmenu/DiffEditor.java
+++ b/src/main/java/net/sowgro/npehero/devmenu/DiffEditor.java
@@ -1,52 +1,57 @@
package net.sowgro.npehero.devmenu;
-import java.io.FileNotFoundException;
-import java.io.UnsupportedEncodingException;
-
+import javafx.beans.binding.DoubleBinding;
+import javafx.geometry.Pos;
+import javafx.scene.control.ScrollPane;
+import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
+import javafx.scene.paint.Color;
import net.sowgro.npehero.Driver;
+import net.sowgro.npehero.gameplay.Block;
import net.sowgro.npehero.gui.LevelSurround;
-import net.sowgro.npehero.gui.MainMenu;
-import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
-import javafx.stage.Stage;
import net.sowgro.npehero.main.Difficulty;
+import net.sowgro.npehero.main.Note;
public class DiffEditor extends Pane
{
+ Difficulty diff;
+ ScrollPane scroll;
+
+ public Pane prev;
/*
* 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.
*/
- public DiffEditor(Difficulty diff)
+ public DiffEditor(Difficulty diff, Pane prev)
{
- Stage primaryStage = new Stage();
+ this.diff = diff;
+ this.prev = prev;
- Text folderNameLabel = new Text("Folder name (ordered alphabetically)");
+ Text folderNameLabel = new Text("Folder name");
TextField folderName = new TextField(diff.thisDir.getName());
folderName.setDisable(true);
Text titleLabel = new Text("Title");
TextField title = new TextField(diff.title);
- Text bpmLabel = new Text("BPM");
- TextField bpm = new TextField(diff.bpm+"");
-
- Text numBeatsLabel = new Text("Number of beats (set by notes editor)");
- TextField numBeats = new TextField(diff.numBeats+"");
-
- Text priorityLabel = new Text("priority (lower first)");
+ Text priorityLabel = new Text("Order (lower first)");
TextField priority = new TextField(diff.priority+"");
Button editNotes = new Button("Edit notes");
editNotes.setOnAction(e -> {
+ Driver.setMenu(new NotesEditor2(diff, this));
+ });
+
+ Button oldEditNotes = new Button("Edit notes (legacy)");
+ oldEditNotes.setOnAction(_ -> {
try {
- new NotesEditor(diff);
- } catch (FileNotFoundException | UnsupportedEncodingException e1) {
+ Driver.setMenu(new NotesEditor(diff, this));
+ } catch (Exception e1) {
e1.printStackTrace();
}
});
@@ -54,28 +59,86 @@ public class DiffEditor extends Pane
Button editScores = new Button("Clear leaderboard");
editScores.setOnAction(e -> diff.getLeaderboard().clear());
- Button playLevel = new Button("Launch level");
- playLevel.setOnAction(e -> Driver.setMenu(new LevelSurround(diff.level, diff, new MainMenu())));
-
- Button refresh = new Button("Refresh");
- refresh.setOnAction( e -> {
- numBeats.setText(diff.numBeats+"");
- });
+ Button playLevel = new Button("Play level");
+ playLevel.setOnAction(e -> Driver.setMenu(new LevelSurround(diff.level, diff, this)));
Button save = new Button("Save");
- save.setOnAction(e -> { //assigns text feilds to values
+ save.setOnAction(e -> { //assigns text fields to values
diff.title = title.getText();
- diff.bpm = Double.parseDouble(bpm.getText());
- diff.numBeats = Integer.parseInt(numBeats.getText());
+// diff.bpm = Double.parseDouble(bpm.getText());
+// diff.numBeats = Integer.parseInt(numBeats.getText());
diff.priority = Integer.parseInt(priority.getText());
diff.writeMetadata();
});
- VBox main = new VBox();
- main.getChildren().addAll(folderNameLabel,folderName,titleLabel,title,bpmLabel,bpm,numBeatsLabel,numBeats,refresh,priorityLabel,priority,editNotes,editScores,playLevel,save);
-// Scene scene = new Scene(main);
-// primaryStage.setScene(scene);
-// primaryStage.show();
- super.getChildren().add(main);
+ HBox content = new HBox();
+ ScrollPane scroll = new ScrollPane(content);
+ this.scroll = scroll;
+ scroll.getStyleClass().remove("scroll-pane");
+ scroll.getStyleClass().add("box");
+ scroll.setPrefHeight(400);
+
+ Pane[] lanes = new Pane[5];
+ for (int i = 0; i < lanes.length; i++) {
+ lanes[i] = new Pane();
+ }
+
+ content.getChildren().addAll(lanes);
+
+ diff.notes.list.forEach(n -> lanes[n.lane].getChildren().add(drawNote(n)));
+
+ VBox notePreview = new VBox(scroll);
+ notePreview.getChildren().addAll(editNotes,oldEditNotes);
+ notePreview.setSpacing(10);
+
+ VBox left = new VBox();
+ left.getChildren().addAll(folderNameLabel,folderName,titleLabel,title,priorityLabel,priority,editScores,playLevel,save);
+ left.setSpacing(10);
+
+ HBox main = new HBox();
+ main.getChildren().addAll(left, notePreview);
+ main.setSpacing(30);
+
+ Button exit = new Button();
+ exit.setText("Back");
+ exit.setOnAction(e -> {
+ Driver.soundController.playSfx("backward");
+ Driver.setMenu(prev);
+ });
+
+ VBox centerBox = new VBox();
+ centerBox.setAlignment(Pos.CENTER);
+ centerBox.setSpacing(10);
+ centerBox.getChildren().addAll(main,exit);
+ centerBox.setMinWidth(400);
+
+ HBox rootBox = new HBox();
+ rootBox.prefWidthProperty().bind(super.prefWidthProperty());
+ rootBox.prefHeightProperty().bind(super.prefHeightProperty());
+ rootBox.getChildren().add(centerBox);
+ rootBox.setAlignment(Pos.CENTER);
+
+ super.getChildren().add(rootBox);
+ }
+
+ // Duplicates of NotesEditor2 methods, should be made generic and combined
+ private Block drawNote(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));
+ b.widthProperty().bind(scroll.widthProperty().divide(8));
+ b.arcHeightProperty().bind(scroll.widthProperty().divide(25));
+ b.arcWidthProperty().bind(scroll.widthProperty().divide(25));
+ b.strokeWidthProperty().bind(scroll.widthProperty().divide(120));
+ b.layoutYProperty().bind(secondToScreenPos(n.time.add(0)));
+ return b;
+ }
+
+ private DoubleBinding secondToScreenPos(double second) {
+ return scroll.heightProperty().multiply(second * 0.9);
+ }
+
+ private DoubleBinding secondToScreenPos(DoubleBinding second) {
+ return scroll.heightProperty().multiply(second).multiply(0.9);
}
} \ No newline at end of file