コード例 #1
0
ファイル: PluginManager.cs プロジェクト: Bosek/pluginloader
        private void solveDependencies()
        {
            Log.Info("Solving package dependencies");

            UnmetDependency[] unmetDependencies;
            if (!DependencySolver.Solve(PackageManager.Packages.ToArray(), out unmetDependencies))
            {
                unmetDependencies = DependencySolver.FirstLevelUnmetDependencies(unmetDependencies);

                unmetDependencies.ToList().ForEach(unmetDependency =>
                                                   Log.Error(unmetDependency.ToString()));
                Log.Error("Please resolve issues and restart the game");
                Console.ReadLine();
            }

            try
            {
                PackageManager.Sort();
            }
            catch (Exception exception)
            {
                Log.Error("Unable to sort packages in order to fulfill dependencies");
                Log.Exception(exception);
                Log.Error("Please resolve issues and restart the game");
                Console.ReadLine();
            }
        }
コード例 #2
0
ファイル: PackageManager.cs プロジェクト: Bosek/pluginloader
 internal void Sort()
 {
     Packages = DependencySolver.Sort(Packages.ToArray()).ToList();
 }
コード例 #3
0
        private void loadPackages()
        {
            unsubscribeEvents(OnClientHotReload);
            unsubscribeEvents(OnEditorHotReload);
            unsubscribeEvents(OnMenuHotReload);
            unsubscribeEvents(OnServerHotReload);

            unsubscribeEvents(OnAgosGuiInitialized);

            unsubscribeEvents(OnGameClientActivated);
            unsubscribeEvents(OnGameClientDeactivated);
            unsubscribeEvents(OnGameClientInitialized);
            unsubscribeEvents(OnGameClientUnload);
            unsubscribeEvents(OnGameClientUpdate);

            unsubscribeEvents(OnGameEditorInitialized);
            unsubscribeEvents(OnGameEditorUnload);
            unsubscribeEvents(OnGameEditorUpdate);

            unsubscribeEvents(OnGameMenuInitialized);

            unsubscribeEvents(OnGameServerInitialized);
            unsubscribeEvents(OnGameServerUnload);
            unsubscribeEvents(OnGameServerUpdate);

            Console.WriteLine($"[{nameof(PluginManager)}] Looking for packages");
            PackageManager.ScanForPackages();
            PackageManager.Packages.ForEach(package => Console.WriteLine($"[{nameof(PluginManager)}] Loaded {package.ToString()}"));

            Console.WriteLine($"[{nameof(PluginManager)}] Solving dependencies");

            var unmetDependencies = DependencySolver.Solve(PackageManager.Packages.ToArray());

            if (unmetDependencies.Length > 0)
            {
                unmetDependencies = DependencySolver.GetRelevantUnmetDependencies(unmetDependencies);

                Console.ForegroundColor = ConsoleColor.Red;
                unmetDependencies.ToList().ForEach(unmetDependency =>
                                                   Console.WriteLine($"[{nameof(PluginManager)}] {unmetDependency.ToString()}"));
                Console.WriteLine($"[{nameof(PluginManager)}] Please resolve issues and restart the game");
                Console.ResetColor();
                while (true)
                {
                    Console.ReadLine();
                }
            }

            try
            {
                PackageManager.Sort();
            }
            catch (Exception ex)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine($"[{nameof(PluginManager)}] Could not sort dependencies");
                Console.WriteLine(ex.Message);
                Console.WriteLine($"[{nameof(PluginManager)}] Please resolve issues and restart the game");
                Console.ResetColor();
                while (true)
                {
                    Console.ReadLine();
                }
            }
        }