diff --git a/source/funkin/backend/chart/Chart.hx b/source/funkin/backend/chart/Chart.hx index a02bb121..ec5d181b 100644 --- a/source/funkin/backend/chart/Chart.hx +++ b/source/funkin/backend/chart/Chart.hx @@ -71,8 +71,9 @@ class Chart { return LEGACY; } - public static function loadEventsJson(songName:String) { - var path = Paths.file('songs/${songName}/events.json'); + public static function loadEventsJson(songName:String, ?variant:String) { + var variantSuffix = variant != null && variant != "" ? '-$variant' : ""; + var path = Paths.file('songs/${songName}/events$variantSuffix.json'); var data:Array = null; if (Assets.exists(path)) { try { @@ -225,7 +226,7 @@ class Chart { * events.json LOADING */ #if REGION - var extraEvents:Array = loadEventsJson(songName); + var extraEvents:Array = loadEventsJson(songName, variant); if (extraEvents != null) base.events = base.events.concat(extraEvents); #end @@ -267,8 +268,8 @@ class Chart { var filteredChart = filterChartForSaving(chart, saveSettings.saveMetaInChart, saveSettings.saveLocalEvents, saveSettings.saveGlobalEvents && saveSettings.seperateGlobalEvents != true); #if sys - var songPath = saveSettings.songFolder == null ? 'assets/songs/${chart.meta.name}' : saveSettings.songFolder; - var metaPath = 'meta.json', prettyPrint = saveSettings.prettyPrint == true ? Flags.JSON_PRETTY_PRINT : null, temp:String; + var songPath = saveSettings.songFolder == null ? 'assets/songs/${chart.meta.name}' : saveSettings.songFolder, variantSuffix = variant != null && variant != "" ? '-$variant' : ""; + var metaPath = 'meta$variantSuffix.json', prettyPrint = saveSettings.prettyPrint == true ? Flags.JSON_PRETTY_PRINT : null, temp:String; if ((temp = Paths.assetsTree.getPath('$songPath/$metaPath')) != null) { songPath = temp.substr(0, temp.length - metaPath.length - 1); metaPath = temp; @@ -286,7 +287,7 @@ class Chart { CoolUtil.safeSaveFile(metaPath, Json.stringify(filterMetaForSaving(chart.meta), null, prettyPrint)); if (saveSettings.seperateGlobalEvents == true) { - var eventsPath = '$songPath/events.json', events = filterEventsForSaving(chart.events, false, true); + var eventsPath = '$songPath/events$variantSuffix.json', events = filterEventsForSaving(chart.events, false, true); if (events.length != 0) CoolUtil.safeSaveFile(eventsPath, Json.stringify({events: events}, null, prettyPrint)); } diff --git a/source/funkin/backend/chart/VSliceParser.hx b/source/funkin/backend/chart/VSliceParser.hx index 05b859ec..02c7f83c 100644 --- a/source/funkin/backend/chart/VSliceParser.hx +++ b/source/funkin/backend/chart/VSliceParser.hx @@ -26,12 +26,12 @@ class VSliceParser { stage: Flags.DEFAULT_STAGE, codenameChart: true }; - parseChart(Reflect.field(chartData.notes, diff), metaData, chartData.events, base); + parseChart(Reflect.field(chartData.notes, diff), metaData, chartData.events, base, resultMeta); resultCharts.push({diffName: diff, chart: base}); } } - public static function parseChart(data:Dynamic, metaData:Dynamic, events:Dynamic, result:ChartData) { + public static function parseChart(data:Dynamic, metaData:Dynamic, events:Dynamic, result:ChartData, resultMeta:ChartMetaData) { // vslice chart parsing var data:Array = data; var metadata:SwagMetadata = metaData; @@ -45,14 +45,14 @@ class VSliceParser { type: 0, position: (p2isGF = metadata.playData.characters.opponent.startsWith("gf")) ? "girlfriend" : "dad", notes: [], - vocalsSuffix: "-Opponent" + vocalsSuffix: '-${metadata.playData.characters.opponent}${resultMeta.vocalsSuffix}' }); result.strumLines.push({ characters: [metadata.playData.characters.player], type: 1, position: "boyfriend", notes: [], - vocalsSuffix: "-Player" + vocalsSuffix: '-${metadata.playData.characters.player}${resultMeta.vocalsSuffix}' }); var gfName = metadata.playData.characters.girlfriend; if (!p2isGF && gfName != "none") { @@ -108,7 +108,7 @@ class VSliceParser { { case "FocusCamera": var isPosOnly = false; - var arr:Array = [switch(values.char) { + var arr:Array = [switch(values is Int ? values : values.char) { // more cases here in the future if they add em? (i hope not) - Nex case 0: 1; case 1: 0; @@ -182,10 +182,6 @@ class VSliceParser { result.beatsPerMeasure = firstTimeChange.n.getDefault(Flags.DEFAULT_BEATS_PER_MEASURE); result.stepsPerBeat = firstTimeChange.d.getDefault(Flags.DEFAULT_STEPS_PER_BEAT); result.displayName = songName; - result.icon = Flags.DEFAULT_HEALTH_ICON; - result.color = 0xFFFFFF; - result.opponentModeAllowed = true; - result.coopAllowed = true; result.difficulties = data.playData.difficulties.concat(data.playData.songVariations.getDefault([])); if (result.customValues == null) result.customValues = {}; diff --git a/source/funkin/editors/charter/CharterSelection.hx b/source/funkin/editors/charter/CharterSelection.hx index eca9c8f9..84a21a72 100644 --- a/source/funkin/editors/charter/CharterSelection.hx +++ b/source/funkin/editors/charter/CharterSelection.hx @@ -91,7 +91,6 @@ class CharterSelectionScreen extends EditorTreeMenuScreen { } var songFolder:String = '${Paths.getAssetsRoot()}/songs/${creation.meta.name}'; - creation.meta = Chart.filterMetaForSaving(creation.meta); #if sys // Make Directories @@ -101,7 +100,7 @@ class CharterSelectionScreen extends EditorTreeMenuScreen { // Save Files var instSuffix = creation.meta.instSuffix != null ? creation.meta.instSuffix : '', vocalsSuffix = creation.meta.vocalsSuffix != null ? creation.meta.vocalsSuffix : ''; - CoolUtil.safeSaveFile('$songFolder/meta${variant != null ? "-" + variant : ""}.json', Json.stringify(creation.meta, null, Flags.JSON_PRETTY_PRINT)); + CoolUtil.safeSaveFile('$songFolder/meta${variant != null ? "-" + variant : ""}.json', Json.stringify(Chart.filterMetaForSaving(creation.meta), null, Flags.JSON_PRETTY_PRINT)); if (creation.instBytes != null) sys.io.File.saveBytes('$songFolder/song/Inst$instSuffix.${Flags.SOUND_EXT}', creation.instBytes); if (creation.voicesBytes != null) sys.io.File.saveBytes('$songFolder/song/Voices$vocalsSuffix.${Flags.SOUND_EXT}', creation.voicesBytes); diff --git a/source/funkin/editors/charter/SongCreationScreen.hx b/source/funkin/editors/charter/SongCreationScreen.hx index cc41ea92..21bb3cca 100644 --- a/source/funkin/editors/charter/SongCreationScreen.hx +++ b/source/funkin/editors/charter/SongCreationScreen.hx @@ -391,7 +391,7 @@ class SongCreationScreen extends UISubstateWindow { strumLines: [], noteTypes: [], events: [], - meta: {name: null}, + meta: {name: songId}, scrollSpeed: Flags.DEFAULT_SCROLL_SPEED, stage: Flags.DEFAULT_STAGE, codenameChart: true @@ -451,10 +451,13 @@ class SongCreationScreen extends UISubstateWindow { var playData = vslicemeta.playData; var meta:ChartMetaData = {name: songId}; - var diffCharts:Array = []; + 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 = []; + if (onSave != null) onSave({ meta: meta, instBytes: files.get('Inst.${Flags.SOUND_EXT}'), @@ -464,6 +467,7 @@ class SongCreationScreen extends UISubstateWindow { }, (songFolder:String) -> { #if sys for (diff in diffCharts) CoolUtil.safeSaveFile('$songFolder/${getChartSavePath(meta, diff.diffName)}', Json.stringify(diff.chart, Flags.JSON_PRETTY_PRINT)); + if (events != null) CoolUtil.safeSaveFile('$songFolder/events${meta.variant != null && meta.variant != "" ? "-" + meta.variant : ""}.json', Json.stringify({events: events}, Flags.JSON_PRETTY_PRINT)); #end }); }