new chart editor, sm file support, bpm changes, and scroll speed changes.
This commit is contained in:
@ -15,13 +15,83 @@ class SMHeader
|
||||
public var BACKGROUND = "";
|
||||
public var CDTITLE = "";
|
||||
public var OFFSET = "";
|
||||
public var BPMS = "";
|
||||
public var BPMS = ""; // time=bpm
|
||||
|
||||
public var changeEvents:Array<Song.Event>;
|
||||
|
||||
public function new(headerData:Array<String>)
|
||||
{
|
||||
_header = headerData;
|
||||
|
||||
for (i in headerData)
|
||||
{
|
||||
readHeaderLine(i);
|
||||
}
|
||||
|
||||
trace(BPMS);
|
||||
|
||||
MUSIC = StringTools.replace(MUSIC," ", "_");
|
||||
|
||||
changeEvents = [];
|
||||
|
||||
getBPM(0,true);
|
||||
}
|
||||
|
||||
public function getBeatFromBPMIndex(index):Float
|
||||
{
|
||||
var bpmSplit = BPMS.split(',');
|
||||
var beat = 0;
|
||||
for(ii in 0...bpmSplit.length)
|
||||
{
|
||||
if (ii == index)
|
||||
return Std.parseFloat(StringTools.replace(bpmSplit[ii].split('=')[0],",",""));
|
||||
}
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
public function getBPM(beat:Float, printAllBpms:Bool = false)
|
||||
{
|
||||
var bpmSplit = BPMS.split(',');
|
||||
if (printAllBpms)
|
||||
{
|
||||
TimingStruct.clearTimings();
|
||||
var currentIndex = 0;
|
||||
for(i in bpmSplit)
|
||||
{
|
||||
var bpm:Float = Std.parseFloat(i.split('=')[1]);
|
||||
var beat:Float = Std.parseFloat(StringTools.replace(i.split('=')[0],",",""));
|
||||
|
||||
var endBeat:Float = Math.POSITIVE_INFINITY;
|
||||
|
||||
TimingStruct.addTiming(beat,bpm,endBeat, -Std.parseFloat(OFFSET));
|
||||
|
||||
if (changeEvents.length != 0)
|
||||
{
|
||||
var data = TimingStruct.AllTimings[currentIndex - 1];
|
||||
data.endBeat = beat;
|
||||
data.length = (data.endBeat - data.startBeat) / (data.bpm / 60);
|
||||
TimingStruct.AllTimings[currentIndex].startTime = data.startTime + data.length;
|
||||
}
|
||||
|
||||
changeEvents.push(new Song.Event(HelperFunctions.truncateFloat(beat,0) + "SM",beat,bpm,"BPM Change"));
|
||||
|
||||
if (bpmSplit.length == 1)
|
||||
break;
|
||||
currentIndex++;
|
||||
}
|
||||
|
||||
trace(changeEvents.length + " - BPM CHANGES");
|
||||
return 0.0;
|
||||
}
|
||||
var returningBPM = Std.parseFloat(bpmSplit[0].split('=')[1]);
|
||||
for(i in bpmSplit)
|
||||
{
|
||||
var bpm:Float = Std.parseFloat(i.split('=')[1]);
|
||||
var beatt:Float = Std.parseFloat(StringTools.replace(i.split('=')[0],",",""));
|
||||
if (beatt <= beat)
|
||||
returningBPM = bpm;
|
||||
}
|
||||
return returningBPM;
|
||||
}
|
||||
|
||||
function readHeaderLine(line:String)
|
||||
|
Reference in New Issue
Block a user