Advertisement
evelynshilosky

InventorySystem - Part 12

Jun 4th, 2024
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.78 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6.  
  7.  
  8. public class InventorySystem : MonoBehaviour
  9. {
  10.     public static InventorySystem Instance { get; set; }
  11.  
  12.     public GameObject inventoryScreenUI;
  13.  
  14.     public List<GameObject> slotList = new List<GameObject>();
  15.  
  16.     public List<string> itemList = new List<string>();
  17.  
  18.     private GameObject itemToAdd;
  19.  
  20.     private GameObject whatSlotToEquip;
  21.  
  22.     public bool isOpen;
  23.  
  24.     //public bool isFull;
  25.  
  26.  
  27.     //PickUpPopUP
  28.     public GameObject pickupAlert;
  29.     public Text pickupName;
  30.     public Image pickupImage;
  31.  
  32.     // ItemInfoUI
  33.     public GameObject ItemInfoUI;
  34.  
  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.  
  48.  
  49.     void Start()
  50.     {
  51.         isOpen = false;
  52.         PopulateSlotList();
  53.  
  54.         Cursor.visible = false;
  55.     }
  56.  
  57.     private void PopulateSlotList()
  58.     {
  59.         foreach (Transform child in inventoryScreenUI.transform)
  60.         {
  61.             if (child.CompareTag("Slot"))
  62.             {
  63.                 slotList.Add(child.gameObject);
  64.             }
  65.         }
  66.     }
  67.  
  68.     void Update()
  69.     {
  70.  
  71.         if (Input.GetKeyDown(KeyCode.I) && !isOpen)
  72.         {
  73.             inventoryScreenUI.SetActive(true);
  74.             Cursor.lockState = CursorLockMode.None;
  75.             Cursor.visible = true;
  76.  
  77.             SelectionManager.Instance.DisableSelection();
  78.             SelectionManager.Instance.GetComponent<SelectionManager>().enabled = false;
  79.  
  80.             isOpen = true;            
  81.         }
  82.         else if (Input.GetKeyDown(KeyCode.I) && isOpen)
  83.         {
  84.             inventoryScreenUI.SetActive(false);
  85.             if (!CraftingSystem.Instance.isOpen) {
  86.                 Cursor.lockState = CursorLockMode.Locked;
  87.                 Cursor.visible = false;
  88.  
  89.                 SelectionManager.Instance.EnableSelection();
  90.                 SelectionManager.Instance.GetComponent<SelectionManager>().enabled = true;
  91.             }
  92.             isOpen = false;
  93.         }
  94.     }
  95.  
  96.     public void AddToInventory(string itemName)
  97.     {
  98.  
  99.         whatSlotToEquip = FindNextEmptySlot();
  100.  
  101.         itemToAdd = Instantiate(Resources.Load<GameObject>(itemName), whatSlotToEquip.transform.position, whatSlotToEquip.transform.rotation);
  102.         itemToAdd.transform.SetParent(whatSlotToEquip.transform);
  103.  
  104.  
  105.         itemList.Add(itemName);
  106.  
  107.  
  108.         TriggerPickupPopUp(itemName, itemToAdd.GetComponent<Image>().sprite);
  109.  
  110.  
  111.  
  112.         ReCalculateList();
  113.         CraftingSystem.Instance.RefreshNeededItems();
  114.     }
  115.  
  116.     void TriggerPickupPopUp(string itemName, Sprite itemSprite)
  117.     {
  118.  
  119.         pickupAlert.SetActive(true);
  120.         pickupName.text = itemName;
  121.         pickupImage.sprite = itemSprite;
  122.  
  123.         StartCoroutine(Calculate());
  124.     }
  125.     IEnumerator Calculate()
  126.     {
  127.         yield return new WaitForSeconds(2f);
  128.         pickupAlert.SetActive(false);
  129.     }
  130.         private GameObject FindNextEmptySlot()
  131.     {
  132.         foreach(GameObject slot in slotList)
  133.         {
  134.             if (slot.transform.childCount == 0)
  135.             {
  136.                 return slot;
  137.             }
  138.         }
  139.         return new GameObject();
  140.     }
  141.  
  142.     public bool CheckIfFull()
  143.     {
  144.         int counter = 0;
  145.  
  146.         foreach (GameObject slot in slotList)
  147.         {
  148.             if (slot.transform.childCount > 0)
  149.             {
  150.                 counter++;
  151.             }
  152.         }
  153.  
  154.         if (counter == 21)
  155.         {
  156.             return true;
  157.         }
  158.         else
  159.         {
  160.             return false;
  161.         }
  162.     }
  163.  
  164.     public void RemoveItem(string nameToRemove, int amountToRemove)
  165.     {
  166.  
  167.  
  168.         int counter = amountToRemove;
  169.  
  170.         for (var i = slotList.Count - 1; i>=0; i--)
  171.         {
  172.  
  173.             if (slotList[i].transform.childCount>0)
  174.             {
  175.  
  176.                 if (slotList[i].transform.GetChild(0).name == nameToRemove+"(Clone)" && counter!=0)
  177.                 {
  178.  
  179.                     Destroy(slotList[i].transform.GetChild(0).gameObject);
  180.  
  181.                     counter--;
  182.  
  183.                 }
  184.             }
  185.         }
  186.  
  187.         ReCalculateList();
  188.         CraftingSystem.Instance.RefreshNeededItems();
  189.  
  190.     }
  191.  
  192.     public void ReCalculateList()
  193.     {
  194.         itemList.Clear();
  195.  
  196.         foreach (GameObject slot in slotList)
  197.         {
  198.             if (slot.transform.childCount>0)
  199.             {
  200.  
  201.                 string name = slot.transform.GetChild(0).name; //Stone (Clone)
  202.                 string str2 = "(Clone)";
  203.                 string result = name.Replace(str2, "");
  204.  
  205.                 itemList.Add(result); //Stone
  206.             }
  207.         }
  208.     }
  209.  
  210. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement