Browse Source

[2.0.5.0] Fixed bug that corrupted the storage after pressing retry

Zariteis 4 years ago
parent
commit
3e046a84d5
2 changed files with 93 additions and 88 deletions
  1. 92 87
      Patches/Patch_GameScript_InitializeStorage.cs
  2. 1 1
      StorageExpansion.cs

+ 92 - 87
Patches/Patch_GameScript_InitializeStorage.cs

@@ -20,97 +20,102 @@ namespace StorageExpansion.Patches
     public static bool Prefix(GameScript __instance, ref Item[] ___storage, ref GameObject ___storageSelect, ref GameObject[] ___storageButton,
       ref GameObject ___menuStorage, ref GameObject[] ___storageIcon, ref GameObject[] ___storageIconBack, ref TextMesh[] ___txtQStorage, ref TextMesh[] ___txtStorageCost)
     {
-      UpdateSizes();
-
-      ___storage = new Item[Core.settingAmountPages * Core.settingAmountSlots];
-      for (int i = 0; i < ___storage.Length; i++)
-      {
-        ___storage[i] = new Item(0, 0, 0, 0, 0, new int[3], new int[3]);
-      }
-
-      ___storageButton = new GameObject[Core.settingAmountPages];
-
-      ___storageIcon = new GameObject[Core.settingAmountSlots];
-      ___storageIconBack = new GameObject[Core.settingAmountSlots];
-      ___txtQStorage = new TextMesh[Core.settingAmountSlots];
 
       var storageMenu = GameObject.Find("Main Camera").transform.Find("menuStorage").gameObject;
-      storageMenu.GetComponent<Renderer>().material = new Material(Shader.Find("Unlit/Transparent")) { mainTexture = GetTexture() };
-      ___menuStorage = storageMenu;
-      ___storageSelect = storageMenu.transform.FindChild("-").gameObject;
-
-      ___txtStorageCost[0] = storageMenu.transform.FindChild("bStorageU").GetChild(0).GetComponent<TextMesh>();
-      ___txtStorageCost[1] = storageMenu.transform.FindChild("bStorageU").GetChild(0).GetChild(0).GetComponent<TextMesh>();
 
-      if (IsLargeMode())
-      {
-        var upgradeButton = storageMenu.transform.FindChild("bStorageU");
-        upgradeButton.GetComponent<Renderer>().material = materialUpgradeButton;
-        upgradeButton.GetComponent<ButtonMenu>().button = materialUpgradeButton;
-        upgradeButton.GetComponent<ButtonMenu>().buttonSelect = materialUpgradeButtonSelected;
-        upgradeButton.transform.localPosition = new Vector3(0.5473f, -0.3367f, 0.15f);
-        upgradeButton.GetComponent<BoxCollider>().size = new Vector3(0.53f, 0.41f, 1);
-        upgradeButton.GetComponent<BoxCollider>().center = new Vector3(-0.01f, -0.05f, 0);
-        upgradeButton.GetChild(0).localPosition = new Vector3(0.071f, 0.057f, 0.35f);
-        upgradeButton.GetChild(1).localPosition = new Vector3(-0.015f, -0.089f, 0.35f);
-      }
-
-      PositionSet pos = GetSizes();
-
-      for (int i = 0; i < 29; i++)
-        GameObject.DestroyImmediate(storageMenu.transform.GetChild(1).gameObject);
-
-      for (int i = 1; i < Core.settingAmountSlots; i++)
-      {
-        var slot = GameObject.Instantiate(storageMenu.transform.GetChild(0).gameObject);
-        slot.name = "" + i;
-        slot.transform.parent = storageMenu.transform;
-        slot.transform.localScale = storageMenu.transform.GetChild(0).localScale;
-        slot.transform.localPosition = pos.slotPos + new Vector3(+0.1328607f * (i % pos.slotWrap), +0.1328607f * (i / pos.slotWrap), 0);
-        slot.transform.localEulerAngles = storageMenu.transform.GetChild(0).localEulerAngles;
-        if (i >= Core.settingAmountActualSlots)
-          slot.transform.localPosition += new Vector3(10, 0, 0);
-      }
-      storageMenu.transform.GetChild(0).transform.localPosition = pos.slotPos;
-
-      for (int i = 0; i < 11; i++)
-        GameObject.DestroyImmediate(storageMenu.transform.GetChild(3).gameObject);
-
-      if (HasSmallPageButtons())
-      {
-        var tab = storageMenu.transform.GetChild(2).gameObject;
-        tab.GetComponent<BoxCollider>().size = new Vector3(0.42f, 1.1f, 1);
-        tab.GetComponent<Renderer>().material = materialPageButtonLockSmall;
-        var frame = storageMenu.transform.FindChild("-").gameObject;
-        frame.GetComponent<Renderer>().material = materialPageButtonFrameSmall;
-      }
-
-      for (int i = 1; i < Core.settingAmountPages; i++)
-      {
-        var tab = GameObject.Instantiate(storageMenu.transform.GetChild(2).gameObject);
-        tab.name = "page" + i;
-        tab.transform.parent = storageMenu.transform;
-        tab.transform.localScale = storageMenu.transform.GetChild(2).localScale;
-        tab.transform.localPosition = pos.pagePos + new Vector3(
-          (HasSmallPageButtons() ? 0.05457f : +0.1328607f) * (pos.pageWrap < 0 ? (i / -pos.pageWrap) : (i % pos.pageWrap)),
-          +0.1328607f * (pos.pageWrap < 0 ? (i % -pos.pageWrap) : (i / pos.pageWrap)),
-          0);
-        tab.transform.localEulerAngles = storageMenu.transform.GetChild(2).localEulerAngles;
-        if (i >= Core.settingAmountActualPages)
-          tab.transform.localPosition += new Vector3(10, 0, 0);
-      }
-      storageMenu.transform.GetChild(2).transform.localPosition = pos.pagePos;
-
-      for (int i = 0; i < Core.settingAmountSlots; i++)
-      {
-        ___storageIcon[i] = storageMenu.transform.FindChild("" + i).gameObject;
-        ___txtQStorage[i] = storageMenu.transform.FindChild("" + i).GetChild(0).GetComponent<TextMesh>();
-        ___txtQStorage[i].text = "";
-        ___storageIconBack[i] = storageMenu.transform.FindChild("" + i).GetChild(1).gameObject;
-      }
-      for (int i = 0; i < Core.settingAmountPages; i++)
+      if (storageMenu.transform.GetChild(1).gameObject.name == "1")
       {
-        ___storageButton[i] = storageMenu.transform.FindChild("page" + i).gameObject;
+        UpdateSizes();
+
+        ___storage = new Item[Core.settingAmountPages * Core.settingAmountSlots];
+        for (int i = 0; i < ___storage.Length; i++)
+        {
+          ___storage[i] = new Item(0, 0, 0, 0, 0, new int[3], new int[3]);
+        }
+
+        ___storageButton = new GameObject[Core.settingAmountPages];
+
+        ___storageIcon = new GameObject[Core.settingAmountSlots];
+        ___storageIconBack = new GameObject[Core.settingAmountSlots];
+        ___txtQStorage = new TextMesh[Core.settingAmountSlots];
+
+        storageMenu.GetComponent<Renderer>().material = new Material(Shader.Find("Unlit/Transparent")) { mainTexture = GetTexture() };
+        ___menuStorage = storageMenu;
+        ___storageSelect = storageMenu.transform.FindChild("-").gameObject;
+
+        ___txtStorageCost[0] = storageMenu.transform.FindChild("bStorageU").GetChild(0).GetComponent<TextMesh>();
+        ___txtStorageCost[1] = storageMenu.transform.FindChild("bStorageU").GetChild(0).GetChild(0).GetComponent<TextMesh>();
+
+        if (IsLargeMode())
+        {
+          var upgradeButton = storageMenu.transform.FindChild("bStorageU");
+          upgradeButton.GetComponent<Renderer>().material = materialUpgradeButton;
+          upgradeButton.GetComponent<ButtonMenu>().button = materialUpgradeButton;
+          upgradeButton.GetComponent<ButtonMenu>().buttonSelect = materialUpgradeButtonSelected;
+          upgradeButton.transform.localPosition = new Vector3(0.5473f, -0.3367f, 0.15f);
+          upgradeButton.GetComponent<BoxCollider>().size = new Vector3(0.53f, 0.41f, 1);
+          upgradeButton.GetComponent<BoxCollider>().center = new Vector3(-0.01f, -0.05f, 0);
+          upgradeButton.GetChild(0).localPosition = new Vector3(0.071f, 0.057f, 0.35f);
+          upgradeButton.GetChild(1).localPosition = new Vector3(-0.015f, -0.089f, 0.35f);
+        }
+
+        PositionSet pos = GetSizes();
+
+        for (int i = 0; i < 29; i++)
+          GameObject.DestroyImmediate(storageMenu.transform.GetChild(1).gameObject);
+
+        for (int i = 1; i < Core.settingAmountSlots; i++)
+        {
+          var slot = GameObject.Instantiate(storageMenu.transform.GetChild(0).gameObject);
+          slot.name = "" + i;
+          slot.transform.parent = storageMenu.transform;
+          slot.transform.localScale = storageMenu.transform.GetChild(0).localScale;
+          slot.transform.localPosition = pos.slotPos + new Vector3(+0.1328607f * (i % pos.slotWrap), +0.1328607f * (i / pos.slotWrap), 0);
+          slot.transform.localEulerAngles = storageMenu.transform.GetChild(0).localEulerAngles;
+          if (i >= Core.settingAmountActualSlots)
+            slot.transform.localPosition += new Vector3(10, 0, 0);
+        }
+        storageMenu.transform.GetChild(0).transform.localPosition = pos.slotPos;
+
+        for (int i = 0; i < 11; i++)
+          GameObject.DestroyImmediate(storageMenu.transform.GetChild(3).gameObject);
+
+        if (HasSmallPageButtons())
+        {
+          var tab = storageMenu.transform.GetChild(2).gameObject;
+          tab.GetComponent<BoxCollider>().size = new Vector3(0.42f, 1.1f, 1);
+          tab.GetComponent<Renderer>().material = materialPageButtonLockSmall;
+          var frame = storageMenu.transform.FindChild("-").gameObject;
+          frame.GetComponent<Renderer>().material = materialPageButtonFrameSmall;
+        }
+
+        for (int i = 1; i < Core.settingAmountPages; i++)
+        {
+          var tab = GameObject.Instantiate(storageMenu.transform.GetChild(2).gameObject);
+          tab.name = "page" + i;
+          tab.transform.parent = storageMenu.transform;
+          tab.transform.localScale = storageMenu.transform.GetChild(2).localScale;
+          tab.transform.localPosition = pos.pagePos + new Vector3(
+            (HasSmallPageButtons() ? 0.05457f : +0.1328607f) * (pos.pageWrap < 0 ? (i / -pos.pageWrap) : (i % pos.pageWrap)),
+            +0.1328607f * (pos.pageWrap < 0 ? (i % -pos.pageWrap) : (i / pos.pageWrap)),
+            0);
+          tab.transform.localEulerAngles = storageMenu.transform.GetChild(2).localEulerAngles;
+          if (i >= Core.settingAmountActualPages)
+            tab.transform.localPosition += new Vector3(10, 0, 0);
+        }
+        storageMenu.transform.GetChild(2).transform.localPosition = pos.pagePos;
+
+        for (int i = 0; i < Core.settingAmountSlots; i++)
+        {
+          ___storageIcon[i] = storageMenu.transform.FindChild("" + i).gameObject;
+          ___txtQStorage[i] = storageMenu.transform.FindChild("" + i).GetChild(0).GetComponent<TextMesh>();
+          ___txtQStorage[i].text = "";
+          ___storageIconBack[i] = storageMenu.transform.FindChild("" + i).GetChild(1).gameObject;
+        }
+        for (int i = 0; i < Core.settingAmountPages; i++)
+        {
+          ___storageButton[i] = storageMenu.transform.FindChild("page" + i).gameObject;
+        }
       }
       return false;
     }

+ 1 - 1
StorageExpansion.cs

@@ -8,7 +8,7 @@ namespace StorageExpansion
   [Gadget("StorageExpansion", RequiredOnClients: false, LoadBefore: new string[] { "QuickStack" })]
   public class StorageExpansion : Gadget<StorageExpansion>
   {
-    public const string MOD_VERSION = "1.2"; // Set this to the version of your mod.
+    public const string MOD_VERSION = "1.3"; // Set this to the version of your mod.
     public const string CONFIG_VERSION = "1.0"; // Increment this whenever you change your mod's config file.
 
     protected override void LoadConfig()