diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2023-06-02 00:48:13 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2023-06-02 00:48:13 -0400 |
commit | 4e43d6f020d908ccd9b8a6b77803cac943da00ed (patch) | |
tree | ae0eb103049a5838ebc7f1de35cc16988a4f07d8 /src/devmenu | |
parent | 48bfed142f7175809a43037fb695b6fcdc4146b1 (diff) | |
download | NPEhero-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.java | 7 | ||||
-rw-r--r-- | src/devmenu/DiffEditor.java | 14 | ||||
-rw-r--r-- | src/devmenu/LevelEditor.java | 71 | ||||
-rw-r--r-- | src/devmenu/LevelList.java | 30 | ||||
-rw-r--r-- | src/devmenu/NotesEditor.java | 1 |
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; |