Patch_GameScript_SaveGame.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using GadgetCore.API;
  2. using HarmonyLib;
  3. namespace IronmanChest.Patches
  4. {
  5. [HarmonyPatch(typeof(GameScript))]
  6. [HarmonyPatch(nameof(GameScript.SaveGame))]
  7. [HarmonyGadget("IronmanChest")]
  8. public static class Patch_GameScript_SaveGame
  9. {
  10. [HarmonyPrefix]
  11. public static void Prefix(GameScript __instance, Item[] ___storage, ref int ___storageLevel)
  12. {
  13. if (Menuu.curProfession == 1)
  14. {
  15. PreviewLabs.PlayerPrefs.SetInt(Menuu.curChar + "ironmanstorageLevel", ___storageLevel);
  16. for (int i = 0; i < Core.settingAmountPages * Core.settingAmountSlots; i++)
  17. {
  18. PreviewLabs.PlayerPrefs.SetInt(Menuu.curChar + "ironmanstorage" + i + "id", ___storage[i].id);
  19. PreviewLabs.PlayerPrefs.SetInt(Menuu.curChar + "ironmanstorage" + i + "q", ___storage[i].q);
  20. PreviewLabs.PlayerPrefs.SetInt(Menuu.curChar + "ironmanstorage" + i + "exp", ___storage[i].exp);
  21. PreviewLabs.PlayerPrefs.SetInt(Menuu.curChar + "ironmanstorage" + i + "tier", ___storage[i].tier);
  22. PreviewLabs.PlayerPrefs.SetInt(Menuu.curChar + "ironmanstorage" + i + "corrupted", ___storage[i].corrupted);
  23. PreviewLabs.PlayerPrefs.SetInt(Menuu.curChar + "ironmanstorage" + i + "a0", ___storage[i].aspect[0]);
  24. PreviewLabs.PlayerPrefs.SetInt(Menuu.curChar + "ironmanstorage" + i + "a1", ___storage[i].aspect[1]);
  25. PreviewLabs.PlayerPrefs.SetInt(Menuu.curChar + "ironmanstorage" + i + "a2", ___storage[i].aspect[2]);
  26. PreviewLabs.PlayerPrefs.SetInt(Menuu.curChar + "ironmanstorage" + i + "aL0", ___storage[i].aspectLvl[0]);
  27. PreviewLabs.PlayerPrefs.SetInt(Menuu.curChar + "ironmanstorage" + i + "aL1", ___storage[i].aspectLvl[1]);
  28. PreviewLabs.PlayerPrefs.SetInt(Menuu.curChar + "ironmanstorage" + i + "aL2", ___storage[i].aspectLvl[2]);
  29. }
  30. ___storageLevel = PreviewLabs.PlayerPrefs.GetInt("storageLevel");
  31. for (int i = 0; i < Core.settingAmountPages * Core.settingAmountSlots; i++)
  32. {
  33. ___storage[i].id = PreviewLabs.PlayerPrefs.GetInt("storage" + i + "id");
  34. ___storage[i].q = PreviewLabs.PlayerPrefs.GetInt("storage" + i + "q");
  35. ___storage[i].exp = PreviewLabs.PlayerPrefs.GetInt("storage" + i + "exp");
  36. ___storage[i].tier = PreviewLabs.PlayerPrefs.GetInt("storage" + i + "tier");
  37. ___storage[i].corrupted = PreviewLabs.PlayerPrefs.GetInt("storage" + i + "corrupted");
  38. ___storage[i].aspect[0] = PreviewLabs.PlayerPrefs.GetInt("storage" + i + "a0");
  39. ___storage[i].aspect[1] = PreviewLabs.PlayerPrefs.GetInt("storage" + i + "a1");
  40. ___storage[i].aspect[2] = PreviewLabs.PlayerPrefs.GetInt("storage" + i + "a2");
  41. ___storage[i].aspectLvl[0] = PreviewLabs.PlayerPrefs.GetInt("storage" + i + "aL0");
  42. ___storage[i].aspectLvl[1] = PreviewLabs.PlayerPrefs.GetInt("storage" + i + "aL1");
  43. ___storage[i].aspectLvl[2] = PreviewLabs.PlayerPrefs.GetInt("storage" + i + "aL2");
  44. }
  45. }
  46. }
  47. [HarmonyPostfix]
  48. [HarmonyPriority(Priority.Low)]
  49. public static void Postfix(GameScript __instance, Item[] ___storage, ref int ___storageLevel)
  50. {
  51. Patch_GameScript_LoadGame.Postfix(__instance, ___storage, ref ___storageLevel);
  52. }
  53. }
  54. }