Exemplo n.º 1
0
        public static void Initialize()
        {
            deserializer  = new DeserializerBuilder().WithNamingConvention(PascalCaseNamingConvention.Instance).Build();
            definitions   = new List <ModDefinition>();
            Mods          = new Dictionary <string, IkenFelineMod>();
            ModList       = new Dictionary <string, ModManifest>();
            patchMap      = new Dictionary <string, HashSet <string> >();
            patchSet      = new HashSet <string>();
            assemblyPaths = new List <string>();
            assemblies    = new Dictionary <string, Assembly>();

            LogManager.Logger.Log("Collecting mod list...");
            CollectMods();

            LogManager.Logger.Log("Collecting patches...");
            CollectPatches();

            if (patchMap.Count > 0)
            {
                LogManager.Logger.Log("Applying patches...");
                assemblyPaths = ModPatcher.Patch(patchMap);
            }

            LogManager.Logger.Log("Loading patched assemblies...");
            LoadAssemblies();

            LogManager.Logger.Log("Loading main mods...");
            LoadMods();

            LogManager.Logger.Log("Loading assets...");
            AssetLoader.LoadAssets();

            LogManager.Logger.Log("Triggering post-load event...");
            foreach (var mod in Mods.Values)
            {
                mod.PostLoad();
            }

            LogManager.Logger.Log("Registering hooks...");
            ModHooks.CreateHooks();
        }