| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- using GadgetCore.API;
- using HarmonyLib;
- using System;
- using UnityEngine;
- namespace StorageExpansion.Patches
- {
- [HarmonyPatch(typeof(GameScript))]
- [HarmonyPatch("InitializeStorage")]
- [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)
- {
- 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++)
- {
- ___storageButton[i] = storageMenu.transform.FindChild("page" + i).gameObject;
- }
- return false;
- }
- private static PositionSet GetSizes()
- {
- switch (Core.settingSizeEnum)
- {
- //case StorageSizeEnum.UltraSmall:
- // 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.settingAmountActualPages = 2 * 7;
- Core.settingAmountActualSlots = 6 * 7;
- break;
- case StorageSizeEnum.Larger:
- Core.settingAmountActualPages = 2 * 7;
- Core.settingAmountActualSlots = 6 * 8;
- break;
- case StorageSizeEnum.MegaLarge:
- Core.settingAmountActualPages = 4 * 7;
- Core.settingAmountActualSlots = 6 * 8;
- break;
- case StorageSizeEnum.UltraLarge:
- Core.settingAmountActualPages = 10 * 7;
- Core.settingAmountActualSlots = 6 * 8;
- break;
- case StorageSizeEnum.PagesOnly:
- Core.settingAmountActualPages = 3 * 9;
- Core.settingAmountActualSlots = 6 * 5;
- break;
- default:
- 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 bool IsLargeMode()
- {
- switch (Core.settingSizeEnum)
- {
- //case StorageSizeEnum.UltraSmall:
- case StorageSizeEnum.Small:
- case StorageSizeEnum.Large:
- case StorageSizeEnum.PagesOnly:
- return false;
- case StorageSizeEnum.Larger:
- case StorageSizeEnum.MegaLarge:
- case StorageSizeEnum.UltraLarge:
- return true;
- default:
- return false;
- }
- }
- private static bool HasSmallPageButtons()
- {
- switch (Core.settingSizeEnum)
- {
- case StorageSizeEnum.UltraLarge:
- return true;
- default:
- return false;
- }
- }
- }
- }
|