diff --git a/source/funkin/backend/chart/VSliceParser.hx b/source/funkin/backend/chart/VSliceParser.hx index 02c7f83c..4fdb2fff 100644 --- a/source/funkin/backend/chart/VSliceParser.hx +++ b/source/funkin/backend/chart/VSliceParser.hx @@ -45,14 +45,14 @@ class VSliceParser { type: 0, position: (p2isGF = metadata.playData.characters.opponent.startsWith("gf")) ? "girlfriend" : "dad", notes: [], - vocalsSuffix: '-${metadata.playData.characters.opponent}${resultMeta.vocalsSuffix}' + vocalsSuffix: '-${metadata.playData.characters.opponent}${resultMeta.vocalsSuffix != null ? resultMeta.vocalsSuffix : ""}' }); result.strumLines.push({ characters: [metadata.playData.characters.player], type: 1, position: "boyfriend", notes: [], - vocalsSuffix: '-${metadata.playData.characters.player}${resultMeta.vocalsSuffix}' + vocalsSuffix: '-${metadata.playData.characters.player}${resultMeta.vocalsSuffix != null ? resultMeta.vocalsSuffix : ""}' }); var gfName = metadata.playData.characters.girlfriend; if (!p2isGF && gfName != "none") { diff --git a/source/funkin/editors/charter/CharterSelection.hx b/source/funkin/editors/charter/CharterSelection.hx index 84a21a72..6d52ec68 100644 --- a/source/funkin/editors/charter/CharterSelection.hx +++ b/source/funkin/editors/charter/CharterSelection.hx @@ -83,7 +83,7 @@ class CharterSelectionScreen extends EditorTreeMenuScreen { #if sys public function saveSong(creation:SongCreationData, ?callback:String -> Void) { var variant = creation.meta.variant != null && creation.meta.variant != "" ? creation.meta.variant : null; - if (songList.contains(creation.meta.name.toLowerCase()) || (variant != null && curSong != null && curSong.variants.contains(variant))) { + if (variant != null && curSong != null ? curSong.metas.exists(variant) : songList.contains(creation.meta.name.toLowerCase())) { parent.openSubState(new UIWarningSubstate(TU.translate("chartCreation.warnings.song-exists-title"), TU.translate("chartCreation.warnings.song-exists-body"), [ {label: TU.translate("editor.ok"), color: 0xFFFF0000, onClick: (t) -> {}}, ])); @@ -112,11 +112,14 @@ class CharterSelectionScreen extends EditorTreeMenuScreen { // Add to List if (variant != null && curSong != null) { - if (curSong.variants == null) curSong.variants.push(variant); - curSong.variants.push(variant); + if (curSong.variants == null) curSong.variants = []; + if (!curSong.variants.contains(variant)) curSong.variants.push(variant); curSong.metas.set(variant, creation.meta); parent.tree.last().add(makeVariationOption(creation.meta)); + + var metaPath = '$songFolder/meta${curSong.variant != null && curSong.variant == "" ? "-" + curSong.variant : ""}.json'; + CoolUtil.safeSaveFile(metaPath, Chart.makeMetaSaveable(curSong)); } else { freeplayList.songs.insert(0, creation.meta); @@ -146,12 +149,8 @@ class CharterSelectionScreen extends EditorTreeMenuScreen { screen.insert(idx, makeChartOption(name, curSong.variant != null && curSong.variant != "" ? curSong.variant : null, curSong.name)); // Add to Meta - var meta = Json.parse(sys.io.File.getContent('$songFolder/meta.json')); - if (meta.difficulties == null) meta.difficulties = []; - if (!meta.difficulties.contains(name)) { - meta.difficulties.push(name); - CoolUtil.safeSaveFile('$songFolder/meta.json', Chart.makeMetaSaveable(meta)); - } + var metaPath = '$songFolder/meta${curSong.variant != null && curSong.variant == "" ? "-" + curSong.variant : ""}.json'; + CoolUtil.safeSaveFile(metaPath, Chart.makeMetaSaveable(curSong)); } #end } \ No newline at end of file diff --git a/source/funkin/editors/charter/SongCreationScreen.hx b/source/funkin/editors/charter/SongCreationScreen.hx index 21bb3cca..6790b514 100644 --- a/source/funkin/editors/charter/SongCreationScreen.hx +++ b/source/funkin/editors/charter/SongCreationScreen.hx @@ -450,10 +450,9 @@ class SongCreationScreen extends UISubstateWindow { var vslicechart:NewSwagSong = Json.parse(files.get('${songId}-chart.json')); var playData = vslicemeta.playData; - var meta:ChartMetaData = {name: songId}; + var meta:ChartMetaData = formatMeta({name: songId}); var diffCharts:Array = [], events:Array = null; VSliceParser.parse(vslicemeta, vslicechart, meta, diffCharts, songId); - formatMeta(meta); if (diffCharts.length != 0) events = diffCharts[0].chart.events; for (diff in diffCharts) diff.chart.events = [];