Funkin/source/Song.hx

59 lines
1.2 KiB
Haxe
Raw Normal View History

2020-10-13 04:07:04 -04:00
package;
import haxe.Json;
import lime.utils.Assets;
2020-10-14 01:02:36 -04:00
using StringTools;
2020-10-13 04:07:04 -04:00
class Song
{
public var song:String;
2020-10-13 21:44:07 -04:00
public var notes:Array<Section>;
2020-10-13 04:07:04 -04:00
public var bpm:Int;
public var sections:Int;
2020-10-13 21:44:07 -04:00
public var sectionLengths:Array<Dynamic> = [];
2020-10-14 04:18:19 -04:00
public var needsVoices:Bool = true;
2020-10-13 04:07:04 -04:00
public function new(song, notes, bpm, sections)
{
this.song = song;
this.notes = notes;
this.bpm = bpm;
this.sections = sections;
2020-10-13 21:44:07 -04:00
for (i in 0...notes.length)
{
this.sectionLengths.push(notes[i]);
}
2020-10-13 04:07:04 -04:00
}
public static function loadFromJson(jsonInput:String):Song
{
2020-10-13 21:44:07 -04:00
var daNotes:Array<Section> = [];
2020-10-13 04:07:04 -04:00
var daBpm:Int = 0;
var daSections:Int = 0;
var daSong:String = '';
2020-10-13 21:44:07 -04:00
var daSectionLengths:Array<Int> = [];
2020-10-13 04:07:04 -04:00
2020-10-14 01:02:36 -04:00
var rawJson = Assets.getText('assets/data/' + jsonInput + '/' + jsonInput + '.json').trim();
while (!rawJson.endsWith("}"))
{
rawJson = rawJson.substr(0, rawJson.length - 1);
// LOL GOING THROUGH THE BULLSHIT TO CLEAN IDK WHATS STRANGE
}
trace(rawJson);
var songData = Json.parse(rawJson);
2020-10-13 04:07:04 -04:00
daNotes = songData.notes;
daSong = songData.song;
daSections = songData.sections;
daBpm = songData.bpm;
2020-10-13 21:44:07 -04:00
daSectionLengths = songData.sectionLengths;
2020-10-13 04:07:04 -04:00
return new Song(daSong, daNotes, daBpm, daSections);
}
}