Skip to content

Commit 978022d

Browse files
committed
Fix VSliceParser crash
1 parent 970d294 commit 978022d

5 files changed

Lines changed: 9 additions & 5 deletions

File tree

source/funkin/backend/chart/Chart.hx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ class Chart {
9898
data.setFieldDefault("needsVoices", true);
9999
data.setFieldDefault("difficulties", []);
100100
data.setFieldDefault("variants", []);
101+
data.setFieldDefault("metas", []);
101102

102103
return data;
103104
}

source/funkin/backend/chart/VSliceParser.hx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ class VSliceParser {
183183
result.stepsPerBeat = firstTimeChange.d.getDefault(Flags.DEFAULT_STEPS_PER_BEAT);
184184
result.displayName = songName;
185185
result.difficulties = data.playData.difficulties.copy();
186-
result.variants = data.playData.songVariations.copy();
186+
if (data.playData.songVariations != null) result.variants = data.playData.songVariations.copy();
187187

188188
if (result.customValues == null) result.customValues = {};
189189
result.customValues.artist = data.artist;

source/funkin/editors/charter/CharterSelection.hx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class CharterSelectionScreen extends EditorTreeMenuScreen {
4141

4242
for (d in s.difficulties) if (d != '') screen.add(makeChartOption(d, isVariant ? s.variant : null, s.name));
4343
screen.add(new Separator());
44-
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)));
44+
for (v in s.variants) if (s.metas.get(v) != null) screen.add(makeVariationOption(s.metas.get(v)));
4545

4646
#if sys
4747
screen.insert(0, new NewOption(getID('newDifficulty'), getID('newDifficultyDesc'), () -> {
@@ -90,7 +90,7 @@ class CharterSelectionScreen extends EditorTreeMenuScreen {
9090
return;
9191
}
9292

93-
var songFolder:String = '${Paths.getAssetsRoot()}/songs/${creation.meta.name}';
93+
var songFolder:String = '${Paths.getAssetsRoot()}/songs/${variant != null && curSong != null ? curSong.name : creation.meta.name}';
9494

9595
#if sys
9696
// Make Directories
@@ -114,6 +114,7 @@ class CharterSelectionScreen extends EditorTreeMenuScreen {
114114
if (variant != null && curSong != null) {
115115
if (curSong.variants == null) curSong.variants = [];
116116
if (!curSong.variants.contains(variant)) curSong.variants.push(variant);
117+
117118
curSong.metas.set(variant, creation.meta);
118119

119120
parent.tree.last().add(makeVariationOption(creation.meta));

source/funkin/editors/charter/SongCreationScreen.hx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ class SongCreationScreen extends UISubstateWindow {
245245
var pages = isImporting ? importPages : pages;
246246
if (curPage == pages.length-1) {
247247
saveSongInfo();
248-
close();
248+
if (subState == null) close();
249249
} else {
250250
curPage++;
251251
refreshPages();
@@ -415,6 +415,7 @@ class SongCreationScreen extends UISubstateWindow {
415415
#end
416416
});
417417
} catch (e:haxe.Exception) {
418+
trace(e.stack, e.message);
418419
openSubState(new UIWarningSubstate("Importing Song/Charts: Error!", e.details(), [
419420
{label: "Ok", color: 0xFFFF0000, onClick: function(t) {}}
420421
]));
@@ -464,6 +465,7 @@ class SongCreationScreen extends UISubstateWindow {
464465
playerVocals: files.get('Voices-${playData.characters.playerVocals != null ? playData.characters.playerVocals[0] : playData.characters.player}.${Flags.SOUND_EXT}'),
465466
oppVocals: files.get('Voices-${playData.characters.opponentVocals != null ? playData.characters.opponentVocals[0] : playData.characters.opponent}.${Flags.SOUND_EXT}'),
466467
}, (songFolder:String) -> {
468+
trace(songFolder);
467469
#if sys
468470
for (diff in diffCharts) CoolUtil.safeSaveFile('$songFolder/${getChartSavePath(meta, diff.diffName)}', Json.stringify(diff.chart, Flags.JSON_PRETTY_PRINT));
469471
if (events != null) CoolUtil.safeSaveFile('$songFolder/events${meta.variant != null && meta.variant != "" ? "-" + meta.variant : ""}.json', Json.stringify({events: events}, Flags.JSON_PRETTY_PRINT));

source/funkin/editors/charter/VariationCreationScreen.hx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class VariationCreationScreen extends SongCreationScreen {
2020
cast(songNameTextBox.members[songNameTextBox.members.length - 1], UIText).text = translateMeta("variation");
2121

2222
cast(importIdTextBox.members[importIdTextBox.members.length - 1], UIText).applyMarkup(
23-
translate("variation"),
23+
translateMeta("variation"),
2424
[new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFAD1212), "$")]
2525
);
2626

0 commit comments

Comments
 (0)