Chart events can now be saved into a separate JSON file

This commit is contained in:
swordcube
2024-02-26 21:50:53 -06:00
parent 9ca7f01866
commit 80cd593113
2 changed files with 41 additions and 0 deletions
+28
View File
@@ -18,6 +18,24 @@ class Chart {
*/
public inline static var defaultColor:FlxColor = 0xFF9271FD;
public static function loadEventsJson(songName:String, difficulty:String = "normal") {
var eventsPath = Paths.file('songs/${songName.toLowerCase()}/events.json');
var eventsDiffPath = Paths.file('songs/${songName.toLowerCase()}/events-${difficulty.toLowerCase()}.json');
var data:Array<ChartEvent> = null;
for(path in [eventsDiffPath, eventsPath]) {
if (Assets.exists(path)) {
try {
data = Json.parse(Assets.getText(path)).events;
} catch(e) {
Logs.trace('Failed to load song event data for ${songName} ($path): ${Std.string(e)}', ERROR);
}
if (data != null) break;
}
}
return data;
}
public static function loadChartMeta(songName:String, difficulty:String = "normal", fromMods:Bool = true) {
var metaPath = Paths.file('songs/${songName.toLowerCase()}/meta.json');
var metaDiffPath = Paths.file('songs/${songName.toLowerCase()}/meta-${difficulty.toLowerCase()}.json');
@@ -145,6 +163,16 @@ class Chart {
}
base.meta = loadedMeta;
}
/**
* events.json + events-diff.json LOADING
*/
#if REGION
var extraEvents:Array<ChartEvent> = loadEventsJson(songName, difficulty);
if (extraEvents != null)
base.events = base.events.concat(extraEvents);
#end
return base;
}
+13
View File
@@ -137,6 +137,11 @@ class Charter extends UIState {
keybind: [CONTROL, ALT ,SHIFT, S],
onSelect: _file_meta_saveas,
},
{
label: "Save Events",
keybind: [CONTROL, TAB, S],
onSelect: _file_events_save,
},
null,
{
label: "Exit",
@@ -1131,6 +1136,14 @@ class Charter extends UIState {
}));
}
function _file_events_save(_) {
#if sys
openSubState(new SaveSubstate(Json.stringify({events: PlayState.SONG.events}), {
defaultSaveFile: 'events-${__diff.toLowerCase()}.json'
}));
#end
}
#if sys
function saveTo(path:String) {
buildChart();