//using System.Collections; using System.Collections.Generic; using UnityEngine; namespace SimpleInventorySystem { public class Inventory : MonoBehaviour { // Start is called before the first frame update public bool hasBeenLooted = false; public bool itemsHaveBeenInstantiated = false; public bool itemsHaveBeenHidden = false; public List prefabs; [HideInInspector] public List itemUIs; //[SerializeField] private Slot[] slots; void Start() { itemUIs = new List(); } // Update is called once per frame void Update() { } /// /// Instantiates the item prefab first and calls necessary stuff. /// public void Loot() { if (!hasBeenLooted && prefabs != null) { for (int i = 0; i < prefabs.Count; i++) { if (prefabs[i] == null) { //prefabs.Remove(prefabs[i]); continue; } else { GameObject gObj = Instantiate(prefabs[i]); ItemUI item = gObj.GetComponentInChildren(); PickUp pickUp = gObj.GetComponentInChildren(); gObj.SetActive(true); gObj.transform.position = Vector3.zero; gObj.transform.SetParent(InventorySystem.instance.DefaultItemSpawn, false); if(gObj.GetComponent() != null) gObj.GetComponent().useGravity = false; if(item != null) { item.gameObject.SetActive(true); pickUp.gameObject.SetActive(true); AddOwnership(item, this); //item.transform.SetParent(transform, true); item.InitializeImageSize(); item.ResetTransform(); //gObj.transform.SetParent(item.transform, true); //gObj.SetActive(false); //item.pickUp = gObj.GetComponentInChildren(); } Invoke(nameof(HideGameObjects), .1f); } } Debug.Log(itemUIs.Count); hasBeenLooted = true; itemsHaveBeenInstantiated = true; } else { hasBeenLooted = true; } } void HideGameObjects() { if (hasBeenLooted && itemsHaveBeenInstantiated && !itemsHaveBeenHidden) { foreach (ItemUI item in itemUIs) { Debug.Log(item.gameObject.name); Debug.Log(item.pickUp.gameObject.name); item.pickUp.ItemGameObject.SetActive(false); } itemsHaveBeenHidden = true; } } public void RemoveOwnership(ItemUI item, Inventory newOwnerInventory) { item.Inventory = newOwnerInventory; //items.Remove(item.pickUp.ItemGameObject); itemUIs.Remove(item); newOwnerInventory.AddOwnership(item, this); } public void AddOwnership(ItemUI item, Inventory oldOwnerInventory) { //items.Add(item.pickUp.ItemGameObject); itemUIs.Add(item); //item.Inventory = this; } } }