Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions source/funkin/data/BaseRegistry.hx
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ abstract class BaseRegistry<T:(IRegistryEntry<J> & Constructible<EntryConstructo
* @param id The ID of the entry.
* @return `true` if the entry has an attached script, `false` otherwise.
*/
public function isScriptedEntry(id:String):Bool
public function isScriptedEntry(id:String, ?params:Null<P>):Bool
{
return scriptedEntryIds.exists(id);
}
Expand All @@ -167,7 +167,7 @@ abstract class BaseRegistry<T:(IRegistryEntry<J> & Constructible<EntryConstructo
* @param id The ID of the entry.
* @return The class name, or `null` if it does not exist.
*/
public function getScriptedEntryClassName(id:String):Null<String>
public function getScriptedEntryClassName(id:String, ?params:Null<P>):Null<String>
{
return scriptedEntryIds.get(id);
}
Expand Down
23 changes: 23 additions & 0 deletions source/funkin/data/song/SongRegistry.hx
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,29 @@ using funkin.data.song.migrator.SongDataMigrator;
return parseEntryMetadataRaw(contents);
}

public override function isScriptedEntry(id:String, ?params:Null<SongEntryParams>)
{
var variation:String = params?.variation ?? Constants.DEFAULT_VARIATION;
if (variation != Constants.DEFAULT_VARIATION)
{
return scriptedSongVariations.exists('${id}:${variation}');
}
return super.isScriptedEntry(id, params);
}

public override function getScriptedEntryClassName(id:String, ?params:Null<SongEntryParams>):Null<String>
{
var variation:String = params?.variation ?? Constants.DEFAULT_VARIATION;
if (variation != Constants.DEFAULT_VARIATION)
{
final variationSongId:ScriptedSong = cast scriptedSongVariations.get('${id}:${variation}');
@:privateAccess
var path:String = variationSongId._asc._c.name;
return path;
}
return super.getScriptedEntryClassName(id, params);
}

/**
* We override `fetchEntry` to handle song variations!
*/
Expand Down
8 changes: 4 additions & 4 deletions source/funkin/play/song/Song.hx
Original file line number Diff line number Diff line change
Expand Up @@ -193,15 +193,15 @@ class Song implements IPlayStateScriptedClass implements IRegistryEntry<SongMeta
* @param validScore Whether the song is elegible for highscores.
* @return The constructed song object.
*/
public static function buildRaw(songId:String, metadata:Array<SongMetadata>, variations:Array<String>, charts:Map<String, SongChartData>,
includeScript:Bool = true, validScore:Bool = false):Song
public static function buildRaw(songId:String, metadata:Array<SongMetadata>, variation:String, charts:Map<String, SongChartData>, includeScript:Bool = true,
validScore:Bool = false):Song
{
@:privateAccess
var result:Null<Song> = null;

if (includeScript && SongRegistry.instance.isScriptedEntry(songId))
if (includeScript && SongRegistry.instance.isScriptedEntry(songId, {variation: variation}))
{
var songClassName:Null<String> = SongRegistry.instance.getScriptedEntryClassName(songId);
var songClassName:Null<String> = SongRegistry.instance.getScriptedEntryClassName(songId, {variation: variation});
@:privateAccess
if (songClassName != null) result = SongRegistry.instance.createScriptedEntry(songClassName);
}
Expand Down
2 changes: 1 addition & 1 deletion source/funkin/ui/debug/charting/ChartEditorState.hx
Original file line number Diff line number Diff line change
Expand Up @@ -6202,7 +6202,7 @@ class ChartEditorState extends UIState // UIState derives from MusicBeatState
var targetSong:Song;
try
{
targetSong = Song.buildRaw(currentSongId, songMetadata.values(), availableVariations, songChartData, playtestSongScripts, false);
targetSong = Song.buildRaw(currentSongId, songMetadata.values(), selectedVariation, songChartData, playtestSongScripts, false);
}
catch (e)
{
Expand Down
2 changes: 1 addition & 1 deletion source/funkin/util/file/FNFCUtil.hx
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ class FNFCUtil
}

// Combine into a Song object that can be played in PlayState.
var song = Song.buildRaw(songId, songMetadatas.values(), variationList, songChartDatas, false, false);
var song = Song.buildRaw(songId, songMetadatas.values(), Constants.DEFAULT_VARIATION, songChartDatas, false, false);

return song;
}
Expand Down