Example #1
0
        private static Assembly Resolve(string requested_name, Version requested_version, bool is_preload)
        {
            // Get Resolve Information Object
            AssemblyResolveInfo resolveInfo = GetInfo(requested_name);

            // Resolve the Information Object
            Assembly assembly = resolveInfo.Resolve(requested_version);

            // Run Passthrough Events
            if (assembly == null)
            {
                assembly = MonoResolveManager.SafeInvoke_OnAssemblyResolve(requested_name, requested_version);
            }

            // Search Directories
            if (is_preload && (assembly == null))
            {
                assembly = SearchDirectoryManager.Scan(requested_name);
            }

            // Load if Valid Assembly
            if (assembly != null)
            {
                LoadInfo(assembly);
            }

            // Return
            return(assembly);
        }
Example #2
0
        private static int Initialize()
        {
            AppDomain curDomain = AppDomain.CurrentDomain;

            Fixes.UnhandledException.Install(curDomain);
            MelonUtils.Setup(curDomain);
            Assertions.LemonAssertMapping.Setup();

            if (!MonoLibrary.Setup() ||
                !MonoResolveManager.Setup())
            {
                return(1);
            }

            HarmonyInstance = new HarmonyLib.Harmony(BuildInfo.Name);

            Fixes.ForcedCultureInfo.Install();
            Fixes.InstancePatchFix.Install();
            Fixes.ProcessFix.Install();
            PatchShield.Install();

            MelonPreferences.Load();
            MelonLaunchOptions.Load();
            bHaptics.Load();

            MelonCompatibilityLayer.Setup();
            MelonCompatibilityLayer.SetupModules(MelonCompatibilityLayer.SetupType.OnPreInitialization);

            MelonHandler.LoadPlugins();
            MelonHandler.OnPreInitialization();

            return(0);
        }
Example #3
0
        internal static void LoadInfo(Assembly assembly)
        {
            // Get AssemblyName
            AssemblyName assemblyName = assembly.GetName();

            // Get Resolve Information Object
            AssemblyResolveInfo resolveInfo = GetInfo(assemblyName.Name);

            // Set Version of Assembly
            resolveInfo.SetVersionSpecific(assemblyName.Version, assembly);

            // Run Passthrough Events
            MonoResolveManager.SafeInvoke_OnAssemblyLoad(assembly);
        }
Example #4
0
        public override void Setup()
        {
            // To-Do:
            // Detect if IPA is already Installed
            // Point AssemblyResolveInfo to already installed IPA Assembly
            // Point GetResolverFromAssembly to Dummy MelonCompatibilityLayer.Resolver

            string[] assembly_list =
            {
                "IllusionPlugin",
                "IllusionInjector",
            };
            Assembly base_assembly = typeof(IPA_Module).Assembly;

            foreach (string assemblyName in assembly_list)
            {
                MonoResolveManager.GetAssemblyResolveInfo(assemblyName).Override = base_assembly;
            }

            MelonCompatibilityLayer.AddAssemblyToResolverEvent(GetResolverFromAssembly);
        }
Example #5
0
        public override void Setup()
        {
            // To-Do:
            // Detect if MuseDashModLoader is already Installed
            // Point AssemblyResolveInfo to already installed MuseDashModLoader Assembly
            // Point GetResolverFromAssembly to Dummy MelonCompatibilityLayer.Resolver

            string[] assembly_list =
            {
                "ModHelper",
                "ModLoader",
            };
            Assembly base_assembly = typeof(MuseDashModLoader_Module).Assembly;

            foreach (string assemblyName in assembly_list)
            {
                MonoResolveManager.GetAssemblyResolveInfo(assemblyName).Override = base_assembly;
            }

            MelonCompatibilityLayer.AddAssemblyToResolverEvent(GetResolverFromAssembly);
        }