Browse Source

[2.0.4.6] Rework to remove asset bundles

Zariteis 4 years ago
parent
commit
395336a8e7

BIN
Assets/menuStorage2x1x2.png


BIN
Assets/menuStorage3x3x3.png


BIN
Assets/menuStorage6x7x14vert.png


BIN
Assets/menuStorage6x8x14vert.png


BIN
Assets/menustorage6x5x27


BIN
Assets/menustorage6x7x14


BIN
Assets/menustorage6x8x14


BIN
Assets/menustorage6x8x28


BIN
Assets/menustorage6x8x70


+ 3 - 3
Core.cs

@@ -12,9 +12,9 @@ namespace StorageExpansion
     public static GadgetLogger logger;
 
     public static int settingAmountPages = 14;
-    public static int settingAmountSlots = 8 * 6;
-
-    public static string firstPrefabPath = null;
+    public static int settingAmountActualPages = 14;
+    public static int settingAmountSlots = 8 * 5;
+    public static int settingAmountActualSlots = 8 * 6;
 
     public static StorageSizeEnum settingSizeEnum = StorageSizeEnum.Large;
   }

+ 146 - 84
Patches/Patch_GameScript_InitializeStorage.cs

@@ -11,34 +11,19 @@ namespace StorageExpansion.Patches
   [HarmonyGadget("StorageExpansion")]
   public static class Patch_GameScript_InitializeStorage
   {
+    private static Material materialUpgradeButton = new Material(Shader.Find("Unlit/Transparent")) { mainTexture = GadgetCoreAPI.LoadTexture2D("menuStorageButtonBig.png") };
+    private static Material materialUpgradeButtonSelected = new Material(Shader.Find("Unlit/Transparent")) { mainTexture = GadgetCoreAPI.LoadTexture2D("menuStorageButtonBig2.png") };
+    private static Material materialPageButtonLockSmall = new Material(Shader.Find("Unlit/Transparent")) { mainTexture = GadgetCoreAPI.LoadTexture2D("bStorageLockedSmall.png") };
+    private static Material materialPageButtonFrameSmall = new Material(Shader.Find("Unlit/Transparent")) { mainTexture = GadgetCoreAPI.LoadTexture2D("storageSelectSmall.png") };
+
     [HarmonyPrefix]
     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)
     {
-      if (Core.firstPrefabPath == null)
-      {
-        Core.firstPrefabPath = GetPrefabname();
-        SetSizes();
-      }
-      var path = Core.firstPrefabPath;
-      try
-      {
-        var asset = GadgetCoreAPI.LoadAssetBundle(path);
-
-        var storageMenuOld = GameObject.Find("Main Camera").transform.Find("menuStorage").gameObject;
-        GameObject.DestroyImmediate(storageMenuOld);
-
-        var storageMenuNew = UnityEngine.Object.Instantiate((GameObject)asset.LoadAsset("assets/resources/menustorage.prefab"));
-        storageMenuNew.SetActive(false);
-        storageMenuNew.name = "menuStorage";
-        storageMenuNew.transform.SetParent(GameObject.Find("Main Camera").transform);
-        storageMenuNew.transform.localPosition = new Vector3(8, 1.5f, 2);
-        storageMenuNew.transform.localScale = new Vector3(16, 16, 1);
-      }
-      catch (System.Exception e) { Core.logger.Log(e.Message); }
+      UpdateSizes();
 
       ___storage = new Item[Core.settingAmountPages * Core.settingAmountSlots];
-      for (int i = 0; i < (Core.settingAmountPages * Core.settingAmountSlots); i++)
+      for (int i = 0; i < ___storage.Length; i++)
       {
         ___storage[i] = new Item(0, 0, 0, 0, 0, new int[3], new int[3]);
       }
@@ -50,12 +35,72 @@ namespace StorageExpansion.Patches
       ___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;
@@ -67,105 +112,122 @@ namespace StorageExpansion.Patches
       {
         ___storageButton[i] = storageMenu.transform.FindChild("page" + i).gameObject;
       }
-      postBuildQuickStackButton();
       return false;
     }
 
-    private static void SetSizes()
+    private static PositionSet GetSizes()
     {
       switch (Core.settingSizeEnum)
       {
         //case StorageSizeEnum.UltraSmall:
-        //  Core.settingAmountPages = 2;
-        //  Core.settingAmountSlots = 2;
-        //  break;
-        //case StorageSizeEnum.Smaller:
-        //  Core.settingAmountPages = 3;
-        //  Core.settingAmountSlots = 3 * 3;
+        //  return new PositionSet(-0.33625f, -0.101500f, 1.410644f, 1, -0.187f, -0.1015f, 0.97f, 1);
+        case StorageSizeEnum.Small:
+          return new PositionSet(-0.33625f, -0.101500f, 1.410644f, 3, 0.0783f, -0.1015f, 0.97f, 1);
+        case StorageSizeEnum.Large:
+          return new PositionSet(-0.33625f, -0.101500f, 1.410644f, 6, 0.4767f, -0.1015f, 0.97f, -7);
+        case StorageSizeEnum.Larger:
+          return new PositionSet(-0.33625f, -0.234600f, 1.410644f, 6, 0.4767f, -0.1015f, 0.97f, -7);
+        case StorageSizeEnum.MegaLarge:
+          return new PositionSet(-0.33625f, -0.234600f, 1.410644f, 6, 0.4767f, -0.1015f, 0.97f, -7);
+        case StorageSizeEnum.UltraLarge:
+          return new PositionSet(-0.33625f, -0.234600f, 1.410644f, 6, 0.4376f, -0.1015f, 0.97f, -7);
+        case StorageSizeEnum.PagesOnly:
+          return new PositionSet(-0.33625f, 0.1640625f, 1.410644f, 6, 0.4766f, -0.3828f, 0.97f, -9);
+        default:
+          return new PositionSet(-0.33625f, 0.1640625f, 1.410644f, 6, 0.4766f, -0.3828f, 0.97f, -9);
+      }
+    }
+
+    private static Texture2D GetTexture()
+    {
+      switch (Core.settingSizeEnum)
+      {
+        //case StorageSizeEnum.UltraSmall:
+        //  return GadgetCoreAPI.LoadTexture2D("menuStorage2x1x2.png");
+        case StorageSizeEnum.Small:
+          return GadgetCoreAPI.LoadTexture2D("menuStorage3x3x3.png");
+        case StorageSizeEnum.Large:
+          return GadgetCoreAPI.LoadTexture2D("menustorage6x7x14.png");
+        case StorageSizeEnum.Larger:
+          return GadgetCoreAPI.LoadTexture2D("menustorage6x8x14.png");
+        case StorageSizeEnum.MegaLarge:
+          return GadgetCoreAPI.LoadTexture2D("menustorage6x8x28.png");
+        case StorageSizeEnum.UltraLarge:
+          return GadgetCoreAPI.LoadTexture2D("menustorage6x8x70.png");
+        case StorageSizeEnum.PagesOnly:
+          return GadgetCoreAPI.LoadTexture2D("menuStorage6x5x27.png");
+        default:
+          return GadgetCoreAPI.LoadTexture2D("menuStorage6x5x27.png");
+      }
+    }
+
+    private static void UpdateSizes()
+    {
+      switch (Core.settingSizeEnum)
+      {
+        //case StorageSizeEnum.UltraSmall:
+        //  Core.settingAmountActualPages = 2;
+        //  Core.settingAmountActualSlots = 2;
         //  break;
+        case StorageSizeEnum.Small:
+          Core.settingAmountActualPages = 3;
+          Core.settingAmountActualSlots = 3 * 3;
+          break;
         case StorageSizeEnum.Large:
-          Core.settingAmountPages = 14;
-          Core.settingAmountSlots = 7 * 6;
+          Core.settingAmountActualPages = 2 * 7;
+          Core.settingAmountActualSlots = 6 * 7;
           break;
         case StorageSizeEnum.Larger:
-          Core.settingAmountPages = 14;
-          Core.settingAmountSlots = 8 * 6;
+          Core.settingAmountActualPages = 2 * 7;
+          Core.settingAmountActualSlots = 6 * 8;
           break;
         case StorageSizeEnum.MegaLarge:
-          Core.settingAmountPages = 28;
-          Core.settingAmountSlots = 8 * 6;
+          Core.settingAmountActualPages = 4 * 7;
+          Core.settingAmountActualSlots = 6 * 8;
           break;
         case StorageSizeEnum.UltraLarge:
-          Core.settingAmountPages = 70;
-          Core.settingAmountSlots = 8 * 6;
+          Core.settingAmountActualPages = 10 * 7;
+          Core.settingAmountActualSlots = 6 * 8;
           break;
         case StorageSizeEnum.PagesOnly:
-          Core.settingAmountPages = 27;
-          Core.settingAmountSlots = 5 * 6;
+          Core.settingAmountActualPages = 3 * 9;
+          Core.settingAmountActualSlots = 6 * 5;
           break;
         default:
-          Core.settingAmountPages = 14;
-          Core.settingAmountSlots = 7 * 6;
+          Core.settingAmountActualPages = 3 * 9;
+          Core.settingAmountActualSlots = 6 * 5;
           break;
       }
+      Core.settingAmountPages = Math.Max(Core.settingAmountActualPages, 6 * 2);
+      Core.settingAmountSlots = Math.Max(Core.settingAmountActualSlots, 6 * 5);
     }
 
-    private static string GetPrefabname()
+    private static bool IsLargeMode()
     {
       switch (Core.settingSizeEnum)
       {
         //case StorageSizeEnum.UltraSmall:
-        //  return "menustorage2x1x2";
-        //case StorageSizeEnum.Smaller:
-        //  return "menustorage3x3x3";
+        case StorageSizeEnum.Small:
         case StorageSizeEnum.Large:
-          return "menustorage6x7x14";
+        case StorageSizeEnum.PagesOnly:
+          return false;
         case StorageSizeEnum.Larger:
-          return "menustorage6x8x14";
         case StorageSizeEnum.MegaLarge:
-          return "menustorage6x8x28";
         case StorageSizeEnum.UltraLarge:
-          return "menustorage6x8x70";
-        case StorageSizeEnum.PagesOnly:
-          return "menustorage6x5x27";
+          return true;
         default:
-          return "menustorage6x7x14";
+          return false;
       }
     }
 
-    private static void postBuildQuickStackButton()
+    private static bool HasSmallPageButtons()
     {
-      Type t = null;
-      foreach (var a in AppDomain.CurrentDomain.GetAssemblies())
-      {
-        if (a.FullName.StartsWith("QuickStack,"))
-        {
-          t = a.GetType("QuickStack.StackButtonScript");
-          break;
-        }
-      }
-      bool isEnabled = false;
-      foreach (var gadget in GadgetCore.API.Gadgets.ListAllEnabledGadgets())
-        if (gadget.Info?.ModName == "Quick Stack")
-        {
-          isEnabled = true;
-          break;
-        }
-      if (t != null && isEnabled)
+      switch (Core.settingSizeEnum)
       {
-        var storageMenu = GameObject.Find("Main Camera").transform.Find("menuStorage").gameObject;
-        var pagge0 = storageMenu.transform.Find("page0");
-        var btn = UnityEngine.Object.Instantiate(pagge0, pagge0.transform.parent).gameObject;
-        btn.name = "button_quick_stack";
-
-        Component.Destroy(btn.GetComponentInChildren<ButtonMenu>());
-        btn.AddComponent(t);
-
-        btn.GetComponentInChildren<BoxCollider>().size = new Vector3(2, 2, 2);
-
-        btn.transform.SetParent(storageMenu.transform);
-        btn.transform.localPosition = new Vector3(-0.5075f, 0.3595f, 0);
-        btn.transform.localScale = new Vector3(1f / 16f, 1f / 16f, 1);
+        case StorageSizeEnum.UltraLarge:
+          return true;
+        default:
+          return false;
       }
     }
   }

+ 1 - 1
Patches/Patch_GameScript_Storage.cs

@@ -27,7 +27,7 @@ namespace StorageExpansion.Patches
           }
         }
         int storageUpgradeCost = __instance.GetStorageUpgradeCost(___storageLevel);
-        if (___storageLevel == __instance.storageButton.Length - 1)
+        if (___storageLevel >= Core.settingAmountActualPages - 1)
         {
           __instance.txtStorageCost[0].text = "Max Lvl";
           __instance.txtStorageCost[1].text = "Max Lvl";

+ 2 - 2
Patches/Patch_GameScript_UpgradeStorage.cs

@@ -13,7 +13,7 @@ namespace StorageExpansion.Patches
     [HarmonyPrefix]
     public static bool Prefix(GameScript __instance, ref int ___storageLevel)
     {
-			if (___storageLevel < __instance.storageButton.Length)
+			if (___storageLevel < Core.settingAmountActualPages - 1)
 			{
 				int storageUpgradeCost = __instance.GetStorageUpgradeCost(___storageLevel);
 				if (__instance.GetCredits() >= storageUpgradeCost)
@@ -35,7 +35,7 @@ namespace StorageExpansion.Patches
             }
           }
           int newStorageUpgradeCost = __instance.GetStorageUpgradeCost(___storageLevel);
-          if (___storageLevel == __instance.storageButton.Length - 1)
+          if (___storageLevel >= Core.settingAmountActualPages - 1)
           {
             __instance.txtStorageCost[0].text = "Max Lvl";
             __instance.txtStorageCost[1].text = "Max Lvl";

+ 3 - 3
StorageExpansion.cs

@@ -5,7 +5,7 @@ using UnityEngine.SceneManagement;
 
 namespace StorageExpansion
 {
-  [Gadget("StorageExpansion", LoadBefore: new string[] { "QuickStack" })]
+  [Gadget("StorageExpansion", RequiredOnClients: false, LoadBefore: new string[] { "QuickStack" })]
   public class StorageExpansion : Gadget<StorageExpansion>
   {
     public const string MOD_VERSION = "1.0"; // Set this to the version of your mod.
@@ -21,8 +21,8 @@ namespace StorageExpansion
         Config.WriteString("ConfigVersion", CONFIG_VERSION, comments: "The Config Version (not to be confused with mod version)");
       }
 
-      Core.settingSizeEnum = Config.ReadEnum("StorageSize", StorageSizeEnum.Large, requiresRestart: true, comments: new string[] { "How large should your storage be?", "!! Restart required !!" });
-
+      Core.settingSizeEnum = Config.ReadEnum("StorageSize", StorageSizeEnum.Large, requiresRestart: true, comments: new string[] { });
+      
       Config.Save();
     }
 

+ 1 - 19
StorageExpansion.csproj

@@ -95,22 +95,7 @@
     <Message Importance="High" Text="Mod Exported to $(GamePath)GadgetCore\Mods\$(AssemblyName)_v$(AssemblyFileVersion).zip" />
   </Target>
   <ItemGroup>
-    <None Update="Assets\menustorage">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Update="Assets\menustorage6x5x27">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Update="Assets\menustorage6x7x14">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Update="Assets\menustorage6x8x14">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Update="Assets\menustorage6x8x28">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Update="Assets\menustorage6x8x70">
+    <None Update="Assets\**">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </None>
     <None Update="Manifest.ini">
@@ -158,7 +143,4 @@
       <EmbedInteropTypes>false</EmbedInteropTypes>
     </Reference>
   </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Assets\" />
-  </ItemGroup>
 </Project>

+ 2 - 2
StorageSizeEnum.cs

@@ -2,7 +2,7 @@
 {
   public enum StorageSizeEnum
   {
-    //UltraSmall, Smaller, 
-    Large, Larger, MegaLarge, UltraLarge, PagesOnly
+    // UltraSmall
+    Large, Larger, MegaLarge, UltraLarge, PagesOnly, Small
   }
 }