package funkin.play.song; import funkin.data.song.SongData.SongChartData; import funkin.data.song.SongData.SongMetadata; import funkin.util.SerializerUtil; import funkin.util.FileUtil; import lime.utils.Bytes; import openfl.events.Event; import openfl.events.IOErrorEvent; import openfl.net.FileReference; /** * TODO: Refactor and remove this. */ class SongSerializer { /** * Access a SongChartData JSON file from a specific path, then load it. * @param path The file path to read from. */ public static function importSongChartDataSync(path:String):SongChartData { var fileData = FileUtil.readStringFromPath(path); if (fileData == null) return null; var songChartData:SongChartData = fileData.parseJSON(); return songChartData; } /** * Access a SongMetadata JSON file from a specific path, then load it. * @param path The file path to read from. */ public static function importSongMetadataSync(path:String):SongMetadata { var fileData = FileUtil.readStringFromPath(path); if (fileData == null) return null; var songMetadata:SongMetadata = fileData.parseJSON(); return songMetadata; } /** * Prompt the user to browse for a SongChartData JSON file path, then load it. * @param callback The function to call when the file is loaded. */ public static function importSongChartDataAsync(callback:SongChartData->Void):Void { FileUtil.browseFileReference(function(fileReference:FileReference) { var data = fileReference.data.toString(); if (data == null) return; var songChartData:SongChartData = data.parseJSON(); if (songChartData != null) callback(songChartData); }); } /** * Prompt the user to browse for a SongMetadata JSON file path, then load it. * @param callback The function to call when the file is loaded. */ public static function importSongMetadataAsync(callback:SongMetadata->Void):Void { FileUtil.browseFileReference(function(fileReference:FileReference) { var data = fileReference.data.toString(); if (data == null) return; var songMetadata:SongMetadata = data.parseJSON(); if (songMetadata != null) callback(songMetadata); }); } }