public static void InitializeLevels() { MonoMain.loadMessage = "Loading Levels"; DuckGame.Content.SearchDirLevels("Content/levels", LevelLocation.Content); DuckGame.Content.SearchDirLevels(DuckFile.levelDirectory, LevelLocation.Custom); if (!Steam.IsInitialized()) { return; } bool done = false; WorkshopQueryUser queryUser = Steam.CreateQueryUser(Steam.user.id, WorkshopList.Subscribed, WorkshopType.UsableInGame, WorkshopSortOrder.TitleAsc); queryUser.requiredTags.Add("Map"); queryUser.onlyQueryIDs = true; queryUser.QueryFinished += (WorkshopQueryFinished)(sender => done = true); queryUser.ResultFetched += (WorkshopQueryResultFetched)((sender, result) => { WorkshopItem publishedFile = result.details.publishedFile; if ((publishedFile.stateFlags & WorkshopItemState.Installed) == WorkshopItemState.None) { return; } DuckGame.Content.SearchDirLevels(publishedFile.path, LevelLocation.Workshop); }); queryUser.Request(); while (!done) { Steam.Update(); Thread.Sleep(13); } }
internal static void LoadMods(string dir) { ModLoader.modDirectory = dir; ModLoader.LoadConfig(); Stack <string> modLoadStack = new Stack <string>(); ModLoader.loadableMods = new Dictionary <string, ModConfiguration>(); if (Directory.Exists(ModLoader.modDirectory)) { if (Steam.IsInitialized()) { bool done = false; WorkshopQueryUser queryUser = Steam.CreateQueryUser(Steam.user.id, WorkshopList.Subscribed, WorkshopType.UsableInGame, WorkshopSortOrder.TitleAsc); queryUser.requiredTags.Add("Mod"); queryUser.onlyQueryIDs = true; queryUser.QueryFinished += (WorkshopQueryFinished)(sender => done = true); queryUser.ResultFetched += new WorkshopQueryResultFetched(ModLoader.ResultFetched); queryUser.Request(); while (!done) { Steam.Update(); Thread.Sleep(13); } } List <string> directoriesNoCloud = DuckFile.GetDirectoriesNoCloud(ModLoader.modDirectory); MonoMain.totalLoadyBits += directoriesNoCloud.Count <string>() * 2; foreach (string folder in directoriesNoCloud) { ModConfiguration modConfiguration = ModLoader.AttemptModLoad(folder); MonoMain.loadyBits += 2; if (modConfiguration != null) { if (ModLoader.loadableMods.ContainsKey(modConfiguration.uniqueID)) { if (ModLoader.loadableMods[modConfiguration.uniqueID].disabled && !modConfiguration.disabled) { ModLoader.loadableMods.Remove(modConfiguration.uniqueID); } else { continue; } } ModLoader.loadableMods.Add(modConfiguration.uniqueID, modConfiguration); } } } MonoMain.totalLoadyBits += ModLoader.loadableMods.Count * 2; int num = 0; foreach (ModConfiguration modConfig in ModLoader.loadableMods.Values) { try { ModLoader.currentModLoadString = modConfig.name; MonoMain.loadMessage = "LOADING MOD " + ModLoader.currentModLoadString; ModLoader.GetOrLoad(modConfig, ref modLoadStack, ref ModLoader.loadableMods); MonoMain.loadyBits += 2; ++num; if (num == 10) { num = 0; Thread.Sleep(50); } } catch (Exception ex) { ModLoader._modLoadErrors.Add(Tuple.Create <string, Exception>(modConfig.uniqueID, ex)); MonoMain.loadyBits += 2; } } ModLoader._sortedMods = (IList <Mod>)ModLoader._loadedMods.Values.OrderBy <Mod, Priority>((Func <Mod, Priority>)(mod => mod.priority)).ToList <Mod>(); ModLoader._sortedAccessibleMods = (IList <Mod>)ModLoader._sortedMods.Where <Mod>((Func <Mod, bool>)(mod => !mod.configuration.disabled)).ToList <Mod>(); foreach (Mod mod in ModLoader._sortedMods.Where <Mod>((Func <Mod, bool>)(a => a.configuration.disabled))) { if (mod != null && mod.configuration != null) { ModLoader._loadedMods.Remove(mod.configuration.uniqueID); } } foreach (Mod sortedAccessibleMod in (IEnumerable <Mod>)ModLoader._sortedAccessibleMods) { sortedAccessibleMod.InvokeOnPreInitialize(); } ModLoader.modHash = ModLoader.GetModHash(); foreach (Mod sortedAccessibleMod in (IEnumerable <Mod>)ModLoader._sortedAccessibleMods) { foreach (System.Type type in sortedAccessibleMod.configuration.assembly.GetTypes()) { ModLoader._typesByName[ModLoader.SmallTypeName(type)] = type; } } }