aboutsummaryrefslogtreecommitdiff
path: root/src/devmenu
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2023-06-02 00:48:13 -0400
committersowgro <tpoke.ferrari@gmail.com>2023-06-02 00:48:13 -0400
commit4e43d6f020d908ccd9b8a6b77803cac943da00ed (patch)
treeae0eb103049a5838ebc7f1de35cc16988a4f07d8 /src/devmenu
parent48bfed142f7175809a43037fb695b6fcdc4146b1 (diff)
downloadNPEhero-4e43d6f020d908ccd9b8a6b77803cac943da00ed.tar.gz
NPEhero-4e43d6f020d908ccd9b8a6b77803cac943da00ed.tar.bz2
NPEhero-4e43d6f020d908ccd9b8a6b77803cac943da00ed.zip
Finish levelUtility and project cleanup
Diffstat (limited to 'src/devmenu')
-rw-r--r--src/devmenu/DebugMenu.java7
-rw-r--r--src/devmenu/DiffEditor.java14
-rw-r--r--src/devmenu/LevelEditor.java71
-rw-r--r--src/devmenu/LevelList.java30
-rw-r--r--src/devmenu/NotesEditor.java1
5 files changed, 88 insertions, 35 deletions
diff --git a/src/devmenu/DebugMenu.java b/src/devmenu/DebugMenu.java
index 9b68423..19fc8e1 100644
--- a/src/devmenu/DebugMenu.java
+++ b/src/devmenu/DebugMenu.java
@@ -3,7 +3,6 @@ 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;
@@ -19,10 +18,6 @@ public class DebugMenu
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"));
@@ -39,7 +34,7 @@ public class DebugMenu
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);
+ primaryPane.getChildren().addAll(wallpaperTest,wallpaperTest2,wallpaperTest3,testVol);
Scene primaryScene = new Scene(primaryPane);
primaryStage.setScene(primaryScene);
diff --git a/src/devmenu/DiffEditor.java b/src/devmenu/DiffEditor.java
index fbc0d8a..6bcbd28 100644
--- a/src/devmenu/DiffEditor.java
+++ b/src/devmenu/DiffEditor.java
@@ -10,8 +10,15 @@ import main.Difficulty;
public class DiffEditor
{
+ /*
+ * 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)
{
+ Stage primaryStage = new Stage();
+
Text folderNameLabel = new Text("Folder name (ordered alphabetically)");
TextField folderName = new TextField(diff.thisDir.getName());
folderName.setDisable(true);
@@ -31,21 +38,16 @@ public class DiffEditor
Button editScores = new Button("Edit leaderboard");
Button save = new Button("Save");
- save.setOnAction(e -> {
+ save.setOnAction(e -> { //assigns text feilds to values
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();
}
diff --git a/src/devmenu/LevelEditor.java b/src/devmenu/LevelEditor.java
index 5e9a818..94509ac 100644
--- a/src/devmenu/LevelEditor.java
+++ b/src/devmenu/LevelEditor.java
@@ -1,7 +1,6 @@
package devmenu;
-import javafx.beans.value.ChangeListener;
-import javafx.beans.value.ObservableValue;
+import java.io.File;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
@@ -12,14 +11,27 @@ import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
+import javafx.stage.FileChooser;
import javafx.stage.Stage;
+import javafx.stage.FileChooser.ExtensionFilter;
import main.Difficulty;
import main.Level;
public class LevelEditor
-{
+{
+ private File selectedSong = null;
+ private File selectedPreview = null;
+ private File selectedBackground = null;
+
+ /*
+ * 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 LevelEditor(Level level)
{
+ Stage primaryStage = new Stage();
+
Text folderNameLabel = new Text("Folder name");
TextField folderName = new TextField(level.thisDir.getName());
folderName.setDisable(true);
@@ -40,13 +52,35 @@ public class LevelEditor
ColorPicker c4 = new ColorPicker(level.colors[3]);
ColorPicker c5 = new ColorPicker(level.colors[4]);
- ObservableList diffList2 = FXCollections.observableArrayList();
+ Text filesLabel = new Text("Files");
+
+ FileChooser backgroundChooser = new FileChooser();
+ backgroundChooser.getExtensionFilters().add(new ExtensionFilter("PNG", "*.png"));
+ Button backgroundButton = new Button("Import background PNG");
+ backgroundButton.setOnAction(e -> {selectedBackground = backgroundChooser.showOpenDialog(primaryStage);});
+
+ FileChooser previewChooser = new FileChooser();
+ previewChooser.getExtensionFilters().add(new ExtensionFilter("PNG", "*.png"));
+ Button previewButton = new Button("Import preview PNG");
+ previewButton.setOnAction(e -> {selectedPreview = previewChooser.showOpenDialog(primaryStage);});
+
+ FileChooser songChooser = new FileChooser();
+ songChooser.getExtensionFilters().add(new ExtensionFilter("WAV", "*.wav"));
+ Button songButton = new Button("Import song WAV");
+ songButton.setOnAction(e -> selectedSong = songChooser.showOpenDialog(primaryStage));
+
+ Text diffLabel = new Text("Difficulties");
+
+ ObservableList<Difficulty> diffList2 = FXCollections.observableArrayList();
diffList2.addAll(level.getDiffList());
- ListView<Difficulty> diffList = new ListView();
+ ListView<Difficulty> diffList = new ListView<Difficulty>();
diffList.setItems(diffList2);
- diffList.setOnMouseClicked(e -> new DiffEditor(diffList.getSelectionModel().getSelectedItem()));
- Text diffLabel = new Text("Difficulties");
+ Button edit = new Button("Edit");
+ edit.setOnAction(e -> new DiffEditor(diffList.getSelectionModel().getSelectedItem()));
+
+ Button remove = new Button("Delete");
+ remove.setOnAction(e -> level.removeDiff(diffList.getSelectionModel().getSelectedItem()));
Button refresh = new Button("Refresh");
refresh.setOnAction(e -> {
@@ -55,6 +89,9 @@ public class LevelEditor
diffList.setItems(diffList2);
});
+ HBox buttons = new HBox();
+ buttons.getChildren().addAll(edit,remove,refresh);
+
TextField newDiff = new TextField("new");
Button newDiffButton = new Button("add");
newDiffButton.setOnAction(e -> level.addDiff(newDiff.getText()));
@@ -62,7 +99,7 @@ public class LevelEditor
newDiffBox.getChildren().addAll(newDiff,newDiffButton);
Button save = new Button("Save");
- save.setOnAction(e -> {
+ save.setOnAction(e -> { //asigns feilds to values
level.setTitle(title.getText());
level.setArtist(artist.getText());
level.desc = desc.getText();
@@ -71,13 +108,25 @@ public class LevelEditor
level.colors[2] = c3.getValue();
level.colors[3] = c4.getValue();
level.colors[4] = c5.getValue();
+ if (selectedBackground != null && selectedBackground.exists())
+ {
+ level.addFile(selectedBackground,"background.png");
+ }
+ if (selectedPreview != null && selectedPreview.exists())
+ {
+ level.addFile(selectedPreview,"preview.png");
+ }
+ if (selectedSong != null)
+ {
+ level.addFile(selectedSong,"song.wav");
+ }
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,refresh,newDiffBox,save);
-
- Stage primaryStage = new Stage();
+ main.getChildren().addAll(folderNameLabel,folderName,titleLabel,title,artistLabel,artist,descLabel,desc,colorsLabel,
+ c1,c2,c3,c4,c5,filesLabel,previewButton,backgroundButton,songButton,diffLabel,diffList,buttons,newDiffBox,save);
+
Scene scene = new Scene(main);
primaryStage.setScene(scene);
primaryStage.show();
diff --git a/src/devmenu/LevelList.java b/src/devmenu/LevelList.java
index 66ff797..7eaca84 100644
--- a/src/devmenu/LevelList.java
+++ b/src/devmenu/LevelList.java
@@ -1,13 +1,6 @@
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;
@@ -18,10 +11,17 @@ import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import main.Level;
+import main.LevelController;
public class LevelList
{
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.
+ */
public LevelList()
{
//sets up table view: requires special getters, setters and constructors to work
@@ -36,11 +36,19 @@ public class LevelList
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()));
+ levels.setItems(LevelController.levelList);
+
+ Button edit = new Button("Edit");
+ edit.setOnAction(e -> new LevelEditor(levels.getSelectionModel().getSelectedItem()));
+
+ Button remove = new Button("Delete");
+ remove.setOnAction(e -> gui.Driver.levelController.removeLevel(levels.getSelectionModel().getSelectedItem()));
Button refresh = new Button("Refresh");
- refresh.setOnAction(e -> levels.setItems(Driver.levelController.levelList));
+ refresh.setOnAction(e -> levels.setItems(LevelController.levelList));
+
+ HBox buttons = new HBox();
+ buttons.getChildren().addAll(edit,remove,refresh);
TextField newLevel = new TextField("new");
Button newLevelButton = new Button("add");
@@ -49,7 +57,7 @@ public class LevelList
newLevelBox.getChildren().addAll(newLevel,newLevelButton);
VBox main = new VBox();
- main.getChildren().addAll(levels,refresh,newLevelBox);
+ main.getChildren().addAll(levels,buttons,newLevelBox);
Scene scene = new Scene(main);
primaryStage.setScene(scene);
primaryStage.show();
diff --git a/src/devmenu/NotesEditor.java b/src/devmenu/NotesEditor.java
index 5f26890..400d547 100644
--- a/src/devmenu/NotesEditor.java
+++ b/src/devmenu/NotesEditor.java
@@ -1,7 +1,6 @@
package devmenu;
import java.io.File;
-
import gameplay.Timer;
import javafx.scene.Scene;
import javafx.scene.control.Button;