109 lines
2.4 KiB
Haxe
109 lines
2.4 KiB
Haxe
package;
|
|
|
|
import Section.SwagSection;
|
|
import haxe.Json;
|
|
import haxe.format.JsonParser;
|
|
import lime.utils.Assets;
|
|
|
|
#if sys
|
|
import sys.io.File;
|
|
import sys.FileSystem;
|
|
#end
|
|
|
|
using StringTools;
|
|
|
|
typedef SwagSong =
|
|
{
|
|
var song:String;
|
|
var notes:Array<SwagSection>;
|
|
var bpm:Float;
|
|
var needsVoices:Bool;
|
|
var speed:Float;
|
|
|
|
var player1:String;
|
|
var player2:String;
|
|
var player3:String;
|
|
var stage:String;
|
|
|
|
var arrowSkin:String;
|
|
var splashSkin:String;
|
|
var validScore:Bool;
|
|
}
|
|
|
|
class Song
|
|
{
|
|
public var song:String;
|
|
public var notes:Array<SwagSection>;
|
|
public var bpm:Float;
|
|
public var needsVoices:Bool = true;
|
|
public var arrowSkin:String;
|
|
public var splashSkin:String;
|
|
public var speed:Float = 1;
|
|
public var stage:String;
|
|
|
|
public var player1:String = 'bf';
|
|
public var player2:String = 'dad';
|
|
public var player3:String = 'gf';
|
|
|
|
public function new(song, notes, bpm)
|
|
{
|
|
this.song = song;
|
|
this.notes = notes;
|
|
this.bpm = bpm;
|
|
}
|
|
|
|
public static function loadFromJson(jsonInput:String, ?folder:String):SwagSong
|
|
{
|
|
var rawJson = null;
|
|
|
|
var formattedFolder:String = Paths.formatToSongPath(folder);
|
|
var formattedSong:String = Paths.formatToSongPath(jsonInput);
|
|
#if MODS_ALLOWED
|
|
var moddyFile:String = Paths.modsJson(formattedFolder + '/' + formattedSong);
|
|
if(FileSystem.exists(moddyFile)) {
|
|
rawJson = File.getContent(moddyFile).trim();
|
|
}
|
|
#end
|
|
|
|
if(rawJson == null) {
|
|
#if sys
|
|
rawJson = File.getContent(Paths.json(formattedFolder + '/' + formattedSong)).trim();
|
|
#else
|
|
rawJson = Assets.getText(Paths.json(formattedFolder + '/' + formattedSong)).trim();
|
|
#end
|
|
}
|
|
|
|
while (!rawJson.endsWith("}"))
|
|
{
|
|
rawJson = rawJson.substr(0, rawJson.length - 1);
|
|
// LOL GOING THROUGH THE BULLSHIT TO CLEAN IDK WHATS STRANGE
|
|
}
|
|
|
|
// FIX THE CASTING ON WINDOWS/NATIVE
|
|
// Windows???
|
|
// trace(songData);
|
|
|
|
// trace('LOADED FROM JSON: ' + songData.notes);
|
|
/*
|
|
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;
|
|
daBpm = songData.bpm; */
|
|
|
|
var songJson:SwagSong = parseJSONshit(rawJson);
|
|
if(jsonInput != 'events') StageData.loadDirectory(songJson);
|
|
return songJson;
|
|
}
|
|
|
|
public static function parseJSONshit(rawJson:String):SwagSong
|
|
{
|
|
var swagShit:SwagSong = cast Json.parse(rawJson).song;
|
|
swagShit.validScore = true;
|
|
return swagShit;
|
|
}
|
|
}
|