public static void onEnablePostfix(ModManager.ModEntry __instance, ref bool __result) { if (!(GameController.Instance != null && GameController.Instance.isCampaignScenario) && __result) { if (!ExtenedLoader.ContainsKey(__instance.mod.getIdentifier())) { string[] files = Directory.GetFiles(__instance.path, "*.assetProject", SearchOption.TopDirectoryOnly); if (files.Length != 0) { ExtendedLoader loader = new ExtendedLoader(files[0]); ExtenedLoader.Add(__instance.mod.getIdentifier(), loader); } } Debug.Log("Extended loader/ Loading:" + __instance.mod.getIdentifier()); if (ExtenedLoader.ContainsKey(__instance.mod.getIdentifier())) { try { if (!ExtenedLoader[__instance.mod.getIdentifier()].IsLoaded) { ExtenedLoader[__instance.mod.getIdentifier()].OnEnabled(); } } catch (Exception e) { Debug.LogError(e); } } } }
public static void onDisablePostfix(ModManager.ModEntry __instance, ref bool __result) { Debug.Log("Extended loader/ Disabling:" + __instance.mod.getIdentifier()); if (ExtenedLoader.ContainsKey(__instance.mod.getIdentifier()) && ExtenedLoader[__instance.mod.getIdentifier()].IsLoaded) { ExtenedLoader[__instance.mod.getIdentifier()].onDisabled(); } }
public static void DrawMenu(ModManager.ModEntry modEntry, object[] param) { if (param == null || param.Length <= 1) { return; } if (param.Length == 2 && !((param[1] is Vector2) || (param[1] is Vector4))) { return; } if (!(param[0] is ScreenManager)) { return; } ScreenManager screenManager = (ScreenManager)param[0]; Vector4 ranged; if (param[1] is Vector2) { ranged = new Vector4((Vector2)param[1], screenManager.GraphicsDevice.Viewport.Width - ((Vector2)param[1]).X - 55, screenManager.GraphicsDevice.Viewport.Height - ((Vector2)param[1]).Y - 55); } else if (param[1] is Vector4) { ranged = (Vector4)param[1]; } else if ((param[1] is int) && param.Length >= 3 && param.Length != 4) { int x = (int)param[1]; int y = (int)param[2]; int w = screenManager.GraphicsDevice.Viewport.Width - x - 55; int h = screenManager.GraphicsDevice.Viewport.Height - y - 55; if (param.Length == 5) { w = (int)param[3]; h = (int)param[4]; } ranged = new Vector4(x, y, w, h); } else { return; } TextItem.doMeasuredSmallLabel(new Vector2(ranged.X + 25, ranged.Y + 25), "ModsCore.Settings.FontName".Translate(), Color.White); settings.CurFont = SelectableTextList.doFancyList((modEntry.Info.Id + "FontName").GetHashCode(), (int)ranged.X, (int)ranged.Y + 50, (int)ranged.Z - 50, (int)ranged.W - 50, Main.FontName.ToArray(), settings.CurFont, Color.White); }
public static bool Load(ModManager.ModEntry modEntry) { try { settings = Settings.Load <Settings>(modEntry); } catch { settings = new Settings(); } if (settings.FontList.Count == 0) { settings.FontList.Add("Font_MSYH"); settings.FontList.Add("Font_Song"); settings.FontList.Sort(); settings.CurFont = settings.FontList.IndexOf("Font_MSYH"); } if (settings.CurFont < 0 || settings.CurFont > settings.FontList.Count - 1) { settings.CurFont = settings.FontList.IndexOf("Font_MSYH"); } modEntry.SaveMethod = SaveMethod; modEntry.DrawSettingUIMethod = DrawMenu; Harmony = HarmonyInstance.Create(modEntry.Info.Id); Logger = modEntry.Logger; GameAssembly = Assembly.GetCallingAssembly(); //Patch MainMenu.drawMainMenuButtons try { var original = GameAssembly.GetType("Hacknet.MainMenu").GetMethod("drawMainMenuButtons", BindingFlags.NonPublic | BindingFlags.Instance); var postfix = typeof(Main).GetMethod("drawMainMenuButtonsPostfix"); Harmony.Patch(original, null, new HarmonyMethod(postfix)); } catch (Exception ex) { Logger.Error(ex.ToString()); } //Patch MainMenu..ctor try { var original = GameAssembly.GetType("Hacknet.MainMenu").GetConstructor(new Type[] { }); var postfix = typeof(Main).GetMethod("OptionsMenuDrawPostfix"); Harmony.Patch(original, null, new HarmonyMethod(postfix)); } catch (Exception ex) { Logger.Error(ex.ToString()); } //Patch SpriteBatch.DrawString try { var original = typeof(SpriteBatch).GetMethod("DrawString", BindingFlags.Public | BindingFlags.Instance, null, new Type[] { typeof(SpriteFont), typeof(string), typeof(Vector2), typeof(Microsoft.Xna.Framework.Color), typeof(float), typeof(Vector2), typeof(Vector2), typeof(SpriteEffects), typeof(float) }, new ParameterModifier[0]); var prefixCover = typeof(Main).GetMethod("DrawStringPrefixCover"); Harmony.Patch(original, new HarmonyMethod(prefixCover), null); } catch (Exception ex) { Logger.Error(ex.ToString()); } //Patch Game.Game1LoadContentPostfix try { var original = typeof(Game1).GetMethod("LoadContent", BindingFlags.NonPublic | BindingFlags.Instance); var postfix = typeof(Main).GetMethod("Game1LoadContentPostfix"); Harmony.Patch(original, null, new HarmonyMethod(postfix)); } catch (Exception ex) { Logger.Error(ex.ToString()); } //Patch OptionsMenu.Draw try { var original = GameAssembly.GetType("Hacknet.OptionsMenu").GetMethod("Draw", BindingFlags.Public | BindingFlags.Instance); var postfix = typeof(Main).GetMethod("OptionsMenuDrawPostfix"); Harmony.Patch(original, null, new HarmonyMethod(postfix)); } catch (Exception ex) { Logger.Error(ex.ToString()); } Harmony.PatchAll(); Logger.Log("LoadingComplete".Translate()); return(true); }
private static void SaveMethod(ModManager.ModEntry modEntry, object[] param) => settings.Save(modEntry);
public override void Save(ModManager.ModEntry modEntry) => Save(this, modEntry);