Skip to content

Commit d3bd40b

Browse files
committed
Seperate global events for variations
1 parent 7d7db50 commit d3bd40b

File tree

4 files changed

+19
-19
lines changed

4 files changed

+19
-19
lines changed

source/funkin/backend/chart/Chart.hx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,9 @@ class Chart {
7171
return LEGACY;
7272
}
7373

74-
public static function loadEventsJson(songName:String) {
75-
var path = Paths.file('songs/${songName}/events.json');
74+
public static function loadEventsJson(songName:String, ?variant:String) {
75+
var variantSuffix = variant != null && variant != "" ? '-$variant' : "";
76+
var path = Paths.file('songs/${songName}/events$variantSuffix.json');
7677
var data:Array<ChartEvent> = null;
7778
if (Assets.exists(path)) {
7879
try {
@@ -225,7 +226,7 @@ class Chart {
225226
* events.json LOADING
226227
*/
227228
#if REGION
228-
var extraEvents:Array<ChartEvent> = loadEventsJson(songName);
229+
var extraEvents:Array<ChartEvent> = loadEventsJson(songName, variant);
229230
if (extraEvents != null) base.events = base.events.concat(extraEvents);
230231
#end
231232

@@ -267,8 +268,8 @@ class Chart {
267268
var filteredChart = filterChartForSaving(chart, saveSettings.saveMetaInChart, saveSettings.saveLocalEvents, saveSettings.saveGlobalEvents && saveSettings.seperateGlobalEvents != true);
268269

269270
#if sys
270-
var songPath = saveSettings.songFolder == null ? 'assets/songs/${chart.meta.name}' : saveSettings.songFolder;
271-
var metaPath = 'meta.json', prettyPrint = saveSettings.prettyPrint == true ? Flags.JSON_PRETTY_PRINT : null, temp:String;
271+
var songPath = saveSettings.songFolder == null ? 'assets/songs/${chart.meta.name}' : saveSettings.songFolder, variantSuffix = variant != null && variant != "" ? '-$variant' : "";
272+
var metaPath = 'meta$variantSuffix.json', prettyPrint = saveSettings.prettyPrint == true ? Flags.JSON_PRETTY_PRINT : null, temp:String;
272273
if ((temp = Paths.assetsTree.getPath('$songPath/$metaPath')) != null) {
273274
songPath = temp.substr(0, temp.length - metaPath.length - 1);
274275
metaPath = temp;
@@ -286,7 +287,7 @@ class Chart {
286287
CoolUtil.safeSaveFile(metaPath, Json.stringify(filterMetaForSaving(chart.meta), null, prettyPrint));
287288

288289
if (saveSettings.seperateGlobalEvents == true) {
289-
var eventsPath = '$songPath/events.json', events = filterEventsForSaving(chart.events, false, true);
290+
var eventsPath = '$songPath/events$variantSuffix.json', events = filterEventsForSaving(chart.events, false, true);
290291

291292
if (events.length != 0) CoolUtil.safeSaveFile(eventsPath, Json.stringify({events: events}, null, prettyPrint));
292293
}

source/funkin/backend/chart/VSliceParser.hx

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ class VSliceParser {
2626
stage: Flags.DEFAULT_STAGE,
2727
codenameChart: true
2828
};
29-
parseChart(Reflect.field(chartData.notes, diff), metaData, chartData.events, base);
29+
parseChart(Reflect.field(chartData.notes, diff), metaData, chartData.events, base, resultMeta);
3030
resultCharts.push({diffName: diff, chart: base});
3131
}
3232
}
3333

34-
public static function parseChart(data:Dynamic, metaData:Dynamic, events:Dynamic, result:ChartData) {
34+
public static function parseChart(data:Dynamic, metaData:Dynamic, events:Dynamic, result:ChartData, resultMeta:ChartMetaData) {
3535
// vslice chart parsing
3636
var data:Array<SwagNote> = data;
3737
var metadata:SwagMetadata = metaData;
@@ -45,14 +45,14 @@ class VSliceParser {
4545
type: 0,
4646
position: (p2isGF = metadata.playData.characters.opponent.startsWith("gf")) ? "girlfriend" : "dad",
4747
notes: [],
48-
vocalsSuffix: "-Opponent"
48+
vocalsSuffix: '-${metadata.playData.characters.opponent}${resultMeta.vocalsSuffix}'
4949
});
5050
result.strumLines.push({
5151
characters: [metadata.playData.characters.player],
5252
type: 1,
5353
position: "boyfriend",
5454
notes: [],
55-
vocalsSuffix: "-Player"
55+
vocalsSuffix: '-${metadata.playData.characters.player}${resultMeta.vocalsSuffix}'
5656
});
5757
var gfName = metadata.playData.characters.girlfriend;
5858
if (!p2isGF && gfName != "none") {
@@ -108,7 +108,7 @@ class VSliceParser {
108108
{
109109
case "FocusCamera":
110110
var isPosOnly = false;
111-
var arr:Array<Dynamic> = [switch(values.char) {
111+
var arr:Array<Dynamic> = [switch(values is Int ? values : values.char) {
112112
// more cases here in the future if they add em? (i hope not) - Nex
113113
case 0: 1;
114114
case 1: 0;
@@ -182,10 +182,6 @@ class VSliceParser {
182182
result.beatsPerMeasure = firstTimeChange.n.getDefault(Flags.DEFAULT_BEATS_PER_MEASURE);
183183
result.stepsPerBeat = firstTimeChange.d.getDefault(Flags.DEFAULT_STEPS_PER_BEAT);
184184
result.displayName = songName;
185-
result.icon = Flags.DEFAULT_HEALTH_ICON;
186-
result.color = 0xFFFFFF;
187-
result.opponentModeAllowed = true;
188-
result.coopAllowed = true;
189185
result.difficulties = data.playData.difficulties.concat(data.playData.songVariations.getDefault([]));
190186

191187
if (result.customValues == null) result.customValues = {};

source/funkin/editors/charter/CharterSelection.hx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ class CharterSelectionScreen extends EditorTreeMenuScreen {
9191
}
9292

9393
var songFolder:String = '${Paths.getAssetsRoot()}/songs/${creation.meta.name}';
94-
creation.meta = Chart.filterMetaForSaving(creation.meta);
9594

9695
#if sys
9796
// Make Directories
@@ -101,7 +100,7 @@ class CharterSelectionScreen extends EditorTreeMenuScreen {
101100

102101
// Save Files
103102
var instSuffix = creation.meta.instSuffix != null ? creation.meta.instSuffix : '', vocalsSuffix = creation.meta.vocalsSuffix != null ? creation.meta.vocalsSuffix : '';
104-
CoolUtil.safeSaveFile('$songFolder/meta${variant != null ? "-" + variant : ""}.json', Json.stringify(creation.meta, null, Flags.JSON_PRETTY_PRINT));
103+
CoolUtil.safeSaveFile('$songFolder/meta${variant != null ? "-" + variant : ""}.json', Json.stringify(Chart.filterMetaForSaving(creation.meta), null, Flags.JSON_PRETTY_PRINT));
105104
if (creation.instBytes != null) sys.io.File.saveBytes('$songFolder/song/Inst$instSuffix.${Flags.SOUND_EXT}', creation.instBytes);
106105
if (creation.voicesBytes != null) sys.io.File.saveBytes('$songFolder/song/Voices$vocalsSuffix.${Flags.SOUND_EXT}', creation.voicesBytes);
107106

source/funkin/editors/charter/SongCreationScreen.hx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ class SongCreationScreen extends UISubstateWindow {
391391
strumLines: [],
392392
noteTypes: [],
393393
events: [],
394-
meta: {name: null},
394+
meta: {name: songId},
395395
scrollSpeed: Flags.DEFAULT_SCROLL_SPEED,
396396
stage: Flags.DEFAULT_STAGE,
397397
codenameChart: true
@@ -451,10 +451,13 @@ class SongCreationScreen extends UISubstateWindow {
451451
var playData = vslicemeta.playData;
452452

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

458+
if (diffCharts.length != 0) events = diffCharts[0].chart.events;
459+
for (diff in diffCharts) diff.chart.events = [];
460+
458461
if (onSave != null) onSave({
459462
meta: meta,
460463
instBytes: files.get('Inst.${Flags.SOUND_EXT}'),
@@ -464,6 +467,7 @@ class SongCreationScreen extends UISubstateWindow {
464467
}, (songFolder:String) -> {
465468
#if sys
466469
for (diff in diffCharts) CoolUtil.safeSaveFile('$songFolder/${getChartSavePath(meta, diff.diffName)}', Json.stringify(diff.chart, Flags.JSON_PRETTY_PRINT));
470+
if (events != null) CoolUtil.safeSaveFile('$songFolder/events${meta.variant != null && meta.variant != "" ? "-" + meta.variant : ""}.json', Json.stringify({events: events}, Flags.JSON_PRETTY_PRINT));
467471
#end
468472
});
469473
}

0 commit comments

Comments
 (0)