示例#1
0
        private static Screen LoadScreen(string screen, Layer layerToLoadScreenOn, bool addToManagers, bool makeCurrentScreen)
        {
            mNextScreenLayer = layerToLoadScreenOn;

            Screen newScreen = null;

            Type typeOfScreen = MainAssembly.GetType(screen);

            if (typeOfScreen == null)
            {
                throw new System.ArgumentException("There is no " + screen + " class defined in your project or linked assemblies.");
            }

            if (screen != null && screen != "")
            {
#if XBOX360
                newScreen = (Screen)Activator.CreateInstance(typeOfScreen);
#else
                newScreen = (Screen)Activator.CreateInstance(typeOfScreen, new object[0]);
#endif
            }

            if (newScreen != null)
            {
                FlatRedBall.Input.InputManager.CurrentFrameInputSuspended = true;

                if (addToManagers)
                {
                    // We do this so that new Screens are the CurrentScreen in Activity.
                    // This is useful in custom logic.
                    if (makeCurrentScreen)
                    {
                        mCurrentScreen = newScreen;
                    }
                    newScreen.Initialize(addToManagers);

                    newScreen.ApplyRestartVariables();
                }
                mSuppressStatePush = false;

                nextCallback?.Invoke(newScreen);
                nextCallback = null;


                if (addToManagers)
                {
                    newScreen.Activity(true);


                    newScreen.ActivityCallCount++;
                }
            }

            return(newScreen);
        }
示例#2
0
        public IntegratedMod(string name, string assemblyName, string integratorName, Version versionExpected = null) : base(name, assemblyName, versionExpected)
        {
            if (!IsActive)
            {
                return;
            }

            Integrator = MainAssembly.GetType(assemblyName + "." + integratorName);
            if (Integrator == null)
            {
                Mod.Warning($"Integrator '{integratorName}' not found for '{Name}'");
                return;
            }

            Mod.Log($"Integrated with {Name}");
        }
示例#3
0
        public override bool OnStartup()
        {
            if (!IsActive)
            {
                return(false);
            }

            var type   = MainAssembly?.GetType("ZoneInspectData.MainTabWindow_InspectZone_Stockpile");
            var method = type?.GetMethod("ExtraOnGUI");

            if (method == null)
            {
                return(false);
            }

            if (Mod.Harmony.GetPatchedMethods().All(patch => patch != method))
            {
                Mod.Harmony.Patch(method, new HarmonyMethod(typeof(ExtendedInspectData).GetMethod(nameof(Prefix_ExtraOnGui), BindingFlags.NonPublic | BindingFlags.Static)));
            }
            return(true);
        }