From b56768d9b5415b4987c6105eb3ec5cc53cfd4b76 Mon Sep 17 00:00:00 2001 From: EliteMasterEric Date: Mon, 18 Sep 2023 17:59:55 -0400 Subject: [PATCH] Fix an issue where the game would try and fail to load metadata for a newly created song in the Chart Editor. --- source/funkin/data/song/SongRegistry.hx | 23 ++++++++++++++++------- source/funkin/util/VersionUtil.hx | 3 ++- 2 files changed, 18 insertions(+), 8 deletions(-) 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;