Advertisement
evelynshilosky

EquipSystem - Part 12

Jun 4th, 2024
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.79 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5.  
  6. public class EquipSystem : MonoBehaviour
  7. {
  8.     public static EquipSystem Instance { get; set; }
  9.  
  10.     // -- UI -- //
  11.     public GameObject quickSlotsPanel;
  12.  
  13.     public List<GameObject> quickSlotsList = new List<GameObject>();
  14.    
  15.  
  16.     public GameObject numbersHolder;
  17.  
  18.     public int selectedNumber = -1;
  19.     public GameObject selectedItem;
  20.  
  21.  
  22.  
  23.     private void Awake()
  24.     {
  25.         if (Instance != null && Instance != this)
  26.         {
  27.             Destroy(gameObject);
  28.         }
  29.         else
  30.         {
  31.             Instance = this;
  32.         }
  33.     }
  34.  
  35.  
  36.     private void Start()
  37.     {
  38.         PopulateSlotList();
  39.     }
  40.  
  41.     void Update()
  42.     {
  43.  
  44.         if (Input.GetKeyDown(KeyCode.Alpha1))
  45.         {
  46.             SelectQuickSlot(1);
  47.         }
  48.         else if (Input.GetKeyDown(KeyCode.Alpha2))
  49.         {
  50.             SelectQuickSlot(2);
  51.         }
  52.         else if (Input.GetKeyDown(KeyCode.Alpha3))
  53.         {
  54.             SelectQuickSlot(3);
  55.         }
  56.         else if (Input.GetKeyDown(KeyCode.Alpha4))
  57.         {
  58.             SelectQuickSlot(4);
  59.         }
  60.         else if (Input.GetKeyDown(KeyCode.Alpha5))
  61.         {
  62.             SelectQuickSlot(5);
  63.         }
  64.         else if (Input.GetKeyDown(KeyCode.Alpha6))
  65.         {
  66.             SelectQuickSlot(6);
  67.         }
  68.         else if (Input.GetKeyDown(KeyCode.Alpha7))
  69.         {
  70.             SelectQuickSlot(7);
  71.         }
  72.  
  73.  
  74.     }
  75.  
  76.  
  77.     void SelectQuickSlot(int number)
  78.     {
  79.         if (checkIfSlotIsFull(number) == true)
  80.         {
  81.             if (selectedNumber != number)
  82.             {
  83.                 selectedNumber = number;
  84.  
  85.                 // Unselect Previously selected item
  86.                 if (selectedItem != null)
  87.                 {
  88.                     selectedItem.gameObject.GetComponent<InventoryItem>().isSelected = false;
  89.                 }
  90.  
  91.                 selectedItem = getSelectedItem(number);
  92.                 selectedItem.GetComponent<InventoryItem>().isSelected = true;
  93.  
  94.  
  95.                 // Change Color
  96.  
  97.                 foreach (Transform child in numbersHolder.transform)
  98.                 {
  99.                     child.transform.Find("Text").GetComponent<Text>().color = Color.gray;
  100.                 }
  101.  
  102.                 Text toBeChanged = numbersHolder.transform.Find("number" + number).transform.Find("Text").GetComponent<Text>();
  103.                 toBeChanged.color = Color.white;
  104.             }
  105.             else // Trying to select the same slot
  106.             {
  107.                 selectedNumber = -1; // null
  108.  
  109.                 // Unselect Previously selected item
  110.                 if (selectedItem != null)
  111.                 {
  112.                     selectedItem.gameObject.GetComponent<InventoryItem>().isSelected = false;
  113.                     selectedItem = null;
  114.                 }
  115.  
  116.                 // Changing the color
  117.                 foreach (Transform child in numbersHolder.transform)
  118.                 {
  119.                     child.transform.Find("Text").GetComponent<Text>().color = Color.gray;
  120.                 }
  121.             }
  122.  
  123.         }
  124.  
  125.  
  126.     }
  127.  
  128.     GameObject getSelectedItem(int slotNumber)
  129.     {
  130.         return quickSlotsList[slotNumber - 1].transform.GetChild(0).gameObject;
  131.     }
  132.  
  133.  
  134.     bool checkIfSlotIsFull(int slotNumber)
  135.     {
  136.         if (quickSlotsList[slotNumber-1].transform.childCount > 0)
  137.         {
  138.             return true;
  139.         }
  140.         else
  141.         {
  142.             return false;
  143.         }
  144.  
  145.     }
  146.  
  147.  
  148.     private void PopulateSlotList()
  149.     {
  150.         foreach (Transform child in quickSlotsPanel.transform)
  151.         {
  152.             if (child.CompareTag("QuickSlot"))
  153.             {
  154.                 quickSlotsList.Add(child.gameObject);
  155.             }
  156.         }
  157.     }
  158.  
  159.     public void AddToQuickSlots(GameObject itemToEquip)
  160.     {
  161.         // Find next free slot
  162.         GameObject availableSlot = FindNextEmptySlot();
  163.         // Set transform of our object
  164.         itemToEquip.transform.SetParent(availableSlot.transform, false);
  165.  
  166.         InventorySystem.Instance.ReCalculateList();
  167.  
  168.     }
  169.  
  170.  
  171.     private GameObject FindNextEmptySlot()
  172.     {
  173.         foreach (GameObject slot in quickSlotsList)
  174.         {
  175.             if (slot.transform.childCount == 0)
  176.             {
  177.                 return slot;
  178.             }
  179.         }
  180.         return new GameObject();
  181.     }
  182.  
  183.     public bool CheckIfFull()
  184.     {
  185.  
  186.         int counter = 0;
  187.  
  188.         foreach (GameObject slot in quickSlotsList)
  189.         {
  190.             if (slot.transform.childCount > 0)
  191.             {
  192.                 counter += 1;
  193.             }
  194.         }
  195.  
  196.         if (counter == 7)
  197.         {
  198.             return true;
  199.         }
  200.         else
  201.         {
  202.             return false;
  203.         }
  204.     }
  205. }
  206.  
  207.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement