private void LoadPlugins(GameController gameController) { var pluginLoader = new PluginLoader(_gameController, _graphics, this); var pluginUpdateSettings = SettingsContainer.LoadSettingFile <PluginsUpdateSettings>(AutoPluginUpdateSettingsPath); var loadPluginTasks = new List <Task <List <PluginWrapper> > >(); if (pluginUpdateSettings != null) { loadPluginTasks.AddRange(RunPluginAutoUpdate(pluginLoader, pluginUpdateSettings)); } loadPluginTasks.AddRange(LoadCompiledDirPlugins(pluginLoader, pluginUpdateSettings)); Task.WaitAll(loadPluginTasks?.ToArray()); Plugins = loadPluginTasks .Where(t => t.Result != null) .SelectMany(t => t.Result) .OrderBy(x => x.Order) .ThenByDescending(x => x.CanBeMultiThreading) .ThenBy(x => x.Name) .ToList(); AddPluginInfoToDevTree(); InitialisePlugins(gameController); AreaOnOnAreaChange(gameController.Area.CurrentArea); AllPluginsLoaded = true; }
private void LoadPlugins(GameController gameController) { var pluginLoader = new PluginLoader(_gameController, _graphics, this); var pluginUpdateSettings = _settingsContainer.PluginsUpdateSettings; var loadPluginTasks = new List <Task <List <PluginWrapper> > >(); var stopLoadFromCompiledDirectory = new List <string>(); // check for changes in the updateSettings. Delete changed repositories, to make sure all changes are acted upon if (pluginUpdateSettings.Enable) { var file = new FileInfo(AutoPluginUpdateSettingsPathDump); PluginsUpdateSettings dumpPluginUpdateSettings = null; if (file.Exists) { dumpPluginUpdateSettings = SettingsContainer.LoadSettingFile <PluginsUpdateSettings>(AutoPluginUpdateSettingsPathDump); } RemoveChangedPlugins(pluginUpdateSettings, dumpPluginUpdateSettings); SettingsContainer.SaveSettingFile(AutoPluginUpdateSettingsPathDump, pluginUpdateSettings); try { var pluginAutoUpdates = RunPluginAutoUpdate(pluginLoader, pluginUpdateSettings); loadPluginTasks.AddRange(pluginAutoUpdates); stopLoadFromCompiledDirectory = pluginUpdateSettings .Plugins .Select(p => p.Name?.Value) .ToList(); } catch (Exception e) { DebugWindow.LogError("PluginManager -> AutoUpdate failed, load all compiled plugins."); DebugWindow.LogError($"PluginManager -> {e.Message}"); stopLoadFromCompiledDirectory = new List <string>(); } } loadPluginTasks.AddRange(LoadCompiledDirPlugins(pluginLoader, stopLoadFromCompiledDirectory)); Task.WaitAll(loadPluginTasks?.ToArray()); Plugins = loadPluginTasks .Where(t => t.Result != null) .SelectMany(t => t.Result) .OrderBy(x => x.Order) .ThenByDescending(x => x.CanBeMultiThreading) .ThenBy(x => x.Name) .ToList(); AddPluginInfoToDevTree(); InitialisePlugins(gameController); AreaOnOnAreaChange(gameController.Area.CurrentArea); AllPluginsLoaded = true; }
private void LoadPlugins(GameController gameController) { var pluginLoader = new PluginLoader(_gameController, _graphics, this); var forceLoadCompiledOnly = false; var pluginUpdateSettings = SettingsContainer.LoadSettingFile <PluginsUpdateSettings>(AutoPluginUpdateSettingsPath); var loadPluginTasks = new List <Task <List <PluginWrapper> > >(); if (pluginUpdateSettings != null) { try { var pluginAutoUpdates = RunPluginAutoUpdate(pluginLoader, pluginUpdateSettings); loadPluginTasks.AddRange(pluginAutoUpdates); } catch (Exception e) { DebugWindow.LogError("PluginManager -> AutoUpdate failed, load all compiled plugins."); DebugWindow.LogError($"PluginManager -> {e.Message}"); forceLoadCompiledOnly = true; } } loadPluginTasks.AddRange(LoadCompiledDirPlugins(pluginLoader, pluginUpdateSettings, forceLoadCompiledOnly)); Task.WaitAll(loadPluginTasks?.ToArray()); Plugins = loadPluginTasks .Where(t => t.Result != null) .SelectMany(t => t.Result) .OrderBy(x => x.Order) .ThenByDescending(x => x.CanBeMultiThreading) .ThenBy(x => x.Name) .ToList(); AddPluginInfoToDevTree(); InitialisePlugins(gameController); AreaOnOnAreaChange(gameController.Area.CurrentArea); AllPluginsLoaded = true; }