diff --git a/source/funkin/backend/system/MainState.hx b/source/funkin/backend/system/MainState.hx index f2284350..94b1a2d3 100644 --- a/source/funkin/backend/system/MainState.hx +++ b/source/funkin/backend/system/MainState.hx @@ -32,12 +32,25 @@ class MainState extends FlxState { Paths.assetsTree.reset(); #if MOD_SUPPORT + var _lowPriorityAddons:Array = []; + var _highPriorityAddons:Array = []; + var _noPriorityAddons:Array = []; + if (FileSystem.exists(ModsFolder.addonsPath) && FileSystem.isDirectory(ModsFolder.addonsPath)) { + for(i=>addon in [for(dir in FileSystem.readDirectory(ModsFolder.addonsPath)) if (FileSystem.isDirectory('${ModsFolder.addonsPath}$dir')) dir]) { + if (addon.startsWith("[LOW]")) _lowPriorityAddons.insert(0, addon); + else if (addon.startsWith("[HIGH]")) _highPriorityAddons.insert(0, addon); + else _noPriorityAddons.insert(0, addon); + } + for (addon in _lowPriorityAddons) + Paths.assetsTree.addLibrary(ModsFolder.loadModLib('${ModsFolder.addonsPath}$addon', StringTools.ltrim(addon.substr("[LOW]".length)))); + } if (ModsFolder.currentModFolder != null) Paths.assetsTree.addLibrary(ModsFolder.loadModLib('${ModsFolder.modsPath}${ModsFolder.currentModFolder}', ModsFolder.currentModFolder)); - if (FileSystem.exists(ModsFolder.addonsPath) && FileSystem.isDirectory(ModsFolder.addonsPath)) - for(addon in [for(dir in FileSystem.readDirectory(ModsFolder.addonsPath)) if (FileSystem.isDirectory('${ModsFolder.addonsPath}$dir')) dir]) - Paths.assetsTree.addLibrary(ModsFolder.loadModLib('${ModsFolder.addonsPath}$addon', addon)); + if (FileSystem.exists(ModsFolder.addonsPath) && FileSystem.isDirectory(ModsFolder.addonsPath)){ + for (addon in _noPriorityAddons) Paths.assetsTree.addLibrary(ModsFolder.loadModLib('${ModsFolder.addonsPath}$addon', addon)); + for (addon in _highPriorityAddons) Paths.assetsTree.addLibrary(ModsFolder.loadModLib('${ModsFolder.addonsPath}$addon', StringTools.ltrim(addon.substr("[HIGH]".length)))); + } #end Main.refreshAssets();