vslice bpm changes

This commit is contained in:
⍚~Nex
2025-04-01 14:28:20 +02:00
parent ddebe14c4c
commit 1c6ec00d23
2 changed files with 24 additions and 9 deletions
@@ -3,7 +3,7 @@ package funkin.backend.chart;
import funkin.backend.chart.ChartData.ChartMetaData;
// These new structures are kinda a mess to port, i love and hate them at the same time; why the hell are every difficulty in the same file??? - Nex
class BaseGameParser {
class VSliceParser {
public static function parseChart(data:Dynamic, metaData:Dynamic, events:Dynamic, result:ChartData) {
// base fnf chart parsing
var data:Array<SwagNote> = data;
@@ -38,16 +38,16 @@ class BaseGameParser {
});
}
var firstTimeChange = metadata.timeChanges[0];
result.meta.bpm = firstTimeChange.bpm;
var timeChanges = metadata.timeChanges;
result.meta.bpm = timeChanges[0].bpm;
result.meta.needsVoices = true;
for (note in data)
{
var daNoteType:Null<Int> = null;
if (note.k != null)
if (note.k != null) // TODO: check if kind is alt maybe - Nex
daNoteType = Chart.addNoteType(result, note.k);
var daNoteData:Int = Std.int(note.d % 8);
var isMustHit:Bool = Math.floor(daNoteData / 4) == 0;
@@ -59,6 +59,21 @@ class BaseGameParser {
});
}
var curBPM = result.meta.bpm;
for (i in 1...timeChanges.length) // starting from 1 on purpose - Nex
{
var curChange = timeChanges[i];
if (curBPM != curChange.bpm)
{
curBPM = curChange.bpm;
result.events.push({
time: curChange.t,
name: "BPM Change",
params: [curBPM]
});
}
}
for (event in events)
{
switch (event.e)
@@ -3,7 +3,7 @@ package funkin.editors.charter;
import flixel.group.FlxGroup;
import flixel.text.FlxText.FlxTextFormat;
import flixel.text.FlxText.FlxTextFormatMarkerPair;
import funkin.backend.chart.BaseGameParser;
import funkin.backend.chart.VSliceParser;
import funkin.backend.chart.ChartData;
import funkin.backend.utils.ZipUtil;
import haxe.Json;
@@ -415,10 +415,10 @@ class SongCreationScreen extends UISubstateWindow {
displayName: vslicemeta.songName,
icon: Flags.DEFAULT_HEALTH_ICON,
color: "#FFFFFF",
parsedColor: 0xFFFFFF,
//parsedColor: 0xFFFFFF,
opponentModeAllowed: true,
coopAllowed: true,
difficulties: difficulties,
difficulties: difficulties
};
if (onSave != null) onSave({
@@ -445,7 +445,7 @@ class SongCreationScreen extends UISubstateWindow {
codenameChart: true,
fromMods: Paths.assetsTree.existsSpecific(chartPath, "TEXT", MODS)
};
BaseGameParser.parseChart(vsliceChartData, vslicemeta, vslicechart.events, base);
VSliceParser.parseChart(vsliceChartData, vslicemeta, vslicechart.events, base);
CoolUtil.safeSaveFile('$songFolder/charts/$diff.json', Json.stringify(base, Flags.JSON_PRETTY_PRINT));
}
#end