fix input drops (hopefully) + work on sm support

This commit is contained in:
Kade M
2021-06-23 01:51:37 -07:00
parent 95c35190c5
commit a1e2109f57
5 changed files with 139 additions and 4 deletions

59
source/smTools/SMFile.hx Normal file
View File

@ -0,0 +1,59 @@
package smTools;
import sys.io.File;
class SMFile
{
public static function loadFile(path):SMFile
{
return new SMFile(File.getContent(path).split('\n'));
}
private var _fileData:Array<String>;
public var _readTime:Float = 0;
public var header:SMHeader;
public var measures:Array<SMMeasure>;
public function new(data:Array<String>)
{
_fileData = data;
// Gather header data
var headerData = "";
var inc = 0;
while(!StringTools.contains(data[inc + 1],"//"))
{
headerData += data[inc] + "\n";
inc++;
// trace(data[inc]);
}
header = new SMHeader(headerData.split('\n'));
// check if this is a valid file, it should be a dance double file.
inc += 3; // skip three lines down
if (!StringTools.contains(data[inc],"dance-double:"))
return;
trace('this is dance double');
inc += 4; // skip 5 down to where da notes @
trace(data[inc]);
measures = [];
while(data[inc + 1] != ";")
{
var measure = "";
while(data[inc + 1] != ",")
{
inc++;
var line = data[inc];
measure += line + "\n";
}
measures.push(new SMMeasure(measure.split('\n')));
}
trace(measures.length + " Measures");
}
}

View File

@ -0,0 +1,37 @@
package smTools;
class SMHeader
{
private var _header:Array<String>;
public var TITLE = "";
public var SUBTITLE = "";
public var ARTIST = "";
public var GENRE = "";
public var CREDIT = "";
public var MUSIC = "";
public var BANNER = "";
public var BACKGROUND = "";
public var CDTITLE = "";
public var OFFSET = "";
public var BPMS = "";
public function new(headerData:Array<String>)
{
_header = headerData;
for (i in headerData)
readHeaderLine(i);
}
function readHeaderLine(line:String)
{
var propName = line.split('#')[1].split(':')[0];
var value = line.split(':')[1].split(';')[0];
var prop = Reflect.getProperty(this,propName);
if (prop != null)
{
Reflect.setProperty(this,propName,value);
}
}
}

View File

@ -0,0 +1,14 @@
package smTools;
class SMMeasure
{
public var notes:Array<SMNote>;
private var _measure:Array<String>;
public function new(measureData:Array<String>)
{
_measure = measureData;
notes = [];
}
}

8
source/smTools/SMNote.hx Normal file
View File

@ -0,0 +1,8 @@
package smTools;
class SMNote
{
public var time:Float;
public var data:Int;
public var length:Float;
}