Seperate global events for variations

This commit is contained in:
Ralty
2025-08-09 16:40:57 +07:00
parent 7d7db50c19
commit d3bd40baf3
4 changed files with 19 additions and 19 deletions
+7 -6
View File
@@ -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<ChartEvent> = null;
if (Assets.exists(path)) {
try {
@@ -225,7 +226,7 @@ class Chart {
* events.json LOADING
*/
#if REGION
var extraEvents:Array<ChartEvent> = loadEventsJson(songName);
var extraEvents:Array<ChartEvent> = 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));
}
+5 -9
View File
@@ -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<SwagNote> = 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<Dynamic> = [switch(values.char) {
var arr:Array<Dynamic> = [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 = {};
@@ -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);
@@ -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<ChartDataWithInfo> = [];
var diffCharts:Array<ChartDataWithInfo> = [], events:Array<ChartEvent> = 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
});
}