diff --git a/source/funkin/data/song/SongRegistry.hx b/source/funkin/data/song/SongRegistry.hx index e21c74a1f..5f2961c19 100644 --- a/source/funkin/data/song/SongRegistry.hx +++ b/source/funkin/data/song/SongRegistry.hx @@ -203,30 +203,39 @@ class SongRegistry extends BaseRegistry return ScriptedSong.listScriptClasses(); } - function loadEntryMetadataFile(id:String, variation:String = ''):BaseRegistry.JsonFile + function loadEntryMetadataFile(id:String, variation:String = ''):Null { var entryFilePath:String = Paths.json('$dataFilePath/$id/$id${variation == '' ? '' : '-$variation'}-metadata'); - var rawJson:String = openfl.Assets.getText(entryFilePath).trim(); + if (!openfl.Assets.exists(entryFilePath)) return null; + var rawJson:Null = openfl.Assets.getText(entryFilePath); + if (rawJson == null) return null; + rawJson = rawJson.trim(); return {fileName: entryFilePath, contents: rawJson}; } - function loadMusicDataFile(id:String, variation:String = ''):BaseRegistry.JsonFile + function loadMusicDataFile(id:String, variation:String = ''):Null { var entryFilePath:String = Paths.file('music/$id/$id${variation == '' ? '' : '-$variation'}-metadata.json'); - var rawJson:String = openfl.Assets.getText(entryFilePath).trim(); + if (!openfl.Assets.exists(entryFilePath)) return null; + var rawJson:String = openfl.Assets.getText(entryFilePath); + if (rawJson == null) return null; + rawJson = rawJson.trim(); return {fileName: entryFilePath, contents: rawJson}; } - function loadEntryChartFile(id:String, variation:String = ''):BaseRegistry.JsonFile + function loadEntryChartFile(id:String, variation:String = ''):Null { var entryFilePath:String = Paths.json('$dataFilePath/$id/$id${variation == '' ? '' : '-$variation'}-chart'); - var rawJson:String = openfl.Assets.getText(entryFilePath).trim(); + if (!openfl.Assets.exists(entryFilePath)) return null; + var rawJson:String = openfl.Assets.getText(entryFilePath); + if (rawJson == null) return null; + rawJson = rawJson.trim(); return {fileName: entryFilePath, contents: rawJson}; } public function fetchEntryMetadataVersion(id:String, variation:String = ''):Null { - var entryStr:String = loadEntryMetadataFile(id, variation).contents; + var entryStr:Null = loadEntryMetadataFile(id, variation)?.contents; var entryVersion:thx.semver.Version = VersionUtil.getVersionFromJSON(entryStr); return entryVersion; } diff --git a/source/funkin/util/VersionUtil.hx b/source/funkin/util/VersionUtil.hx index 368bb12de..1dc00473a 100644 --- a/source/funkin/util/VersionUtil.hx +++ b/source/funkin/util/VersionUtil.hx @@ -51,8 +51,9 @@ class VersionUtil * @param input The JSON string to parse. * @return The semantic version, or null if it could not be parsed. */ - public static function getVersionFromJSON(input:String):Null + public static function getVersionFromJSON(input:Null):Null { + if (input == null) return null; var parsed = SerializerUtil.fromJSON(input); if (parsed == null) return null; if (parsed.version == null) return null;