diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/net/sowgro/npehero/gui/ControlEditor.java | 106 | ||||
-rw-r--r-- | src/main/java/net/sowgro/npehero/main/Control.java | 37 | ||||
-rw-r--r-- | src/main/java/net/sowgro/npehero/main/Notes.java | 5 | ||||
-rwxr-xr-x | src/main/resources/net/sowgro/npehero/style.css | 4 |
4 files changed, 86 insertions, 66 deletions
diff --git a/src/main/java/net/sowgro/npehero/gui/ControlEditor.java b/src/main/java/net/sowgro/npehero/gui/ControlEditor.java index 637a9d8..ecd2fab 100644 --- a/src/main/java/net/sowgro/npehero/gui/ControlEditor.java +++ b/src/main/java/net/sowgro/npehero/gui/ControlEditor.java @@ -1,23 +1,28 @@ package net.sowgro.npehero.gui; +import javafx.beans.InvalidationListener; +import javafx.beans.binding.DoubleBinding; +import javafx.beans.property.Property; import javafx.beans.property.ReadOnlyObjectWrapper; import javafx.beans.property.ReadOnlyStringWrapper; import javafx.event.EventHandler; import javafx.geometry.Insets; import javafx.geometry.Pos; +import javafx.scene.Node; import javafx.scene.control.*; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; import javafx.scene.input.MouseEvent; -import javafx.scene.layout.GridPane; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Pane; -import javafx.scene.layout.VBox; +import javafx.scene.layout.*; +import javafx.scene.paint.Color; import net.sowgro.npehero.Driver; import net.sowgro.npehero.main.Control; import net.sowgro.npehero.main.SoundController; import org.w3c.dom.events.Event; +import java.util.List; +import java.util.Map; + public class ControlEditor extends Pane { public ControlEditor() { @@ -27,8 +32,8 @@ public class ControlEditor extends Pane { scrollPane.getStyleClass().add("box"); scrollPane.setPadding(new Insets(10)); controls.setPadding(new Insets(10)); - controls.setHgap(40); controls.setVgap(20); + controls.setHgap(40); scrollPane.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.35)); @@ -55,51 +60,56 @@ public class ControlEditor extends Pane { rootBox.setAlignment(Pos.CENTER); ToggleGroup tg = new ToggleGroup(); - for (int i = 0; i < Control.values().length; i++) { - Control control = Control.values()[i]; - - - // label - Label label = new Label(control.label); - controls.add(label, 0, i); - - // control button - ToggleButton controlButton = new ToggleButton("<err>"); - controlButton.setText(keyToString(control.keyProperty.get())); - control.keyProperty.addListener(_ -> { - System.out.println(control.label + " set to " + control.keyProperty.get()); - System.out.println(controlButton.getText()); + int i = 0; + for (Map.Entry<String, List<Control>> section : Control.sections) { + // section header + Label sectionLabel = new Label(section.getKey()); + sectionLabel.getStyleClass().add("gray"); + BorderPane sectionBox = new BorderPane(); + sectionBox.setCenter(sectionLabel); + controls.add(sectionBox, 0, i, 3, 1); + i++; + + for (Control control : section.getValue()) { + + // label + Label label = new Label(control.label); + controls.add(label, 0, i); + + // control button + ToggleButton controlButton = new ToggleButton("<err>"); controlButton.setText(keyToString(control.keyProperty.get())); - net.sowgro.npehero.main.Control.writeToFile(); - }); - controlButton.setOnMouseClicked(_ -> { - EventHandler<KeyEvent> keyListener = new EventHandler<>() { - @Override - public void handle(KeyEvent k) { - control.keyProperty.set(k.getCode()); - rootBox.removeEventFilter(KeyEvent.KEY_PRESSED, this); - controlButton.setSelected(false); - k.consume(); + control.keyProperty.addListener(_ -> { + controlButton.setText(keyToString(control.keyProperty.get())); + Control.writeToFile(); + }); + controlButton.setOnMouseClicked(_ -> { + EventHandler<KeyEvent> keyListener = new EventHandler<>() { + @Override + public void handle(KeyEvent k) { + control.keyProperty.set(k.getCode()); + rootBox.removeEventFilter(KeyEvent.KEY_PRESSED, this); + controlButton.setSelected(false); + k.consume(); + } + }; + if (controlButton.isSelected()) { + rootBox.addEventFilter(KeyEvent.KEY_PRESSED, keyListener); + } else { + rootBox.removeEventFilter(KeyEvent.KEY_PRESSED, keyListener); } - }; - if (controlButton.isSelected()) { - System.out.println("Event registered"); - rootBox.addEventFilter(KeyEvent.KEY_PRESSED, keyListener); - } - else { - System.out.println("Event un-registered"); - rootBox.removeEventFilter(KeyEvent.KEY_PRESSED, keyListener); - } - }); - tg.getToggles().add(controlButton); - controls.add(controlButton, 1, i); - - // label button - Button resetButton = new Button("Reset"); - resetButton.setOnMouseClicked(_ -> { - control.keyProperty.set(control.defaultKey); - }); - controls.add(resetButton, 2, i); + }); + tg.getToggles().add(controlButton); + controls.add(controlButton, 1, i); + + // reset button + Button resetButton = new Button("Reset"); + resetButton.setOnMouseClicked(_ -> { + control.keyProperty.set(control.defaultKey); + }); + controls.add(resetButton, 2, i); + i++; + } } diff --git a/src/main/java/net/sowgro/npehero/main/Control.java b/src/main/java/net/sowgro/npehero/main/Control.java index 7bbcfb1..2ec8a61 100644 --- a/src/main/java/net/sowgro/npehero/main/Control.java +++ b/src/main/java/net/sowgro/npehero/main/Control.java @@ -7,28 +7,37 @@ import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import java.io.*; +import java.util.*; + +import static java.util.Map.entry; public enum Control { - LANE0 ("Lane 0", KeyCode.D), - LANE1 ("Lane 1", KeyCode.F), - LANE2 ("Lane 2", KeyCode.SPACE), - LANE3 ("Lane 3", KeyCode.J), - LANE4 ("Lane 4", KeyCode.K), - DELETE_NOTE ("Delete note", KeyCode.DELETE), - NOTE_UP ("Move note up", KeyCode.EQUALS), - NOTE_DOWN ("Move note down", KeyCode.MINUS), - SCROLL_LOCK ("Scroll lock", KeyCode.L), + LANE0 ("Lane 1", KeyCode.D), + LANE1 ("Lane 2", KeyCode.F), + LANE2 ("Lane 3", KeyCode.SPACE), + LANE3 ("Lane 4", KeyCode.J), + LANE4 ("Lane 5", KeyCode.K), + DELETE_NOTE ("Delete Note", KeyCode.DELETE), + NOTE_UP ("Move Note Up", KeyCode.EQUALS), + NOTE_DOWN ("Move Note Down", KeyCode.MINUS), + SCROLL_LOCK ("Scroll Lock", KeyCode.L), PLAY_PAUSE ("Play / Pause", KeyCode.P), - CLEAR_SELECTION ("Clear selection", KeyCode.ESCAPE), + CLEAR_SELECTION ("Clear Selection", KeyCode.ESCAPE), SELECT_ALL ("Select All", KeyCode.S), - LEGACY_PRINT ("Print time (Legacy)", KeyCode.Q), - LEGACY_STOP ("Stop edit (Legacy)", KeyCode.ESCAPE); + LEGACY_PRINT ("Print Time", KeyCode.Q), + LEGACY_STOP ("Stop Edit", KeyCode.ESCAPE); public final String label; public final KeyCode defaultKey; public final ObjectProperty<KeyCode> keyProperty = new SimpleObjectProperty<>(); + public static final List<Map.Entry<String, List<Control>>> sections = List.of( + entry("Gameplay", List.of(LANE0, LANE1, LANE2, LANE3, LANE4)), + entry("Editor", List.of(DELETE_NOTE, NOTE_UP, NOTE_DOWN, SCROLL_LOCK, PLAY_PAUSE, CLEAR_SELECTION, SELECT_ALL)), + entry("Legacy Editor", List.of(LEGACY_PRINT, LEGACY_STOP)) + ); + private static final String fileName = "controls.json"; Control(String label, KeyCode key) { @@ -72,7 +81,7 @@ public enum Control { public static void writeToFile() { try { - File file = new File("controls.json"); + File file = new File(fileName); FileWriter fileWriter = new FileWriter(file); JSONObject jsonObject = new JSONObject(); for (Control control : Control.values()) { @@ -87,7 +96,7 @@ public enum Control { } public static void readFromFile() { - File file = new File("controls.json"); + File file = new File(fileName); JSONParser jsonParser = new JSONParser(); try { diff --git a/src/main/java/net/sowgro/npehero/main/Notes.java b/src/main/java/net/sowgro/npehero/main/Notes.java index b0979de..543d6f9 100644 --- a/src/main/java/net/sowgro/npehero/main/Notes.java +++ b/src/main/java/net/sowgro/npehero/main/Notes.java @@ -71,10 +71,7 @@ public class Notes { // TODO handle error } - writer.println(lane + note.time.get()); - writer.flush(); - writer.close(); - // still not working + writer.println(lane + "" + note.time.get()); } } catch (IOException e) { diff --git a/src/main/resources/net/sowgro/npehero/style.css b/src/main/resources/net/sowgro/npehero/style.css index 950be11..b0a0209 100755 --- a/src/main/resources/net/sowgro/npehero/style.css +++ b/src/main/resources/net/sowgro/npehero/style.css @@ -233,6 +233,10 @@ Slider:focused .thumb{ -fx-text-fill: white; } +.gray { + -fx-text-fill: #a8a8a8; +} + /* debug */ .debug { |