Skip to content

Commit c5c3abc

Browse files
committed
heya
1 parent 400ef63 commit c5c3abc

File tree

5 files changed

+31
-8
lines changed

5 files changed

+31
-8
lines changed

source/funkin/data/BaseRegistry.hx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ abstract class BaseRegistry<T:(IRegistryEntry<J> & Constructible<EntryConstructo
157157
* @param id The ID of the entry.
158158
* @return `true` if the entry has an attached script, `false` otherwise.
159159
*/
160-
public function isScriptedEntry(id:String):Bool
160+
public function isScriptedEntry(id:String, ?params:Null<P>):Bool
161161
{
162162
return scriptedEntryIds.exists(id);
163163
}
@@ -167,7 +167,7 @@ abstract class BaseRegistry<T:(IRegistryEntry<J> & Constructible<EntryConstructo
167167
* @param id The ID of the entry.
168168
* @return The class name, or `null` if it does not exist.
169169
*/
170-
public function getScriptedEntryClassName(id:String):Null<String>
170+
public function getScriptedEntryClassName(id:String, ?params:Null<P>):Null<String>
171171
{
172172
return scriptedEntryIds.get(id);
173173
}

source/funkin/data/song/SongRegistry.hx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,29 @@ using funkin.data.song.migrator.SongDataMigrator;
129129
return parseEntryMetadataRaw(contents);
130130
}
131131

132+
public override function isScriptedEntry(id:String, ?params:Null<SongEntryParams>)
133+
{
134+
var variation:String = params?.variation ?? Constants.DEFAULT_VARIATION;
135+
if (variation != Constants.DEFAULT_VARIATION)
136+
{
137+
return scriptedSongVariations.exists('${id}:${variation}');
138+
}
139+
return super.isScriptedEntry(id, params);
140+
}
141+
142+
public override function getScriptedEntryClassName(id:String, ?params:Null<SongEntryParams>):Null<String>
143+
{
144+
var variation:String = params?.variation ?? Constants.DEFAULT_VARIATION;
145+
if (variation != Constants.DEFAULT_VARIATION)
146+
{
147+
final variationSongId:ScriptedSong = cast scriptedSongVariations.get('${id}:${variation}');
148+
@:privateAccess
149+
var path:String = variationSongId._asc._c.name;
150+
return path;
151+
}
152+
return super.getScriptedEntryClassName(id, params);
153+
}
154+
132155
/**
133156
* We override `fetchEntry` to handle song variations!
134157
*/

source/funkin/play/song/Song.hx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -193,15 +193,15 @@ class Song implements IPlayStateScriptedClass implements IRegistryEntry<SongMeta
193193
* @param validScore Whether the song is elegible for highscores.
194194
* @return The constructed song object.
195195
*/
196-
public static function buildRaw(songId:String, metadata:Array<SongMetadata>, variations:Array<String>, charts:Map<String, SongChartData>,
197-
includeScript:Bool = true, validScore:Bool = false):Song
196+
public static function buildRaw(songId:String, metadata:Array<SongMetadata>, variation:String, charts:Map<String, SongChartData>, includeScript:Bool = true,
197+
validScore:Bool = false):Song
198198
{
199199
@:privateAccess
200200
var result:Null<Song> = null;
201201

202-
if (includeScript && SongRegistry.instance.isScriptedEntry(songId))
202+
if (includeScript && SongRegistry.instance.isScriptedEntry(songId, {variation: variation}))
203203
{
204-
var songClassName:Null<String> = SongRegistry.instance.getScriptedEntryClassName(songId);
204+
var songClassName:Null<String> = SongRegistry.instance.getScriptedEntryClassName(songId, {variation: variation});
205205
@:privateAccess
206206
if (songClassName != null) result = SongRegistry.instance.createScriptedEntry(songClassName);
207207
}

source/funkin/ui/debug/charting/ChartEditorState.hx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6202,7 +6202,7 @@ class ChartEditorState extends UIState // UIState derives from MusicBeatState
62026202
var targetSong:Song;
62036203
try
62046204
{
6205-
targetSong = Song.buildRaw(currentSongId, songMetadata.values(), availableVariations, songChartData, playtestSongScripts, false);
6205+
targetSong = Song.buildRaw(currentSongId, songMetadata.values(), selectedVariation, songChartData, playtestSongScripts, false);
62066206
}
62076207
catch (e)
62086208
{

source/funkin/util/file/FNFCUtil.hx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ class FNFCUtil
195195
}
196196

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

200200
return song;
201201
}

0 commit comments

Comments
 (0)