Advertisement
evelynshilosky

InventorySystem - Part 11

Jun 3rd, 2024
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.11 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5.  
  6. public class InventorySystem : MonoBehaviour
  7. {
  8.    
  9.  
  10. public GameObject ItemInfoUI;
  11.  
  12. public static InventorySystem Instance { get; set; }
  13.  
  14.     public GameObject inventoryScreenUI;
  15.  
  16.     public List<GameObject> slotList = new List<GameObject>();
  17.  
  18.     public List<string> itemList = new List<string>();
  19.  
  20.     private GameObject itemToAdd;
  21.  
  22.     private GameObject whatSlotToEquip;
  23.  
  24.     public bool isOpen;
  25.  
  26.     //public bool isFull;
  27.  
  28.  
  29.     //PickUpPopUP    
  30.     public GameObject pickupAlert;
  31.    
  32.     public Text pickupName;
  33.    
  34.     public Image pickupImage;
  35.  
  36.     private void Awake()
  37.     {
  38.         if (Instance != null && Instance != this)
  39.         {
  40.             Destroy(gameObject);
  41.         }
  42.         else
  43.         {
  44.             Instance = this;
  45.         }
  46.     }
  47.     void Start()
  48.     {
  49.         isOpen = false;
  50.         PopulateSlotList();
  51.     }
  52.     private void PopulateSlotList()
  53.     {
  54.         foreach (Transform child in inventoryScreenUI.transform)
  55.         {
  56.             if (child.CompareTag("Slot"))
  57.             {
  58.                 slotList.Add(child.gameObject);
  59.             }
  60.         }
  61.     }
  62.     void Update()
  63.     {
  64.         if (Input.GetKeyDown(KeyCode.I) && !isOpen)
  65.         {
  66.             inventoryScreenUI.SetActive(true);
  67.             Cursor.lockState = CursorLockMode.None;
  68.             isOpen = true;
  69.         }
  70.         else if (Input.GetKeyDown(KeyCode.I) && isOpen)
  71.         {
  72.             inventoryScreenUI.SetActive(false);
  73.             if (!CraftingSystem.Instance.isOpen) {
  74.                 Cursor.lockState = CursorLockMode.Locked;
  75.             }
  76.             isOpen = false;
  77.         }
  78.     }
  79.     public void AddToInventory(string itemName)
  80.     {
  81.         whatSlotToEquip = FindNextEmptySlot();
  82.         itemToAdd = Instantiate(Resources.Load<GameObject>(itemName), whatSlotToEquip.transform.position, whatSlotToEquip.transform.rotation);
  83.         itemToAdd.transform.SetParent(whatSlotToEquip.transform);
  84.         itemList.Add(itemName);
  85.         TriggerPickupPopUp(itemName, itemToAdd.GetComponent<Image>().sprite);
  86.         ReCalculateList();
  87.         CraftingSystem.Instance.RefreshNeededItems();
  88.     }
  89.     void TriggerPickupPopUp(string itemName, Sprite itemSprite)
  90.     {
  91.         pickupAlert.SetActive(true);
  92.         pickupName.text = itemName;
  93.         pickupImage.sprite = itemSprite;
  94.     }
  95.         private GameObject FindNextEmptySlot()
  96.     {
  97.         foreach(GameObject slot in slotList)
  98.         {
  99.             if (slot.transform.childCount == 0)
  100.             {
  101.                 return slot;
  102.             }
  103.         }
  104.         return new GameObject();
  105.     }
  106.     public bool CheckIfFull()
  107.     {
  108.         int counter = 0;
  109.         foreach (GameObject slot in slotList)
  110.         {
  111.             if (slot.transform.childCount > 0)
  112.             {
  113.                 counter++;
  114.             }
  115.         }
  116.         if (counter == 21)
  117.         {
  118.             return true;
  119.         }
  120.         else
  121.         {
  122.             return false;
  123.         }
  124.     }
  125.     public void RemoveItem(string nameToRemove, int amountToRemove)
  126.     {
  127.         int counter = amountToRemove;
  128.         for (var i = slotList.Count - 1; i>=0; i--)
  129.         {
  130.             if (slotList[i].transform.childCount>0)
  131.             {
  132.                 if (slotList[i].transform.GetChild(0).name == nameToRemove+"(Clone)" && counter!=0)
  133.                 {
  134.                     Destroy(slotList[i].transform.GetChild(0).gameObject);
  135.                     counter--;
  136.                 }
  137.             }
  138.         }
  139.         ReCalculateList();
  140.         CraftingSystem.Instance.RefreshNeededItems();
  141.     }
  142.     public void ReCalculateList()
  143.     {
  144.         itemList.Clear();
  145.  
  146.         foreach (GameObject slot in slotList)
  147.         {
  148.             if (slot.transform.childCount>0)
  149.             {
  150.                 string name = slot.transform.GetChild(0).name; //Stone (Clone)
  151.                 string str2 = "(Clone)";
  152.                 string result = name.Replace(str2, "");
  153.  
  154.                 itemList.Add(result); //Stone
  155.             }
  156.         }
  157.     }
  158.  
  159. }
  160.  
  161.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement