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 '')
| -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;  | 
