Add hold note generation when recording.
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
30ffb07e63
commit
2ad46ea580
@ -79,6 +79,8 @@ public class LLSIG implements KeyListener{
|
|||||||
public static double LAST_LATE = 0;
|
public static double LAST_LATE = 0;
|
||||||
public static double LAST_MISS = 0;
|
public static double LAST_MISS = 0;
|
||||||
public static int COMBO = 0;
|
public static int COMBO = 0;
|
||||||
|
|
||||||
|
public final static int NOTE_RECORD_BEAT_SNAP_MULTIPLE = 4; //How many beat divisions max we can snap to.
|
||||||
|
|
||||||
public final static long TIMEPERTICK = 16666667l;
|
public final static long TIMEPERTICK = 16666667l;
|
||||||
public static double DRAWTIME=0;
|
public static double DRAWTIME=0;
|
||||||
@ -337,9 +339,10 @@ public class LLSIG implements KeyListener{
|
|||||||
if (PLAYING&&EDITMODE) {
|
if (PLAYING&&EDITMODE) {
|
||||||
Note n = new Note(NoteType.NORMAL,musicPlayer.getPlayPosition());
|
Note n = new Note(NoteType.NORMAL,musicPlayer.getPlayPosition());
|
||||||
n.active=false;
|
n.active=false;
|
||||||
System.out.println(Math.round(((musicPlayer.getPlayPosition()-offset)/beatDelay)*4)/(double)4);
|
//System.out.println(Math.round(((musicPlayer.getPlayPosition()-offset)/beatDelay)*NOTE_RECORD_BEAT_SNAP_MULTIPLE)/(double)NOTE_RECORD_BEAT_SNAP_MULTIPLE);
|
||||||
n.setBeatSnap(Math.round(((musicPlayer.getPlayPosition()-offset)/beatDelay)*4)/(double)4);
|
n.setBeatSnap(Math.round(((musicPlayer.getPlayPosition()-offset)/beatDelay)*NOTE_RECORD_BEAT_SNAP_MULTIPLE)/(double)NOTE_RECORD_BEAT_SNAP_MULTIPLE);
|
||||||
LLSIG.game.lanes.get(lane).addNote(n);
|
LLSIG.game.lanes.get(lane).addNote(n);
|
||||||
|
LLSIG.game.lanes.get(lane).lastNoteAdded=n;
|
||||||
}
|
}
|
||||||
if (PLAYING&&!EDITMODE&&!EDITOR) {
|
if (PLAYING&&!EDITMODE&&!EDITOR) {
|
||||||
Lane l = lanes.get(lane);
|
Lane l = lanes.get(lane);
|
||||||
@ -391,14 +394,27 @@ public class LLSIG implements KeyListener{
|
|||||||
case KeyEvent.VK_SEMICOLON:{lane=8;}break;
|
case KeyEvent.VK_SEMICOLON:{lane=8;}break;
|
||||||
}
|
}
|
||||||
if (lane!=-1) {
|
if (lane!=-1) {
|
||||||
keyState[lane]=false;
|
if (PLAYING&&EDITMODE) {
|
||||||
Lane l = lanes.get(lane);
|
double noteBeat = Math.round(((musicPlayer.getPlayPosition()-offset)/beatDelay)*NOTE_RECORD_BEAT_SNAP_MULTIPLE)/(double)NOTE_RECORD_BEAT_SNAP_MULTIPLE;
|
||||||
if (l.noteExists()) {
|
Note lastNote = LLSIG.game.lanes.get(lane).lastNoteAdded;
|
||||||
Note n = l.getNote();
|
if (lastNote!=null) {
|
||||||
double diff2 = n.getEndFrame()-LLSIG.game.musicPlayer.getPlayPosition();
|
if (noteBeat-lastNote.getBeatSnap()>=1) {
|
||||||
if (n.getNoteType()==NoteType.HOLD&&n.active2&&!n.active&&diff2<=BAD_TIMING_WINDOW) {
|
lastNote.setBeatSnapEnd(noteBeat);
|
||||||
judgeNote(l, diff2);
|
lastNote.active2=false;
|
||||||
n.active2=false;
|
LLSIG.game.lanes.get(lane).lastNoteAdded=null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (PLAYING&&!EDITMODE&&!EDITOR) {
|
||||||
|
keyState[lane]=false;
|
||||||
|
Lane l = lanes.get(lane);
|
||||||
|
if (l.noteExists()) {
|
||||||
|
Note n = l.getNote();
|
||||||
|
double diff2 = n.getEndFrame()-LLSIG.game.musicPlayer.getPlayPosition();
|
||||||
|
if (n.getNoteType()==NoteType.HOLD&&n.active2&&!n.active&&diff2<=BAD_TIMING_WINDOW) {
|
||||||
|
judgeNote(l, diff2);
|
||||||
|
n.active2=false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ public class Lane{
|
|||||||
int currentNoteIndex = 0;
|
int currentNoteIndex = 0;
|
||||||
TimingRating lastRating = TimingRating.MISS;
|
TimingRating lastRating = TimingRating.MISS;
|
||||||
double lastNote = -1;
|
double lastNote = -1;
|
||||||
|
Note lastNoteAdded;
|
||||||
public Lane(List<Note> noteChart) {
|
public Lane(List<Note> noteChart) {
|
||||||
super();
|
super();
|
||||||
this.noteChart = noteChart;
|
this.noteChart = noteChart;
|
||||||
@ -34,7 +35,7 @@ public class Lane{
|
|||||||
for (int i=0;i<noteChart.size();i++)
|
for (int i=0;i<noteChart.size();i++)
|
||||||
{
|
{
|
||||||
Note n = getNote(i);
|
Note n = getNote(i);
|
||||||
if (n.active) {return n;}
|
if (n.active||n.active2) {return n;}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user