aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/sowgro/npehero/editor/NotesEditor.java
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2024-07-23 00:24:44 -0400
committersowgro <tpoke.ferrari@gmail.com>2024-07-23 00:24:44 -0400
commitaae98b8bfca1578c14d6dde3a2f3180c7c580131 (patch)
treea01dbb81ce6289c72b172b040a0a8185faaefd8e /src/main/java/net/sowgro/npehero/editor/NotesEditor.java
parent231c511304915d80aab89d28779d7445ad21ef70 (diff)
downloadNPEhero-aae98b8bfca1578c14d6dde3a2f3180c7c580131.tar.gz
NPEhero-aae98b8bfca1578c14d6dde3a2f3180c7c580131.tar.bz2
NPEhero-aae98b8bfca1578c14d6dde3a2f3180c7c580131.zip
Improve difficulty ordering and add songEnd and support multiple file types.
Diffstat (limited to 'src/main/java/net/sowgro/npehero/editor/NotesEditor.java')
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/NotesEditor.java132
1 files changed, 132 insertions, 0 deletions
diff --git a/src/main/java/net/sowgro/npehero/editor/NotesEditor.java b/src/main/java/net/sowgro/npehero/editor/NotesEditor.java
new file mode 100755
index 0000000..133330f
--- /dev/null
+++ b/src/main/java/net/sowgro/npehero/editor/NotesEditor.java
@@ -0,0 +1,132 @@
+package net.sowgro.npehero.editor;
+
+import java.io.FileNotFoundException;
+import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
+
+import javafx.geometry.Pos;
+import javafx.scene.input.KeyEvent;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.Pane;
+import javafx.scene.media.Media;
+import net.sowgro.npehero.gameplay.Timer;
+import net.sowgro.npehero.Driver;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.layout.VBox;
+import javafx.scene.text.Text;
+import net.sowgro.npehero.main.Control;
+import net.sowgro.npehero.main.Difficulty;
+import net.sowgro.npehero.main.Page;
+import net.sowgro.npehero.main.Sound;
+
+public class NotesEditor extends Page
+{
+ Text help;
+ String t1 = "Press Start to begin recording. Use the same keys. Note: existing notes will be overwritten.";
+ String t2 = "Now recording. Press Stop or " + Control.LEGACY_STOP.getKey().toString() + " to finish";
+ Difficulty diff;
+ Timer timer;
+ PrintWriter writer;
+
+ private HBox content = new HBox();
+
+ public NotesEditor(Difficulty diff, Page prev)
+ {
+ this.diff = diff;
+
+ help = new Text(t1);
+ Text cur = new Text("-----");
+
+ Button start = new Button("Start");
+ start.setOnAction(e -> start());
+ start.setFocusTraversable(false);
+
+ Button stop = new Button("Stop");
+ stop.setOnAction(e -> stop());
+ stop.setFocusTraversable(false);
+
+ VBox main = new VBox();
+ main.getChildren().addAll(help,cur,start,stop);
+
+ Button exit = new Button();
+ exit.setText("Back");
+ exit.setOnAction(e -> {
+ Sound.playSfx(Sound.BACKWARD);
+ Driver.setMenu(prev);
+ });
+
+ VBox centerBox = new VBox();
+ centerBox.getChildren().addAll(main, exit);
+ centerBox.setSpacing(10);
+ centerBox.setAlignment(Pos.CENTER);
+
+ content.getChildren().add(centerBox);
+ content.setAlignment(Pos.CENTER);
+
+ try {
+ writer = new PrintWriter(diff.notes.getFile(), "UTF-8");
+ } catch (FileNotFoundException | UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
+
+ Scene scene = Driver.primaryStage.getScene();
+ scene.addEventFilter(KeyEvent.KEY_PRESSED, e -> {
+ if (e.getCode() == Control.LANE0.getKey()) {
+ writer.println("d"+timer);
+ cur.setText("d"+timer);
+ }
+ if (e.getCode() == Control.LANE1.getKey()) {
+ writer.println("f"+timer);
+ cur.setText("f"+timer);
+ }
+ if (e.getCode() == Control.LANE2.getKey()) {
+ writer.println("s"+timer);
+ cur.setText("s"+timer);
+ }
+ if (e.getCode() == Control.LANE3.getKey()) {
+ writer.println("j"+timer);
+ cur.setText("j"+timer);
+ }
+ if (e.getCode() == Control.LANE4.getKey()) {
+ writer.println("k"+timer);
+ cur.setText("k"+timer);
+ }
+ if (e.getCode() == Control.LEGACY_STOP.getKey())
+ {
+ stop();
+ }
+ e.consume();
+ });
+
+ Driver.primaryStage.setOnCloseRequest(e -> stop());
+ }
+
+ @Override
+ public Pane getContent() {
+ return content;
+ }
+
+ private void start()
+ {
+ Sound.playSong(new Media(diff.level.song.toString()));
+ timer = new Timer(diff.bpm);
+ help.setText(t2);
+ }
+
+ private void stop()
+ {
+ try
+ {
+ Sound.stopSong();
+// diff.numBeats = (int)Double.parseDouble(timer.toString());
+ timer = null;
+ writer.close();
+ help.setText(t1);
+ }
+ catch (Exception e)
+ {
+ //System.err.println("tried to stop but already stopped");
+ }
+ }
+} \ No newline at end of file