aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2024-09-01 16:24:25 -0400
committersowgro <tpoke.ferrari@gmail.com>2024-09-01 16:24:25 -0400
commitef46303949173cd67cf00a4f40d16f1375ed2250 (patch)
tree721496396f728062de351caf207dffab342a1f25
parent1300b5eb7a86d72e920436de24b77004efe51af8 (diff)
downloadNPEhero-ef46303949173cd67cf00a4f40d16f1375ed2250.tar.gz
NPEhero-ef46303949173cd67cf00a4f40d16f1375ed2250.tar.bz2
NPEhero-ef46303949173cd67cf00a4f40d16f1375ed2250.zip
Smooth scrolling in NotesEditor2
and other improvements - select multiple checkbox - make taget and block take less prams - block sizing changes - fix sort in LeaderboardView
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/DiffEditor.java12
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/DiffList.java2
-rw-r--r--src/main/java/net/sowgro/npehero/editor/NotesEditor2.java164
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gameplay/Block.java10
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gameplay/SongPlayer.java10
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gameplay/Target.java23
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/LeaderboardView.java6
-rw-r--r--src/main/java/net/sowgro/npehero/main/Control.java3
-rwxr-xr-xsrc/main/resources/net/sowgro/npehero/style.css2
9 files changed, 131 insertions, 101 deletions
diff --git a/src/main/java/net/sowgro/npehero/editor/DiffEditor.java b/src/main/java/net/sowgro/npehero/editor/DiffEditor.java
index d3ecdc4..9a4365d 100755
--- a/src/main/java/net/sowgro/npehero/editor/DiffEditor.java
+++ b/src/main/java/net/sowgro/npehero/editor/DiffEditor.java
@@ -171,11 +171,13 @@ public class DiffEditor extends Page
// Duplicates of NotesEditor2 methods, should be made generic and combined
private Block drawBlock(Note n) {
Color color = diff.level.colors[n.lane];
- Block b = new Block(color,20, 20, 5, false, n);
- b.heightProperty().bind(scroll.widthProperty().divide(8));
- b.widthProperty().bind(scroll.widthProperty().divide(8));
- b.arcHeightProperty().bind(scroll.widthProperty().divide(25));
- b.arcWidthProperty().bind(scroll.widthProperty().divide(25));
+ Block b = new Block(color, false, n);
+ var sizeBind = scroll.widthProperty().divide(8);
+ b.heightProperty().bind(sizeBind);
+ b.widthProperty().bind(sizeBind);
+ var arcBind = scroll.widthProperty().divide(30);
+ b.arcHeightProperty().bind(arcBind);
+ b.arcWidthProperty().bind(arcBind);
b.strokeWidthProperty().bind(scroll.widthProperty().divide(120));
b.layoutYProperty().bind(secondToScreenPos(n.time.add(0)));
return b;
diff --git a/src/main/java/net/sowgro/npehero/editor/DiffList.java b/src/main/java/net/sowgro/npehero/editor/DiffList.java
index 7106609..acda994 100755
--- a/src/main/java/net/sowgro/npehero/editor/DiffList.java
+++ b/src/main/java/net/sowgro/npehero/editor/DiffList.java
@@ -36,7 +36,7 @@ public class DiffList extends Page
TableColumn<Difficulty,String> titleCol = new TableColumn<>("Name");
TableColumn<Difficulty,String> validCol = new TableColumn<>("Valid?");
- titleCol.prefWidthProperty().bind(diffs.widthProperty().multiply(0.4));
+ titleCol.prefWidthProperty().bind(diffs.widthProperty().multiply(0.5));
validCol.prefWidthProperty().bind(diffs.widthProperty().multiply(0.4));
diffs.getColumns().add(titleCol);
diff --git a/src/main/java/net/sowgro/npehero/editor/NotesEditor2.java b/src/main/java/net/sowgro/npehero/editor/NotesEditor2.java
index f5b63e2..5ba7d88 100644
--- a/src/main/java/net/sowgro/npehero/editor/NotesEditor2.java
+++ b/src/main/java/net/sowgro/npehero/editor/NotesEditor2.java
@@ -1,5 +1,7 @@
package net.sowgro.npehero.editor;
+import javafx.animation.Interpolator;
+import javafx.animation.TranslateTransition;
import javafx.beans.binding.DoubleBinding;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.ListProperty;
@@ -38,17 +40,19 @@ public class NotesEditor2 extends Page {
Pane[] lanes;
MediaPlayer m;
Polygon playhead;
- ListProperty<Block> activeNotes = new SimpleListProperty<>(FXCollections.observableArrayList());
+ ListProperty<Block> selectedNotes = new SimpleListProperty<>(FXCollections.observableArrayList());
ListProperty<Note> noteList;
DiffEditor prev;
DoubleProperty newEndTime = new SimpleDoubleProperty(0);
+ CheckBox selectMultiple;
- private HBox content = new HBox();
+ private final HBox content = new HBox();
public NotesEditor2(Difficulty diff, DiffEditor prev) {
this.diff = diff;
noteList = diff.notes.deepCopyList();
m = new MediaPlayer(diff.level.song);
+ m.volumeProperty().bind(Settings.musicVol);
this.prev = prev;
// Buttons
@@ -62,9 +66,10 @@ public class NotesEditor2 extends Page {
actionBox.getChildren().addAll(noteLabel, addNote, delNote, moveNote);
Label selectionLabel = new Label("Selection");
+ selectMultiple = new CheckBox("Select multiple");
Button selectAll = new Button("Select All");
Button clearSelect = new Button("Clear");
- actionBox.getChildren().addAll(selectionLabel, selectAll, clearSelect);
+ actionBox.getChildren().addAll(selectionLabel, selectMultiple, selectAll, clearSelect);
Label playbackLabel = new Label("Playback");
ToggleButton play = new ToggleButton("Play");
@@ -73,9 +78,9 @@ public class NotesEditor2 extends Page {
Button setEnd = new Button("End Here");
actionBox.getChildren().addAll(playbackLabel, play, reset, scrollLock, setEnd);
- delNote.disableProperty().bind(activeNotes.emptyProperty());
- moveNote.disableProperty().bind(activeNotes.emptyProperty());
- clearSelect.disableProperty().bind(activeNotes.emptyProperty());
+ delNote.disableProperty().bind(selectedNotes.emptyProperty());
+ moveNote.disableProperty().bind(selectedNotes.emptyProperty());
+ clearSelect.disableProperty().bind(selectedNotes.emptyProperty());
ToggleGroup tg = new ToggleGroup();
addNote.setToggleGroup(tg);
@@ -108,11 +113,17 @@ public class NotesEditor2 extends Page {
);
playhead.setFill(Color.WHITE);
playheadLane.getChildren().add(playhead);
+ // TODO
// playhead.setOnMouseDragged(e -> {
// scroll.get
// playhead.layoutYProperty().bind(secondToScreenPos());
// });
+ Block trailBlazer = new Block(Color.BLACK, false, null);
+ trailBlazer.layoutYProperty().bind(playhead.translateYProperty().add(scroll.heightProperty().divide(2)));
+ trailBlazer.setVisible(false);
+ playheadLane.getChildren().add(trailBlazer);
+
HBox scrollContent = new HBox();
scrollContent.setAlignment(Pos.CENTER);
scrollContent.setSpacing(10);
@@ -125,7 +136,11 @@ public class NotesEditor2 extends Page {
playheadLine.setStartY(0);
playheadLine.setEndY(0);
playheadLine.setStroke(Color.WHITE);
- playheadLine.layoutYProperty().bind(playhead.layoutYProperty());
+ playheadLine.layoutYProperty().bind(playhead.translateYProperty());
+// playheadLine.layoutYProperty().bind(secondToScreenPos(m.getCurrentTime().toSeconds()));
+// m.currentTimeProperty().addListener((_, _, _) -> {
+// playheadLine.layoutYProperty().bind(secondToScreenPos(m.getCurrentTime().toSeconds()));
+// });
Line endLine = new Line();
endLine.setStartX(0);
@@ -141,10 +156,9 @@ public class NotesEditor2 extends Page {
stackPane.getChildren().addAll(scrollContent, contentOverlay);
scroll.setContent(stackPane);
-// scroll.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.35));
-// scroll.setMinWidth(400);
scroll.prefHeightProperty().bind(content.heightProperty().multiply(0.75));
- scroll.prefWidthProperty().bind(scroll.prefHeightProperty().multiply(0.70));
+ scroll.prefWidthProperty().bind(scroll.heightProperty().multiply(0.72));
+ scroll.minWidthProperty().bind(scroll.heightProperty().multiply(0.72));
scroll.getStyleClass().remove("scroll-pane");
scroll.getStyleClass().add("box");
scroll.setPadding(new Insets(5));
@@ -176,8 +190,9 @@ public class NotesEditor2 extends Page {
diff.endTime = newEndTime.get();
diff.bpm = 0.0;
try {
- diff.readMetadata();
+ diff.writeMetadata();
} catch (IOException e) {
+ e.printStackTrace();
// TODO
}
Sound.playSfx(Sound.BACKWARD);
@@ -236,24 +251,31 @@ public class NotesEditor2 extends Page {
// write notes on key press
content.addEventFilter(KeyEvent.KEY_PRESSED, e -> {
KeyCode k = e.getCode();
- if (k == Control.LANE0.getKey()) { WriteNote(0); }
- if (k == Control.LANE1.getKey()) { WriteNote(1); }
- if (k == Control.LANE2.getKey()) { WriteNote(2); }
- if (k == Control.LANE3.getKey()) { WriteNote(3); }
- if (k == Control.LANE4.getKey()) { WriteNote(4); }
- if (k == Control.NOTE_DOWN.getKey()) { MoveNoteDown(); }
- if (k == Control.NOTE_UP.getKey()) { MoveNoteUp(); }
- if (k == Control.DELETE_NOTE.getKey()) { delNote.fire(); }
- if (k == Control.CLEAR_SELECTION.getKey()) { clearSelect.fire(); }
- if (k == Control.SCROLL_LOCK.getKey()) { scrollLock.fire(); }
- if (k == Control.PLAY_PAUSE.getKey()) { play.fire(); }
- if (k == Control.SELECT_ALL.getKey()) { selectAll.fire(); }
- e.consume();
+ if (k == Control.LANE0.getKey()) { e.consume(); WriteNote(0); }
+ if (k == Control.LANE1.getKey()) { e.consume(); WriteNote(1); }
+ if (k == Control.LANE2.getKey()) { e.consume(); WriteNote(2); }
+ if (k == Control.LANE3.getKey()) { e.consume(); WriteNote(3); }
+ if (k == Control.LANE4.getKey()) { e.consume(); WriteNote(4); }
+ if (k == Control.NOTE_DOWN.getKey()) { e.consume(); MoveNoteDown(); }
+ if (k == Control.NOTE_UP.getKey()) { e.consume(); MoveNoteUp(); }
+ if (k == Control.DELETE_NOTE.getKey()) { e.consume(); delNote.fire(); }
+ if (k == Control.CLEAR_SELECTION.getKey()) { e.consume(); clearSelect.fire(); }
+ if (k == Control.SCROLL_LOCK.getKey()) { e.consume(); scrollLock.fire(); }
+ if (k == Control.PLAY_PAUSE.getKey()) { e.consume(); play.fire(); }
+ if (k == Control.SELECT_ALL.getKey()) { e.consume(); selectAll.fire(); }
+ if (k == Control.SELECT_MULTIPLE.getKey()) { e.consume(); selectMultiple.fire(); }
+ });
+ content.addEventFilter(KeyEvent.KEY_RELEASED, e -> {
+ KeyCode k = e.getCode();
+ if (k == Control.SELECT_MULTIPLE.getKey()) { e.consume(); selectMultiple.fire(); }
});
- m.currentTimeProperty().addListener(_ -> {
- // TODO
- playhead.layoutYProperty().bind(secondToScreenPos(m.getCurrentTime().toSeconds()));
+ m.currentTimeProperty().addListener((_ ,oldValue ,newValue) -> {
+ var diffr = newValue.toSeconds() - oldValue.toSeconds();
+ TranslateTransition anim = new TranslateTransition(Duration.seconds(0.09), playhead);
+ anim.byYProperty().bind(secondToScreenPos(diffr));
+ anim.setInterpolator(Interpolator.LINEAR);
+ anim.play();
});
play.setOnAction(_ -> {
@@ -271,7 +293,7 @@ public class NotesEditor2 extends Page {
Sound.playSfx(Sound.FORWARD);
if (scrollLock.isSelected()) {
// vvalue takes in a value between 0 and 1 NOT a pixel value
- scroll.vvalueProperty().bind(playhead.layoutYProperty().subtract(scroll.heightProperty().divide(2)).divide(scrollContent.heightProperty().subtract(scroll.heightProperty())));
+ scroll.vvalueProperty().bind(playhead.translateYProperty().subtract(scroll.heightProperty().divide(2)).divide(scrollContent.heightProperty().subtract(scroll.heightProperty())));
}
else {
scroll.vvalueProperty().unbind();
@@ -287,25 +309,25 @@ public class NotesEditor2 extends Page {
delNote.setOnAction(_ -> {
Sound.playSfx(Sound.FORWARD);
- activeNotes.forEach(e -> {
+ selectedNotes.forEach(e -> {
noteList.remove(e.note);
});
- activeNotes.clear();
+ selectedNotes.clear();
});
clearSelect.setOnAction(_ -> {
Sound.playSfx(Sound.FORWARD);
- activeNotes.forEach(e -> e.setFill(e.color));
- activeNotes.clear();
+// selectedNotes.forEach(e -> e.setStroke(Color.TRANSPARENT));
+ selectedNotes.clear();
});
selectAll.setOnAction(_ -> {
Sound.playSfx(Sound.FORWARD);
- activeNotes.clear();
+ selectedNotes.clear();
for (Pane lane : lanes) {
- lane.getChildren().forEach(e -> activeNotes.add((Block) e));
+ lane.getChildren().forEach(e -> selectedNotes.add((Block) e));
}
- activeNotes.forEach(e -> e.setFill(Color.WHITE));
+// selectedNotes.forEach(e -> e.setStroke(Color.WHITE));
});
Pane addHelp = addHelp();
@@ -341,7 +363,7 @@ public class NotesEditor2 extends Page {
setEnd.setOnAction(_ -> {
Sound.playSfx(Sound.FORWARD);
- double tmp = screenPosToSecond(playhead.getLayoutY());
+ double tmp = screenPosToSecond(playhead.getTranslateY());
if (Math.round(tmp*10)/10 == Math.round(m.getTotalDuration().toSeconds() * 10)/10) {
newEndTime.set(0);
}
@@ -350,12 +372,11 @@ public class NotesEditor2 extends Page {
}
});
- activeNotes.addListener((_, _, _) -> {
- if (activeNotes.isEmpty()) {
- selectionLabel.setText("Selection");
- }
- else {
- selectionLabel.setText("Selection (" + activeNotes.size() + ")");
+ selectedNotes.addListener((ListChangeListener<? super Block>) (arg) -> {
+ selectionLabel.setText("Selection (" + selectedNotes.size() + ")");
+ while (arg.next()) {
+ arg.getAddedSubList().forEach(n -> n.setStroke(Color.WHITE));
+ arg.getRemoved().forEach(n -> n.setStroke(Color.TRANSPARENT));
}
});
}
@@ -381,21 +402,27 @@ public class NotesEditor2 extends Page {
private Block drawBlock(Note n) {
Color color = diff.level.colors[n.lane];
- Block b = new Block(color,20, 20, 5, false, n);
- b.heightProperty().bind(scroll.widthProperty().divide(8));
- b.widthProperty().bind(scroll.widthProperty().divide(8));
- b.arcHeightProperty().bind(scroll.widthProperty().divide(25));
- b.arcWidthProperty().bind(scroll.widthProperty().divide(25));
+ Block b = new Block(color, false, n);
+ var sizeBind = scroll.widthProperty().divide(8);
+ b.heightProperty().bind(sizeBind);
+ b.widthProperty().bind(sizeBind);
+ var arcBind = scroll.widthProperty().divide(30);
+ b.arcHeightProperty().bind(arcBind);
+ b.arcWidthProperty().bind(arcBind);
b.strokeWidthProperty().bind(scroll.widthProperty().divide(120));
b.layoutYProperty().bind(secondToScreenPos(n.time.add(0)));
b.setOnMouseClicked(_ -> {
- if (activeNotes.contains(b)) {
- activeNotes.remove(b);
- b.setFill(b.color);
+ if (selectedNotes.contains(b)) {
+ selectedNotes.remove(b);
+// b.setStroke(Color.TRANSPARENT);
}
else {
- activeNotes.add(b);
- b.setFill(Color.WHITE);
+ if (!selectMultiple.isSelected()) {
+// selectedNotes.forEach(e -> e.setStroke(Color.TRANSPARENT));
+ selectedNotes.clear();
+ }
+ selectedNotes.add(b);
+// b.setStroke(Color.WHITE);
}
});
return b;
@@ -429,26 +456,26 @@ public class NotesEditor2 extends Page {
}
private void WriteNote(int col) {
- Note tmp = new Note(screenPosToSecond(playhead.getLayoutY()), col);
+ Note tmp = new Note(screenPosToSecond(playhead.getTranslateY()), col);
noteList.add(tmp);
}
private void MoveNoteUp() {
- activeNotes.forEach(n -> n.note.time.setValue(n.note.time.get() - 0.01));
+ selectedNotes.forEach(n -> n.note.time.setValue(n.note.time.get() - 0.01));
}
private void MoveNoteDown() {
- activeNotes.forEach(n -> n.note.time.setValue(n.note.time.get() + 0.01));
+ selectedNotes.forEach(n -> n.note.time.setValue(n.note.time.get() + 0.01));
}
private Pane addHelp() {
Label l1 = new Label("Use the following keys");
HBox hb = new HBox(
- new Target(diff.level.colors[0], 40, 40, 10, Control.LANE0.targetString()),
- new Target(diff.level.colors[1], 40, 40, 10, Control.LANE1.targetString()),
- new Target(diff.level.colors[2], 40, 40, 10, Control.LANE2.targetString()),
- new Target(diff.level.colors[3], 40, 40, 10, Control.LANE3.targetString()),
- new Target(diff.level.colors[4], 40, 40, 10, Control.LANE4.targetString())
+ createTarget(diff.level.colors[0], Control.LANE0),
+ createTarget(diff.level.colors[1], Control.LANE1),
+ createTarget(diff.level.colors[2], Control.LANE2),
+ createTarget(diff.level.colors[3], Control.LANE3),
+ createTarget(diff.level.colors[4], Control.LANE4)
);
hb.setSpacing(10);
hb.setAlignment(Pos.CENTER_LEFT);
@@ -462,7 +489,12 @@ public class NotesEditor2 extends Page {
private Pane moveHelp() {
Label l1 = new Label("Use the");
- HBox hb = new HBox(new Target(Color.BLACK, 40, 40, 10, Control.NOTE_UP.targetString()), new Label("and"), new Target(Color.BLACK, 40, 40, 10, Control.NOTE_DOWN.targetString()), new Label("keys"));
+ HBox hb = new HBox(
+ createTarget(Color.BLACK, Control.NOTE_UP),
+ new Label("and"),
+ createTarget(Color.BLACK, Control.NOTE_DOWN),
+ new Label("keys")
+ );
hb.setSpacing(10);
hb.setAlignment(Pos.CENTER_LEFT);
Label l2 = new Label("to move the selected \nnote(s) up and down.");
@@ -473,4 +505,14 @@ public class NotesEditor2 extends Page {
ret.setLayoutY(120);
return ret;
}
+
+ private Target createTarget(Color color, Control control) {
+ Target target = new Target(color, control.targetString());
+ target.rect.setWidth(40);
+ target.rect.setHeight(40);
+ target.rect.setArcHeight(5);
+ target.rect.setArcWidth(5);
+ target.rect.setStrokeWidth(3);
+ return target;
+ }
}
diff --git a/src/main/java/net/sowgro/npehero/gameplay/Block.java b/src/main/java/net/sowgro/npehero/gameplay/Block.java
index 9d68ab6..5d35ccc 100755
--- a/src/main/java/net/sowgro/npehero/gameplay/Block.java
+++ b/src/main/java/net/sowgro/npehero/gameplay/Block.java
@@ -16,24 +16,20 @@ public class Block extends Rectangle
public Color color;
public Note note;
- public Block(Color color, double width, double height, int cornerRadius, boolean useDropShadow, Note note)
+ public Block(Color color, boolean useDropShadow, Note note)
{
this.note = note;
this.color = color;
super.setFill(color);
- super.setWidth(width);
- super.setHeight(height);
- super.setArcHeight(cornerRadius);
- super.setArcWidth(cornerRadius);
if (useDropShadow) {
enableDropShadow();
}
}
- public Block(Color color, double width, double height, int cornerRadius) {
- this(color, width, height, cornerRadius, true, null);
+ public Block(Color color, Note note) {
+ this(color, true, note);
}
public void enableDropShadow() {
diff --git a/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java b/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java
index 91a3ecc..f3abf91 100755
--- a/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java
+++ b/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java
@@ -60,7 +60,7 @@ public class SongPlayer extends HBox {
// create targets
for (int i = 0; i < lanes.length; i++) {
lanes[i] = new Lane();
- var tmp = new Target(level.colors[i], 50, 50, 20, Control.lanes[i].targetString());
+ var tmp = new Target(level.colors[i], Control.lanes[i].targetString());
bindTarget(tmp);
lanes[i].target = tmp;
}
@@ -79,7 +79,7 @@ public class SongPlayer extends HBox {
}
}));
// schedule the game over screen to show at the end
- timeline.getKeyFrames().add(new KeyFrame(Duration.seconds(songLength + START_DELAY), _ -> {
+ timeline.getKeyFrames().add(new KeyFrame(Duration.seconds(songLength + FALL_TIME + START_DELAY), _ -> {
Driver.setMenu(new GameOver(level, diff, prev, scoreCounter.getScore()));
cancel();
}));
@@ -125,7 +125,7 @@ public class SongPlayer extends HBox {
public void sendNote(Note note) {
Lane lane = lanes[note.lane];
- Block block = new Block(lane.target.getColor(), 50, 50, 15);
+ Block block = new Block(lane.target.getColor(), note);
block.setCache(true);
block.setCacheHint(CacheHint.SPEED);
block.xProperty().bind(lane.pane.widthProperty().subtract(block.widthProperty()).divide(2));
@@ -136,7 +136,7 @@ public class SongPlayer extends HBox {
TranslateTransition anim = new TranslateTransition(Duration.seconds(FALL_TIME + 0.105));
anim.setInterpolator(Interpolator.LINEAR);
- anim.byYProperty().bind(super.heightProperty().add(block.getHeight()).add(75));
+ anim.byYProperty().bind(lane.pane.heightProperty().add(block.getHeight()).add(75));
anim.setNode(block);
anim.play();
anim.setOnFinished(_ -> {
@@ -157,7 +157,7 @@ public class SongPlayer extends HBox {
*/
private void bindTarget(Target target) {
bindBlock(target.rect);
-// target.rect.strokeWidthProperty().bind(super.widthProperty().divide(120));
+ target.rect.strokeWidthProperty().bind(super.heightProperty().multiply(4/1080.0));
}
private void bindBlock(Rectangle block) {
diff --git a/src/main/java/net/sowgro/npehero/gameplay/Target.java b/src/main/java/net/sowgro/npehero/gameplay/Target.java
index 45907d3..9f2b4ea 100755
--- a/src/main/java/net/sowgro/npehero/gameplay/Target.java
+++ b/src/main/java/net/sowgro/npehero/gameplay/Target.java
@@ -9,37 +9,26 @@ import javafx.scene.text.Text;
public class Target extends StackPane
{
- private Color col;
- private Color fill;
- private Text label;
+ private final Color col;
+ private final Color fill;
public Rectangle rect = new Rectangle();
- public Target(Color c, double a, double b, int r, String key)
+
+ public Target(Color c, String key)
{
- label = new Text(key);
+ Text label = new Text(key);
label.getStyleClass().add("t3");
label.scaleXProperty().bind(super.widthProperty().divide(50));
label.scaleYProperty().bind(label.scaleXProperty());
- super.getChildren().addAll(rect,label);
+ super.getChildren().addAll(rect, label);
col = c;
fill = new Color(c.darker().getRed(), c.darker().getGreen(), c.darker().getBlue(), 0.45);
rect.setFill(fill);
- rect.setWidth(a);
- rect.setHeight(b);
- rect.setArcHeight(r);
- rect.setArcWidth(r);
rect.setStroke(col);
rect.setStrokeWidth(4);
}
- public void setColor(Color c) {
- col = c;
- fill = new Color(c.darker().getRed(), c.darker().getGreen(), c.darker().getBlue(), 0.45);
- rect.setFill(fill);
- rect.setStroke(c);
- }
-
public Color getFillColor() {
return fill;
}
diff --git a/src/main/java/net/sowgro/npehero/gui/LeaderboardView.java b/src/main/java/net/sowgro/npehero/gui/LeaderboardView.java
index 9176d76..c22773e 100755
--- a/src/main/java/net/sowgro/npehero/gui/LeaderboardView.java
+++ b/src/main/java/net/sowgro/npehero/gui/LeaderboardView.java
@@ -16,7 +16,7 @@ import net.sowgro.npehero.main.*;
public class LeaderboardView extends Page
{
- private HBox content = new HBox();
+ private final HBox content = new HBox();
public LeaderboardView(Difficulty diff, Page prev)
{
@@ -46,12 +46,12 @@ public class LeaderboardView extends Page
scores.prefWidthProperty().bind(content.prefWidthProperty().multiply(0.30));
scores.prefHeightProperty().bind(content.prefHeightProperty().multiply(0.75));
- scoreCol.setSortType(SortType.DESCENDING);
+ scoreCol.setSortType(SortType.ASCENDING);
scores.getSortOrder().add(scoreCol);
Button exit = new Button();
exit.setText("Back");
- exit.setOnAction(e -> {
+ exit.setOnAction(_ -> {
Sound.playSfx(Sound.BACKWARD);
Driver.setMenu(prev);
});
diff --git a/src/main/java/net/sowgro/npehero/main/Control.java b/src/main/java/net/sowgro/npehero/main/Control.java
index 69bf669..bb9710a 100644
--- a/src/main/java/net/sowgro/npehero/main/Control.java
+++ b/src/main/java/net/sowgro/npehero/main/Control.java
@@ -25,12 +25,13 @@ public enum Control {
PLAY_PAUSE ("Play / Pause", KeyCode.P),
CLEAR_SELECTION ("Clear Selection", KeyCode.ESCAPE),
SELECT_ALL ("Select All", KeyCode.S),
+ SELECT_MULTIPLE ("Select Multiple (Hold)", KeyCode.CONTROL),
LEGACY_PRINT ("Print Time", KeyCode.Q),
LEGACY_STOP ("Stop Edit", KeyCode.ESCAPE);
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("Editor", List.of(DELETE_NOTE, NOTE_UP, NOTE_DOWN, SCROLL_LOCK, PLAY_PAUSE, CLEAR_SELECTION, SELECT_ALL, SELECT_MULTIPLE)),
entry("Legacy Editor", List.of(LEGACY_PRINT, LEGACY_STOP))
);
diff --git a/src/main/resources/net/sowgro/npehero/style.css b/src/main/resources/net/sowgro/npehero/style.css
index 8fecd98..e4d34f0 100755
--- a/src/main/resources/net/sowgro/npehero/style.css
+++ b/src/main/resources/net/sowgro/npehero/style.css
@@ -249,7 +249,7 @@ Slider:focused .thumb{
-fx-text-fill: #a8a8a8;
}
-CheckBox {
+.box CheckBox {
-fx-text-fill: white;
}