Skip to content

Commit 39237dd

Browse files
committed
Fix creating variation & VSliceParser
1 parent d3bd40b commit 39237dd

File tree

3 files changed

+11
-13
lines changed

3 files changed

+11
-13
lines changed

source/funkin/backend/chart/VSliceParser.hx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,14 @@ class VSliceParser {
4545
type: 0,
4646
position: (p2isGF = metadata.playData.characters.opponent.startsWith("gf")) ? "girlfriend" : "dad",
4747
notes: [],
48-
vocalsSuffix: '-${metadata.playData.characters.opponent}${resultMeta.vocalsSuffix}'
48+
vocalsSuffix: '-${metadata.playData.characters.opponent}${resultMeta.vocalsSuffix != null ? resultMeta.vocalsSuffix : ""}'
4949
});
5050
result.strumLines.push({
5151
characters: [metadata.playData.characters.player],
5252
type: 1,
5353
position: "boyfriend",
5454
notes: [],
55-
vocalsSuffix: '-${metadata.playData.characters.player}${resultMeta.vocalsSuffix}'
55+
vocalsSuffix: '-${metadata.playData.characters.player}${resultMeta.vocalsSuffix != null ? resultMeta.vocalsSuffix : ""}'
5656
});
5757
var gfName = metadata.playData.characters.girlfriend;
5858
if (!p2isGF && gfName != "none") {

source/funkin/editors/charter/CharterSelection.hx

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class CharterSelectionScreen extends EditorTreeMenuScreen {
8383
#if sys
8484
public function saveSong(creation:SongCreationData, ?callback:String -> Void) {
8585
var variant = creation.meta.variant != null && creation.meta.variant != "" ? creation.meta.variant : null;
86-
if (songList.contains(creation.meta.name.toLowerCase()) || (variant != null && curSong != null && curSong.variants.contains(variant))) {
86+
if (variant != null && curSong != null ? curSong.metas.exists(variant) : songList.contains(creation.meta.name.toLowerCase())) {
8787
parent.openSubState(new UIWarningSubstate(TU.translate("chartCreation.warnings.song-exists-title"), TU.translate("chartCreation.warnings.song-exists-body"), [
8888
{label: TU.translate("editor.ok"), color: 0xFFFF0000, onClick: (t) -> {}},
8989
]));
@@ -112,11 +112,14 @@ class CharterSelectionScreen extends EditorTreeMenuScreen {
112112

113113
// Add to List
114114
if (variant != null && curSong != null) {
115-
if (curSong.variants == null) curSong.variants.push(variant);
116-
curSong.variants.push(variant);
115+
if (curSong.variants == null) curSong.variants = [];
116+
if (!curSong.variants.contains(variant)) curSong.variants.push(variant);
117117
curSong.metas.set(variant, creation.meta);
118118

119119
parent.tree.last().add(makeVariationOption(creation.meta));
120+
121+
var metaPath = '$songFolder/meta${curSong.variant != null && curSong.variant == "" ? "-" + curSong.variant : ""}.json';
122+
CoolUtil.safeSaveFile(metaPath, Chart.makeMetaSaveable(curSong));
120123
}
121124
else {
122125
freeplayList.songs.insert(0, creation.meta);
@@ -146,12 +149,8 @@ class CharterSelectionScreen extends EditorTreeMenuScreen {
146149
screen.insert(idx, makeChartOption(name, curSong.variant != null && curSong.variant != "" ? curSong.variant : null, curSong.name));
147150

148151
// Add to Meta
149-
var meta = Json.parse(sys.io.File.getContent('$songFolder/meta.json'));
150-
if (meta.difficulties == null) meta.difficulties = [];
151-
if (!meta.difficulties.contains(name)) {
152-
meta.difficulties.push(name);
153-
CoolUtil.safeSaveFile('$songFolder/meta.json', Chart.makeMetaSaveable(meta));
154-
}
152+
var metaPath = '$songFolder/meta${curSong.variant != null && curSong.variant == "" ? "-" + curSong.variant : ""}.json';
153+
CoolUtil.safeSaveFile(metaPath, Chart.makeMetaSaveable(curSong));
155154
}
156155
#end
157156
}

source/funkin/editors/charter/SongCreationScreen.hx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -450,10 +450,9 @@ class SongCreationScreen extends UISubstateWindow {
450450
var vslicechart:NewSwagSong = Json.parse(files.get('${songId}-chart.json'));
451451
var playData = vslicemeta.playData;
452452

453-
var meta:ChartMetaData = {name: songId};
453+
var meta:ChartMetaData = formatMeta({name: songId});
454454
var diffCharts:Array<ChartDataWithInfo> = [], events:Array<ChartEvent> = null;
455455
VSliceParser.parse(vslicemeta, vslicechart, meta, diffCharts, songId);
456-
formatMeta(meta);
457456

458457
if (diffCharts.length != 0) events = diffCharts[0].chart.events;
459458
for (diff in diffCharts) diff.chart.events = [];

0 commit comments

Comments
 (0)