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); }
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}"); }
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); }