1
0
Fork 0
mirror of https://github.com/ninjamuffin99/Funkin.git synced 2024-11-18 12:52:49 +00:00
Funkin/source/Song.hx

89 lines
1.9 KiB
Haxe
Raw Normal View History

2020-10-13 08:07:04 +00:00
package;
2020-10-24 09:19:13 +00:00
import Section.SwagSection;
2020-10-13 08:07:04 +00:00
import haxe.Json;
2020-10-24 09:19:13 +00:00
import haxe.format.JsonParser;
2020-10-13 08:07:04 +00:00
import lime.utils.Assets;
2020-10-14 05:02:36 +00:00
using StringTools;
2020-10-24 09:19:13 +00:00
typedef SwagSong =
{
var song:String;
var notes:Array<SwagSection>;
var bpm:Int;
var sections:Int;
var sectionLengths:Array<Dynamic>;
var needsVoices:Bool;
var speed:Float;
var player1:String;
var player2:String;
2020-12-04 17:32:35 +00:00
var validScore:Bool;
2020-10-24 09:19:13 +00:00
}
2020-10-13 08:07:04 +00:00
class Song
{
public var song:String;
2020-10-24 09:19:13 +00:00
public var notes:Array<SwagSection>;
2020-10-13 08:07:04 +00:00
public var bpm:Int;
public var sections:Int;
2020-10-14 01:44:07 +00:00
public var sectionLengths:Array<Dynamic> = [];
2020-10-14 08:18:19 +00:00
public var needsVoices:Bool = true;
2020-10-18 01:47:59 +00:00
public var speed:Float = 1;
2020-10-13 08:07:04 +00:00
2020-10-19 00:59:53 +00:00
public var player1:String = 'bf';
public var player2:String = 'dad';
2020-10-13 08:07:04 +00:00
public function new(song, notes, bpm, sections)
{
this.song = song;
this.notes = notes;
this.bpm = bpm;
this.sections = sections;
2020-10-14 01:44:07 +00:00
for (i in 0...notes.length)
{
this.sectionLengths.push(notes[i]);
}
2020-10-13 08:07:04 +00:00
}
2020-11-01 01:11:14 +00:00
public static function loadFromJson(jsonInput:String, ?folder:String):SwagSong
2020-10-13 08:07:04 +00:00
{
2020-11-01 01:11:14 +00:00
var rawJson = Assets.getText('assets/data/' + folder.toLowerCase() + '/' + jsonInput.toLowerCase() + '.json').trim();
2020-10-14 05:02:36 +00:00
while (!rawJson.endsWith("}"))
{
rawJson = rawJson.substr(0, rawJson.length - 1);
// LOL GOING THROUGH THE BULLSHIT TO CLEAN IDK WHATS STRANGE
}
2020-10-23 23:12:38 +00:00
// FIX THE CASTING ON WINDOWS/NATIVE
2020-10-24 09:19:13 +00:00
// Windows???
// trace(songData);
2020-10-13 08:07:04 +00:00
2020-10-19 02:18:06 +00:00
// trace('LOADED FROM JSON: ' + songData.notes);
2020-10-18 01:47:59 +00:00
/*
2020-10-23 23:12:38 +00:00
for (i in 0...songData.notes.length)
{
trace('LOADED FROM JSON: ' + songData.notes[i].sectionNotes);
// songData.notes[i].sectionNotes = songData.notes[i].sectionNotes
}
daNotes = songData.notes;
daSong = songData.song;
daSections = songData.sections;
daBpm = songData.bpm;
daSectionLengths = songData.sectionLengths; */
2020-10-13 08:07:04 +00:00
2020-12-25 09:09:14 +00:00
return parseJSONshit(rawJson);
}
public static function parseJSONshit(rawJson:String):SwagSong
{
var swagShit:SwagSong = cast Json.parse(rawJson).song;
swagShit.validScore = true;
2020-10-24 09:19:13 +00:00
return swagShit;
2020-10-13 08:07:04 +00:00
}
}