diff --git a/LLSIG/src/main/java/LLSIG/LLSIG.java b/LLSIG/src/main/java/LLSIG/LLSIG.java index 163ee28..6e73d11 100644 --- a/LLSIG/src/main/java/LLSIG/LLSIG.java +++ b/LLSIG/src/main/java/LLSIG/LLSIG.java @@ -168,13 +168,13 @@ public class LLSIG implements KeyListener{ } else { int lane = Integer.parseInt(split[0]); NoteType noteType = NoteType.valueOf(split[1]); - int offset = (int)Math.round(Integer.parseInt(split[2])*beatDelay+LLSIG.offset); + int offset = (int)Math.round(Double.parseDouble(split[2])*beatDelay+LLSIG.offset); int offset2 = -1; while (lanes.size()<lane) { lanes.add(new Lane(new ArrayList<Note>())); } if (noteType==NoteType.HOLD) { - offset2 = (int)Math.round(Integer.parseInt(split[2])*beatDelay+LLSIG.offset); + offset2 = (int)Math.round(Double.parseDouble(split[2])*beatDelay+LLSIG.offset); lanes.get(lane-1).addNote(new Note(noteType,offset,offset2)); } else { lanes.get(lane-1).addNote(new Note(noteType,offset)); @@ -188,6 +188,13 @@ public class LLSIG implements KeyListener{ private void SaveSongData(String song,List<Lane> lanes) { List<String> data = new ArrayList<String>(); + for (int i=0;i<timings.size();i++) { + BeatTiming bt = timings.get(i); + data.add(new StringBuilder().append("B").append(",") + .append(bt.offset).append(",") + .append(bt.bpm) + .toString()); + } for (int lane=0;lane<lanes.size();lane++) { Lane l = lanes.get(lane); int noteCount=0; @@ -198,8 +205,8 @@ public class LLSIG implements KeyListener{ Note n = l.getNote(noteCount++); data.add(new StringBuilder().append(lane+1).append(",") .append(n.getNoteType().name()).append(",") - .append(n.getStartFrame()).append(",") - .append(n.getEndFrame()) + .append(n.getBeatSnap()).append(",") + .append(n.getBeatSnapEnd()) .toString()); } } @@ -259,7 +266,11 @@ public class LLSIG implements KeyListener{ case KeyEvent.VK_Q:{if (LLSIG.game.PLAYING) {musicPlayer.pause();SaveSongData(song,lanes);}}break; } if (LLSIG.game.PLAYING&&lane!=-1&&EDITMODE) { - LLSIG.game.lanes.get(lane).addNote(new Note(NoteType.NORMAL,musicPlayer.getPlayPosition())); + Note n = new Note(NoteType.NORMAL,musicPlayer.getPlayPosition()); + n.active=false; + System.out.println(Math.round(((musicPlayer.getPlayPosition()-offset)/beatDelay)*4)/(double)4); + n.setBeatSnap(Math.round(((musicPlayer.getPlayPosition()-offset)/beatDelay)*4)/(double)4); + LLSIG.game.lanes.get(lane).addNote(n); } if (lane!=-1) { if (PLAYING&&!EDITMODE) { diff --git a/LLSIG/src/main/java/LLSIG/Note.java b/LLSIG/src/main/java/LLSIG/Note.java index f5db2cb..ab4f2e5 100644 --- a/LLSIG/src/main/java/LLSIG/Note.java +++ b/LLSIG/src/main/java/LLSIG/Note.java @@ -4,6 +4,7 @@ public class Note { NoteType type; int start,end; boolean active=true; //Set to false when the note has been scored. + double beatSnapStart,beatSnapEnd = -1; public Note(NoteType type,int start,int end) { this.type=type; this.start=start; @@ -30,6 +31,18 @@ public class Note { public void setEndFrame(int end) { this.end = end; } + public void setBeatSnap(double value) { + this.beatSnapStart=value; + } + public double getBeatSnap() { + return beatSnapStart; + } + public void setBeatSnapEnd(double value) { + this.beatSnapEnd=value; + } + public double getBeatSnapEnd() { + return beatSnapEnd; + } @Override public String toString() { return "Note [type=" + type + ", start=" + start + ", end=" + end + "]";