Advertisement
evelynshilosky

InventorySystem - Part 9

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