aboutsummaryrefslogtreecommitdiff
path: root/src/devmenu
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2023-06-01 00:53:04 -0400
committersowgro <tpoke.ferrari@gmail.com>2023-06-01 00:53:04 -0400
commit6c216a309838bf1cbeb19070ce180c0170ccd3c9 (patch)
tree461f877b9417621cb0a19b1bbc735c8455a570ba /src/devmenu
parent99584f39f8e8f3b69255135665040c2a947d4021 (diff)
downloadNPEhero-6c216a309838bf1cbeb19070ce180c0170ccd3c9.tar.gz
NPEhero-6c216a309838bf1cbeb19070ce180c0170ccd3c9.tar.bz2
NPEhero-6c216a309838bf1cbeb19070ce180c0170ccd3c9.zip
early code for level editor gui
Diffstat (limited to 'src/devmenu')
-rw-r--r--src/devmenu/DebugMenu.java58
-rw-r--r--src/devmenu/DiffEditor.java51
-rw-r--r--src/devmenu/LevelEditor.java77
-rw-r--r--src/devmenu/LevelList.java54
-rw-r--r--src/devmenu/NotesEditor.java50
5 files changed, 290 insertions, 0 deletions
diff --git a/src/devmenu/DebugMenu.java b/src/devmenu/DebugMenu.java
new file mode 100644
index 0000000..9b68423
--- /dev/null
+++ b/src/devmenu/DebugMenu.java
@@ -0,0 +1,58 @@
+package devmenu;
+
+import gui.Driver;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.TextField;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
+
+public class DebugMenu
+{
+ public Stage primaryStage = new Stage();
+
+ /*
+ * 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.
+ */
+ VBox primaryPane = new VBox();
+ public DebugMenu()
+ {
+ Button levelCreator = new Button();
+ levelCreator.setText("LEVEL CREATOR");
+ levelCreator.setOnAction(e -> new LevelList());
+
+ Button wallpaperTest = new Button();
+ wallpaperTest.setText("wallpaper trees");
+ wallpaperTest.setOnAction(e -> Driver.setBackground("assets/trees.png"));
+
+ Button wallpaperTest2 = new Button();
+ wallpaperTest2.setText("wallpaper water");
+ wallpaperTest2.setOnAction(e -> Driver.setBackground("assets/water.png"));
+
+ Button wallpaperTest3 = new Button();
+ wallpaperTest3.setText("wallpaper pico");
+ wallpaperTest3.setOnAction(e -> Driver.setBackground("assets/pico.png"));
+
+ Button testVol = new Button();
+ testVol.setText("print volumes");
+ testVol.setOnAction(e -> System.out.println("sfx:"+Driver.settingsController.effectsVol+" msc:"+Driver.settingsController.musicVol));
+
+ primaryPane.getChildren().addAll(levelCreator,wallpaperTest,wallpaperTest2,wallpaperTest3,testVol);
+
+ Scene primaryScene = new Scene(primaryPane);
+ primaryStage.setScene(primaryScene);
+ primaryStage.setTitle("debug");
+ }
+
+ public void show()
+ {
+ primaryStage.show();
+ }
+
+ public void addButton(Button b)
+ {
+ primaryPane.getChildren().add(b);
+ }
+}
diff --git a/src/devmenu/DiffEditor.java b/src/devmenu/DiffEditor.java
new file mode 100644
index 0000000..278e3de
--- /dev/null
+++ b/src/devmenu/DiffEditor.java
@@ -0,0 +1,51 @@
+package devmenu;
+
+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 main.Difficulty;
+
+public class DiffEditor
+{
+ public DiffEditor(Difficulty diff)
+ {
+ Text folderNameLabel = new Text("Folder name (ordered alphabetically)");
+ TextField folderName = new TextField(diff.thisDir.getName());
+
+ 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");
+ TextField numBeats = new TextField(diff.numBeats+"");
+
+ Button editNotes = new Button("Edit notes");
+ editNotes.setOnAction(e -> new NotesEditor(diff));
+
+ Button editScores = new Button("Edit leaderboard");
+
+ Button save = new Button("Save");
+ save.setOnAction(e -> {
+ diff.title = title.getText();
+ diff.bpm = Integer.parseInt(bpm.getText());
+ diff.numBeats = Integer.parseInt(numBeats.getText());
+ if(! diff.thisDir.getName().equals(folderName.getText()));
+ {
+ //will rename
+ }
+ diff.writeMetadata();
+ });
+
+ VBox main = new VBox();
+ main.getChildren().addAll(folderNameLabel,folderName,titleLabel,title,bpmLabel,bpm,numBeatsLabel,numBeats,editNotes,editScores,save);
+ Scene scene = new Scene(main);
+ Stage primaryStage = new Stage();
+ primaryStage.setScene(scene);
+ primaryStage.show();
+ }
+} \ No newline at end of file
diff --git a/src/devmenu/LevelEditor.java b/src/devmenu/LevelEditor.java
new file mode 100644
index 0000000..00a21a3
--- /dev/null
+++ b/src/devmenu/LevelEditor.java
@@ -0,0 +1,77 @@
+package devmenu;
+
+import javafx.beans.value.ChangeListener;
+import javafx.beans.value.ObservableValue;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.ColorPicker;
+import javafx.scene.control.ListView;
+import javafx.scene.control.TextField;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.VBox;
+import javafx.scene.text.Text;
+import javafx.stage.Stage;
+import main.Difficulty;
+import main.Level;
+
+public class LevelEditor
+{
+ public LevelEditor(Level level)
+ {
+ Text folderNameLabel = new Text("Folder name");
+ TextField folderName = new TextField(level.thisDir.getName());
+
+ Text titleLabel = new Text("Title");
+ TextField title = new TextField(level.getTitle());
+
+ Text artistLabel = new Text("Artist");
+ TextField artist = new TextField(level.getArtist());
+
+ Text descLabel = new Text("Description");
+ TextField desc = new TextField(level.desc);
+
+ Text colorsLabel = new Text("Colors (Left to right)");
+ ColorPicker c1 = new ColorPicker(level.colors[0]);
+ ColorPicker c2 = new ColorPicker(level.colors[1]);
+ ColorPicker c3 = new ColorPicker(level.colors[2]);
+ ColorPicker c4 = new ColorPicker(level.colors[3]);
+ ColorPicker c5 = new ColorPicker(level.colors[4]);
+
+ ObservableList diffList2 = FXCollections.observableArrayList();
+ diffList2.addAll(level.getDiffList());
+ ListView<Difficulty> diffList = new ListView();
+ diffList.setItems(diffList2);
+ diffList.setOnMouseClicked(e -> new DiffEditor(diffList.getSelectionModel().getSelectedItem()));
+
+ Text diffLabel = new Text("Difficulties");
+
+ TextField newDiff = new TextField("new");
+ Button newDiffButton = new Button("add");
+ newDiffButton.setOnAction(e -> level.addDiff(newDiff.getText()));
+ HBox newDiffBox = new HBox();
+ newDiffBox.getChildren().addAll(newDiff,newDiffButton);
+
+ Button save = new Button("Save");
+ save.setOnAction(e -> {
+ level.setTitle(title.getText());
+ level.setArtist(artist.getText());
+ level.desc = desc.getText();
+ level.colors[0] = c1.getValue();
+ level.colors[1] = c2.getValue();
+ level.colors[2] = c3.getValue();
+ level.colors[3] = c4.getValue();
+ level.colors[4] = c5.getValue();
+ level.writeMetadata();
+ });
+
+ VBox main = new VBox();
+ main.getChildren().addAll(folderNameLabel,folderName,titleLabel,title,artistLabel,artist,descLabel,desc,colorsLabel,c1,c2,c3,c4,c5,diffLabel,diffList,newDiffBox,save);
+
+ Stage primaryStage = new Stage();
+ Scene scene = new Scene(main);
+ primaryStage.setScene(scene);
+ primaryStage.show();
+ }
+} \ No newline at end of file
diff --git a/src/devmenu/LevelList.java b/src/devmenu/LevelList.java
new file mode 100644
index 0000000..e3dec7f
--- /dev/null
+++ b/src/devmenu/LevelList.java
@@ -0,0 +1,54 @@
+package devmenu;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
+
+import gui.Driver;
+import javafx.beans.value.ChangeListener;
+import javafx.beans.value.ObservableValue;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.TableView;
+import javafx.scene.control.TextField;
+import javafx.scene.control.cell.PropertyValueFactory;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
+import main.Level;
+
+public class LevelList
+{
+ Stage primaryStage = new Stage();
+ public LevelList()
+ {
+ //sets up table view: requires special getters, setters and constructors to work
+ TableView<Level> levels = new TableView<Level>();
+
+ TableColumn<Level,String> titleCol = new TableColumn<Level,String>("Title");
+ TableColumn<Level,String> artistCol = new TableColumn<Level,String>("Artist");
+
+ levels.getColumns().add(titleCol);
+ levels.getColumns().add(artistCol);
+
+ titleCol.setCellValueFactory(new PropertyValueFactory<Level, String>("title"));
+ artistCol.setCellValueFactory(new PropertyValueFactory<Level, String>("artist"));
+
+ levels.setItems(Driver.levelController.levelList);
+ levels.setOnMouseClicked(e -> new LevelEditor(levels.getSelectionModel().getSelectedItem()));
+
+ TextField newLevel = new TextField("new");
+ Button newLevelButton = new Button("add");
+ newLevelButton.setOnAction(e -> Driver.levelController.addLevel(newLevel.getText()));
+ HBox newLevelBox = new HBox();
+ newLevelBox.getChildren().addAll(newLevel,newLevelButton);
+
+ VBox main = new VBox();
+ main.getChildren().addAll(levels,newLevelBox);
+ Scene scene = new Scene(main);
+ primaryStage.setScene(scene);
+ primaryStage.show();
+ }
+} \ No newline at end of file
diff --git a/src/devmenu/NotesEditor.java b/src/devmenu/NotesEditor.java
new file mode 100644
index 0000000..5f26890
--- /dev/null
+++ b/src/devmenu/NotesEditor.java
@@ -0,0 +1,50 @@
+package devmenu;
+
+import java.io.File;
+
+import gameplay.Timer;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.layout.HBox;
+import javafx.scene.text.Text;
+import javafx.stage.Stage;
+import main.Difficulty;
+import sound.AudioFilePlayer;
+
+public class NotesEditor
+{
+ Difficulty diff;
+ AudioFilePlayer music;
+ Timer timer;
+ public NotesEditor(Difficulty diff)
+ {
+ this.diff = diff;
+
+ Text timerDisplay = new Text("TIMER");
+
+ Button start = new Button("Start");
+ start.setOnAction(e -> start());
+
+ Button stop = new Button("Stop");
+ stop.setOnAction(e -> stop());
+
+ HBox main = new HBox();
+ main.getChildren().addAll(timerDisplay,start,stop);
+
+ Scene scene = new Scene(main);
+ Stage primaryStage = new Stage();
+ primaryStage.setScene(scene);
+ primaryStage.show();
+ }
+
+ private void start()
+ {
+ music = new AudioFilePlayer(new File(diff.thisDir, "song.wav").toPath().toString());
+ timer = new Timer(diff.bpm);
+ }
+
+ private void stop()
+ {
+
+ }
+} \ No newline at end of file