Advertisement
evelynshilosky

InventorySystem - Part 35

Mar 19th, 2024
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.18 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. public class InventorySystem : MonoBehaviour
  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.     public Text pickupName;
  32.     public Image pickupImage;
  33.  
  34.     public List<string> itemsPickedup;
  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.  
  69.     }
  70.  
  71.  
  72.     void Update()
  73.     {
  74.  
  75.         if (Input.GetKeyDown(KeyCode.I) && !isOpen && !ConstructionManager.Instance.inConstructionMode && !QuestManager.Instance.isQuestMenuOpen)
  76.         {
  77.             OpenUI();
  78.         }
  79.         else if (Input.GetKeyDown(KeyCode.I) && isOpen)
  80.         {
  81.             CloseUI();
  82.         }
  83.     }
  84.  
  85.     public void OpenUI()
  86.     {
  87.         inventoryScreenUI.SetActive(true);
  88.  
  89.         inventoryScreenUI.GetComponentInParent<Canvas>().sortingOrder = MenuManager.Instance.SetAsFront();
  90.  
  91.         Cursor.lockState = CursorLockMode.None;
  92.         Cursor.visible = true;
  93.  
  94.         SelectionManager.Instance.DisableSelection();
  95.         SelectionManager.Instance.GetComponent<SelectionManager>().enabled = false;
  96.  
  97.         isOpen = true;
  98.     }
  99.  
  100.  
  101.     public void CloseUI()
  102.     {
  103.         inventoryScreenUI.SetActive(false);
  104.  
  105.  
  106.         if (!CraftingSystem.Instance.isOpen && !StorageManager.Instance.storageUIOpen && !CampfireUIManager.Instance.isUIOpen)
  107.         {
  108.             Cursor.lockState = CursorLockMode.Locked;
  109.             Cursor.visible = false;
  110.  
  111.             SelectionManager.Instance.EnableSelection();
  112.             SelectionManager.Instance.GetComponent<SelectionManager>().enabled = true;
  113.         }
  114.  
  115.         isOpen = false;
  116.     }
  117.  
  118.  
  119.  
  120.     public void AddToInventory(string itemName)
  121.     {
  122.         if (SaveManager.Instance.isLoading == false)
  123.         {
  124.             SoundManager.Instance.PlaySound(SoundManager.Instance.pickupItemSound);
  125.         }
  126.  
  127.         whatSlotToEquip = FindNextEmptySlot();
  128.  
  129.         itemToAdd = Instantiate(Resources.Load<GameObject>(itemName), whatSlotToEquip.transform.position, whatSlotToEquip.transform.rotation);
  130.         itemToAdd.transform.SetParent(whatSlotToEquip.transform);
  131.  
  132.  
  133.         itemList.Add(itemName);
  134.  
  135.  
  136.         TriggerPickupPopUp(itemName, itemToAdd.GetComponent<Image>().sprite);
  137.  
  138.         // -- For debugging we don't want to use the Save Manager -- \\
  139.  
  140.         //if (SaveManager.Instance.isLoading == false)
  141.         //{
  142.         //  SoundManager.Instance.PlaySound(SoundManager.Instance.pickupItemSound);
  143.         //  TriggerPickupPopUp(itemName, itemToAdd.GetComponent<Image>().sprite);
  144.         //}
  145.  
  146.         ReCalculateList();
  147.         CraftingSystem.Instance.RefreshNeededItems();
  148.  
  149.         QuestManager.Instance.RefreshTrackerList();
  150.     }
  151.  
  152.  
  153.  
  154.  
  155.     void TriggerPickupPopUp(string itemName, Sprite itemSprite)
  156.     {
  157.  
  158.         pickupAlert.SetActive(true);
  159.  
  160.  
  161.         pickupName.text = itemName;
  162.         pickupImage.sprite = itemSprite;
  163.  
  164.         StartCoroutine(Calculate());
  165.     }
  166.    
  167.     IEnumerator Calculate()
  168.     {
  169.  
  170.         yield return new WaitForSeconds(2f);
  171.         pickupAlert.SetActive(false);
  172.  
  173.     }
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.         private GameObject FindNextEmptySlot()
  182.     {
  183.         foreach(GameObject slot in slotList)
  184.         {
  185.  
  186.             if (slot.transform.childCount == 0)
  187.             {
  188.               //  Debug.Log(slotList);
  189.                 return slot;
  190.  
  191.             }
  192.         }
  193.  
  194.         return new GameObject();
  195.     }
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.     public bool CheckSlotsAvailable(int emptyNeeded)
  203.     {
  204.  
  205.         int emptySlot = 0;
  206.  
  207.         foreach (GameObject slot in slotList)
  208.         {
  209.             if (slot.transform.childCount <= 0)
  210.             {
  211.                 emptySlot ++;
  212.             }
  213.         }
  214.  
  215.         if (emptySlot >= emptyNeeded)
  216.         {
  217.             return true;
  218.         }
  219.         else
  220.         {
  221.             return false;
  222.         }
  223.     }
  224.  
  225.  
  226.  
  227.     public void RemoveItem(string nameToRemove, int amountToRemove)
  228.     {
  229.  
  230.  
  231.         int counter = amountToRemove;
  232.  
  233.         for (var i = slotList.Count - 1; i>=0; i--)
  234.         {
  235.  
  236.             if (slotList[i].transform.childCount>0)
  237.             {
  238.  
  239.                 if (slotList[i].transform.GetChild(0).name == nameToRemove+"(Clone)" && counter!=0)
  240.                 {
  241.  
  242.                     Destroy(slotList[i].transform.GetChild(0).gameObject);
  243.  
  244.                     counter--;
  245.  
  246.                 }
  247.             }
  248.         }
  249.  
  250.         ReCalculateList();
  251.         CraftingSystem.Instance.RefreshNeededItems();
  252.         QuestManager.Instance.RefreshTrackerList();
  253.     }
  254.  
  255.     public void ReCalculateList()
  256.     {
  257.         itemList.Clear();
  258.  
  259.         foreach (GameObject slot in slotList)
  260.         {
  261.             if (slot.transform.childCount>0)
  262.             {
  263.  
  264.                 string name = slot.transform.GetChild(0).name; //Stone (Clone)
  265.                 string str2 = "(Clone)";
  266.                 string result = name.Replace(str2, "");
  267.  
  268.                 itemList.Add(result); //Stone
  269.             }
  270.         }
  271.  
  272.  
  273.     }
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.     public int CheckItemAmount(string name)
  282.     {
  283.         int itemCounter = 0;
  284.  
  285.         foreach (string item in itemList)
  286.         {
  287.             if (item == name)
  288.             {
  289.                 itemCounter++;
  290.             }
  291.         }
  292.         return itemCounter;
  293.     }
  294.  
  295.  
  296.  
  297. }
  298.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement