RePatch_GameScript_RefreshStoragePage.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using GadgetCore.API;
  2. using HarmonyLib;
  3. using System.Collections;
  4. using System.Reflection;
  5. using UnityEngine;
  6. namespace StorageExpansion.Patches
  7. {
  8. [HarmonyPatch]
  9. [HarmonyGadget("StorageExpansion")]
  10. public static class RePatch_GameScript_RefreshStoragePage
  11. {
  12. [HarmonyTargetMethod]
  13. static MethodBase TargetMethod()
  14. {
  15. return AccessTools.Method(typeof(GadgetCoreAPI).Assembly.GetType("GadgetCore.Patches.Patch_GameScript_RefreshStoragePage"), "RefreshStoragePage");
  16. }
  17. public static readonly FieldInfo curStoragePage = typeof(GameScript).GetField("curStoragePage", BindingFlags.NonPublic | BindingFlags.Instance);
  18. [HarmonyPrefix]
  19. public static bool Prefix(GameScript __instance, int p, ref IEnumerator __result)
  20. {
  21. __result = RefreshStoragePage(__instance, p);
  22. return false;
  23. }
  24. private static IEnumerator RefreshStoragePage(GameScript instance, int p)
  25. {
  26. var __instance = InstanceTracker.GameScript;
  27. curStoragePage.SetValue(__instance, p);
  28. __instance.storageSelect.transform.position = new Vector3(__instance.storageButton[p].transform.position.x, __instance.storageButton[p].transform.position.y, __instance.storageSelect.transform.position.z);
  29. for (int i = 0; i < Core.settingAmountSlots; i++)
  30. {
  31. __instance.RefreshSlotStorage(i);
  32. }
  33. yield break;
  34. }
  35. }
  36. }