diff options
Diffstat (limited to '')
| -rw-r--r-- | src/devmenu/DebugMenu.java | 7 | ||||
| -rw-r--r-- | src/devmenu/DiffEditor.java | 28 | ||||
| -rw-r--r-- | src/devmenu/LevelEditor.java | 79 | ||||
| -rw-r--r-- | src/devmenu/LevelList.java | 31 | ||||
| -rw-r--r-- | src/devmenu/NotesEditor.java | 67 | 
5 files changed, 169 insertions, 43 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 278e3de..e2ce5d8 100644 --- a/src/devmenu/DiffEditor.java +++ b/src/devmenu/DiffEditor.java @@ -1,5 +1,8 @@  package devmenu; +import java.io.FileNotFoundException; +import java.io.UnsupportedEncodingException; +  import javafx.scene.Scene;  import javafx.scene.control.Button;  import javafx.scene.control.TextField; @@ -10,10 +13,18 @@ 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);          Text titleLabel = new Text("Title");          TextField title = new TextField(diff.title); @@ -25,26 +36,27 @@ public class DiffEditor          TextField numBeats = new TextField(diff.numBeats+"");          Button editNotes = new Button("Edit notes"); -        editNotes.setOnAction(e -> new NotesEditor(diff)); +        editNotes.setOnAction(e -> { +            try { +                new NotesEditor(diff); +            } catch (FileNotFoundException | UnsupportedEncodingException e1) { +                e1.printStackTrace(); +            } +        });          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.bpm = Double.parseDouble(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 00a21a3..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,16 +11,30 @@ 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);          Text titleLabel = new Text("Title");          TextField title = new TextField(level.getTitle()); @@ -39,13 +52,45 @@ 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 -> { +            diffList2.clear(); +            diffList2.addAll(level.getDiffList()); +            diffList.setItems(diffList2); +        }); + +        HBox buttons = new HBox(); +        buttons.getChildren().addAll(edit,remove,refresh);          TextField newDiff = new TextField("new");          Button newDiffButton = new Button("add"); @@ -54,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(); @@ -63,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,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 e3dec7f..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,8 +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(LevelController.levelList)); + +        HBox buttons = new HBox(); +        buttons.getChildren().addAll(edit,remove,refresh);          TextField newLevel = new TextField("new");          Button newLevelButton = new Button("add"); @@ -46,7 +57,7 @@ public class LevelList          newLevelBox.getChildren().addAll(newLevel,newLevelButton);          VBox main = new VBox(); -        main.getChildren().addAll(levels,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..e94ff2e 100644 --- a/src/devmenu/NotesEditor.java +++ b/src/devmenu/NotesEditor.java @@ -1,11 +1,22 @@  package devmenu; +import java.io.BufferedWriter;  import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.UnsupportedEncodingException;  import gameplay.Timer;  import javafx.scene.Scene;  import javafx.scene.control.Button; +import javafx.scene.input.KeyCode;  import javafx.scene.layout.HBox; +import javafx.scene.layout.VBox; +import javafx.scene.media.Media; +import javafx.scene.media.MediaPlayer; +import javafx.scene.media.MediaView;  import javafx.scene.text.Text;  import javafx.stage.Stage;  import main.Difficulty; @@ -13,38 +24,78 @@ import sound.AudioFilePlayer;  public class NotesEditor  { +    Text help; +    String t1 = "Press Start to begin recording. Use the same keys."; +    String t2 = "Now recording. Press Stop or ESC to finish"; +    MediaPlayer mediaPlayer;      Difficulty diff;      AudioFilePlayer music;      Timer timer; -    public NotesEditor(Difficulty diff) +    PrintWriter writer; +    public NotesEditor(Difficulty diff) throws FileNotFoundException, UnsupportedEncodingException      {          this.diff = diff; -         -        Text timerDisplay = new Text("TIMER"); + +        help = new Text(t1);          Button start = new Button("Start");          start.setOnAction(e -> start()); -        Button stop = new Button("Stop"); +        Button stop = new Button("Pause");          stop.setOnAction(e -> stop()); -        HBox main = new HBox(); -        main.getChildren().addAll(timerDisplay,start,stop); +        Media song = new Media(diff.level.song.toURI().toString()); +        mediaPlayer = new MediaPlayer(song); +        new MediaView(mediaPlayer); + +        VBox main = new VBox(); +        main.getChildren().addAll(help,start,stop);          Scene scene = new Scene(main);          Stage primaryStage = new Stage();          primaryStage.setScene(scene);          primaryStage.show(); + +        writer = new PrintWriter(diff.notes, "UTF-8"); + +        scene.setOnKeyPressed(e -> { +			if (e.getCode() == KeyCode.D) { +				writer.println("d"+timer); +			} +			if (e.getCode() == KeyCode.F) { +				writer.println("f"+timer); +			} +			if (e.getCode() == KeyCode.SPACE) { +				writer.println("s"+timer); +			} +			if (e.getCode() == KeyCode.J) { +				writer.println("j"+timer); +			} +			if (e.getCode() == KeyCode.K) { +				writer.println("k"+timer); +			} +            if (e.getCode() == KeyCode.ESCAPE) +            { +                stop(); +            } +		}); + +        primaryStage.setOnCloseRequest(e -> stop());      }      private void start()      { -        music = new AudioFilePlayer(new File(diff.thisDir, "song.wav").toPath().toString()); +        mediaPlayer.play();          timer = new Timer(diff.bpm); +        help.setText(t2);      }      private void stop()      { - +        mediaPlayer.stop(); +        diff.numBeats = (int)timer.time(); +        timer = null; +        writer.close(); +        help.setText(t1);      }  }
\ No newline at end of file  | 
