Advertisement
evelynshilosky

InventorySystem - Part 8

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