Skip to content

Commit 9c1de9b

Browse files
committed
actually change the algorithm a bit
1 parent 26cc1db commit 9c1de9b

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

source/funkin/menus/FreeplayState.hx

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,13 @@ class FreeplaySonglist {
438438

439439
public function new() {}
440440

441+
public static function isSubSongDirectory(subs:Array<String>):Bool {
442+
for (i in EXCLUDE_SUBFOLDERS) {
443+
if (subs.contains(i)) return false;
444+
}
445+
return true;
446+
}
447+
441448
public function getSongsFromSource(source:funkin.backend.assets.AssetSource, useTxt:Bool = true, ?startDir:String = 'songs/', ?flatten:Bool = true) {
442449
var songsFound:Array<String> = null;
443450
if (useTxt) {
@@ -455,14 +462,14 @@ class FreeplaySonglist {
455462
var songDirs = Paths.getFolderDirectories(startDir, false, source);
456463
if (!flatten) {
457464
for (i in songDirs) {
458-
var subs = Paths.getFolderDirectories('$startDir$i', false, source).filter(a -> !EXCLUDE_SUBFOLDERS.contains(a));
459-
songsFound.push((subs.length > 0) ? '$i/' : i);
465+
var subs = Paths.getFolderDirectories('$startDir$i', false, source);
466+
songsFound.push(isSubSongDirectory(subs) ? '$i/' : i);
460467
}
461468
} else {
462469
function poop(a:Array<Dynamic>, startDir:String) {
463470
for (i in a) {
464-
var subs = Paths.getFolderDirectories('$startDir$i', false, source).filter(a -> !EXCLUDE_SUBFOLDERS.contains(a));
465-
if (subs.length > 0) poop(subs, '$startDir$i/');
471+
var subs = Paths.getFolderDirectories('$startDir$i', false, source);
472+
if (isSubSongDirectory(subs)) poop(subs, '$startDir$i/');
466473
else songsFound.push(startDir.substr('songs/'.length) + i);
467474
}
468475
}

0 commit comments

Comments
 (0)