diff --git a/source/funkin/backend/chart/Chart.hx b/source/funkin/backend/chart/Chart.hx index f7cd38ba..02507aed 100644 --- a/source/funkin/backend/chart/Chart.hx +++ b/source/funkin/backend/chart/Chart.hx @@ -98,6 +98,7 @@ class Chart { data.setFieldDefault("needsVoices", true); data.setFieldDefault("difficulties", []); data.setFieldDefault("variants", []); + data.setFieldDefault("metas", []); return data; } diff --git a/source/funkin/backend/chart/VSliceParser.hx b/source/funkin/backend/chart/VSliceParser.hx index f2287208..5adf9840 100644 --- a/source/funkin/backend/chart/VSliceParser.hx +++ b/source/funkin/backend/chart/VSliceParser.hx @@ -183,7 +183,7 @@ class VSliceParser { result.stepsPerBeat = firstTimeChange.d.getDefault(Flags.DEFAULT_STEPS_PER_BEAT); result.displayName = songName; result.difficulties = data.playData.difficulties.copy(); - result.variants = data.playData.songVariations.copy(); + if (data.playData.songVariations != null) result.variants = data.playData.songVariations.copy(); if (result.customValues == null) result.customValues = {}; result.customValues.artist = data.artist; diff --git a/source/funkin/editors/charter/CharterSelection.hx b/source/funkin/editors/charter/CharterSelection.hx index f5ffeb7a..cedadad0 100644 --- a/source/funkin/editors/charter/CharterSelection.hx +++ b/source/funkin/editors/charter/CharterSelection.hx @@ -41,7 +41,7 @@ class CharterSelectionScreen extends EditorTreeMenuScreen { for (d in s.difficulties) if (d != '') screen.add(makeChartOption(d, isVariant ? s.variant : null, s.name)); screen.add(new Separator()); - if (s.variants != null && s.metas != null) for (v in s.variants) if (s.metas.get(v) != null) screen.add(makeVariationOption(s.metas.get(v))); + for (v in s.variants) if (s.metas.get(v) != null) screen.add(makeVariationOption(s.metas.get(v))); #if sys screen.insert(0, new NewOption(getID('newDifficulty'), getID('newDifficultyDesc'), () -> { @@ -90,7 +90,7 @@ class CharterSelectionScreen extends EditorTreeMenuScreen { return; } - var songFolder:String = '${Paths.getAssetsRoot()}/songs/${creation.meta.name}'; + var songFolder:String = '${Paths.getAssetsRoot()}/songs/${variant != null && curSong != null ? curSong.name : creation.meta.name}'; #if sys // Make Directories @@ -114,6 +114,7 @@ class CharterSelectionScreen extends EditorTreeMenuScreen { if (variant != null && curSong != null) { 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)); diff --git a/source/funkin/editors/charter/SongCreationScreen.hx b/source/funkin/editors/charter/SongCreationScreen.hx index 95d8a5a5..ffaf49b4 100644 --- a/source/funkin/editors/charter/SongCreationScreen.hx +++ b/source/funkin/editors/charter/SongCreationScreen.hx @@ -245,7 +245,7 @@ class SongCreationScreen extends UISubstateWindow { var pages = isImporting ? importPages : pages; if (curPage == pages.length-1) { saveSongInfo(); - close(); + if (subState == null) close(); } else { curPage++; refreshPages(); @@ -415,6 +415,7 @@ class SongCreationScreen extends UISubstateWindow { #end }); } catch (e:haxe.Exception) { + trace(e.stack, e.message); openSubState(new UIWarningSubstate("Importing Song/Charts: Error!", e.details(), [ {label: "Ok", color: 0xFFFF0000, onClick: function(t) {}} ])); @@ -464,6 +465,7 @@ class SongCreationScreen extends UISubstateWindow { playerVocals: files.get('Voices-${playData.characters.playerVocals != null ? playData.characters.playerVocals[0] : playData.characters.player}.${Flags.SOUND_EXT}'), oppVocals: files.get('Voices-${playData.characters.opponentVocals != null ? playData.characters.opponentVocals[0] : playData.characters.opponent}.${Flags.SOUND_EXT}'), }, (songFolder:String) -> { + trace(songFolder); #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)); diff --git a/source/funkin/editors/charter/VariationCreationScreen.hx b/source/funkin/editors/charter/VariationCreationScreen.hx index 30238cf9..7f6310c8 100644 --- a/source/funkin/editors/charter/VariationCreationScreen.hx +++ b/source/funkin/editors/charter/VariationCreationScreen.hx @@ -20,7 +20,7 @@ class VariationCreationScreen extends SongCreationScreen { cast(songNameTextBox.members[songNameTextBox.members.length - 1], UIText).text = translateMeta("variation"); cast(importIdTextBox.members[importIdTextBox.members.length - 1], UIText).applyMarkup( - translate("variation"), + translateMeta("variation"), [new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFAD1212), "$")] );