@@ -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