new chart editor, sm file support, bpm changes, and scroll speed changes.

This commit is contained in:
KadeDeveloper
2021-07-19 21:19:03 -07:00
parent c69e83d8e0
commit aa2119d034
25 changed files with 2046 additions and 355 deletions

View File

@ -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)