Advertisement
evelynshilosky

EquipSystem - Part 31

Feb 2nd, 2024
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.31 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 EquipSystem : MonoBehaviour
  8. {
  9.     public static EquipSystem Instance { get; set; }
  10.  
  11.     // -- UI -- //
  12.     public GameObject quickSlotsPanel;
  13.  
  14.     public List<GameObject> quickSlotsList = new List<GameObject>();
  15.    
  16.  
  17.     public GameObject numbersHolder;
  18.  
  19.     public int selectedNumber = -1;
  20.     public GameObject selectedItem;
  21.  
  22.     public GameObject toolHolder;
  23.  
  24.     public GameObject selectedItemModel;
  25.  
  26.  
  27.     private void Awake()
  28.     {
  29.         if (Instance != null && Instance != this)
  30.         {
  31.             Destroy(gameObject);
  32.         }
  33.         else
  34.         {
  35.             Instance = this;
  36.         }
  37.     }
  38.  
  39.  
  40.     private void Start()
  41.     {
  42.         PopulateSlotList();
  43.     }
  44.  
  45.     void Update()
  46.     {
  47.  
  48.         if (Input.GetKeyDown(KeyCode.Alpha1))
  49.         {
  50.             SelectQuickSlot(1);
  51.         }
  52.         else if (Input.GetKeyDown(KeyCode.Alpha2))
  53.         {
  54.             SelectQuickSlot(2);
  55.         }
  56.         else if (Input.GetKeyDown(KeyCode.Alpha3))
  57.         {
  58.             SelectQuickSlot(3);
  59.         }
  60.         else if (Input.GetKeyDown(KeyCode.Alpha4))
  61.         {
  62.             SelectQuickSlot(4);
  63.         }
  64.         else if (Input.GetKeyDown(KeyCode.Alpha5))
  65.         {
  66.             SelectQuickSlot(5);
  67.         }
  68.         else if (Input.GetKeyDown(KeyCode.Alpha6))
  69.         {
  70.             SelectQuickSlot(6);
  71.         }
  72.         else if (Input.GetKeyDown(KeyCode.Alpha7))
  73.         {
  74.             SelectQuickSlot(7);
  75.         }
  76.  
  77.  
  78.     }
  79.  
  80.  
  81.     void SelectQuickSlot(int number)
  82.     {
  83.         if (checkIfSlotIsFull(number) == true)
  84.         {
  85.             if (selectedNumber != number)
  86.             {
  87.                 selectedNumber = number;
  88.  
  89.                 // Unselect Previously selected item
  90.                 if (selectedItem != null)
  91.                 {
  92.                     selectedItem.gameObject.GetComponent<InventoryItem>().isSelected = false;
  93.                 }
  94.  
  95.                 selectedItem = getSelectedItem(number);
  96.                 selectedItem.GetComponent<InventoryItem>().isSelected = true;
  97.  
  98.                 SetEquippedModel(selectedItem);
  99.  
  100.                
  101.                 // Change Color
  102.  
  103.                 foreach (Transform child in numbersHolder.transform)
  104.                 {
  105.                     child.transform.Find("Text").GetComponent<Text>().color = Color.gray;
  106.                 }
  107.  
  108.                 Text toBeChanged = numbersHolder.transform.Find("number" + number).transform.Find("Text").GetComponent<Text>();
  109.                 toBeChanged.color = Color.white;
  110.  
  111.  
  112.  
  113.             }
  114.             else // Trying to select the same slot
  115.             {
  116.                 selectedNumber = -1; // null
  117.  
  118.                 // Unselect Previously selected item
  119.                 if (selectedItem != null)
  120.                 {
  121.                     selectedItem.gameObject.GetComponent<InventoryItem>().isSelected = false;
  122.                     selectedItem = null;
  123.                 }
  124.  
  125.                 if (selectedItemModel != null)
  126.                 {
  127.                     DestroyImmediate(selectedItemModel.gameObject);
  128.                     selectedItemModel = null;
  129.                 }
  130.  
  131.  
  132.                 // Changing the color
  133.                 foreach (Transform child in numbersHolder.transform)
  134.                 {
  135.                     child.transform.Find("Text").GetComponent<Text>().color = Color.gray;
  136.                 }
  137.             }
  138.  
  139.         }
  140.  
  141.  
  142.     }
  143.  
  144.  
  145.  
  146.  
  147.  
  148.     internal int GetWeaponDamage()
  149.     {
  150.         if (selectedItem != null)
  151.         {
  152.             return selectedItem.GetComponent<Weapon>().weaponDamage;
  153.         }
  154.         else
  155.         {
  156.             return 0;
  157.         }
  158.     }
  159.  
  160.     internal bool IsHoldingWeapon()
  161.     {
  162.         if (selectedItem != null)
  163.         {
  164.             if (selectedItem.GetComponent<Weapon>() != null)
  165.             {
  166.                 return true;
  167.             }
  168.             else
  169.             {
  170.                 return false;
  171.             }
  172.         }
  173.         else
  174.         {
  175.             return false;
  176.         }
  177.     }
  178.  
  179.     private void SetEquippedModel(GameObject selectedItem)
  180.     {
  181.  
  182.         if (selectedItemModel != null)
  183.         {
  184.             DestroyImmediate(selectedItemModel.gameObject);
  185.             selectedItemModel = null;
  186.         }
  187.  
  188.         string selectedItemName = selectedItem.name.Replace("(Clone)", "");
  189.         selectedItemModel = Instantiate(Resources.Load<GameObject>(selectedItemName + "_Model"),
  190.             new Vector3(0, 0, 0), Quaternion.Euler(0, 0, 0));
  191.         selectedItemModel.transform.SetParent(toolHolder.transform, false);
  192.     }
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.     GameObject getSelectedItem(int slotNumber)
  201.     {
  202.         return quickSlotsList[slotNumber - 1].transform.GetChild(0).gameObject;
  203.     }
  204.  
  205.  
  206.     bool checkIfSlotIsFull(int slotNumber)
  207.     {
  208.         if (quickSlotsList[slotNumber-1].transform.childCount > 0)
  209.         {
  210.             return true;
  211.         }
  212.         else
  213.         {
  214.             return false;
  215.         }
  216.  
  217.     }
  218.  
  219.  
  220.     private void PopulateSlotList()
  221.     {
  222.         foreach (Transform child in quickSlotsPanel.transform)
  223.         {
  224.             if (child.CompareTag("QuickSlot"))
  225.             {
  226.                 quickSlotsList.Add(child.gameObject);
  227.             }
  228.         }
  229.     }
  230.  
  231.     public void AddToQuickSlots(GameObject itemToEquip)
  232.     {
  233.         // Find next free slot
  234.         GameObject availableSlot = FindNextEmptySlot();
  235.         // Set transform of our object
  236.         itemToEquip.transform.SetParent(availableSlot.transform, false);
  237.  
  238.         InventorySystem.Instance.ReCalculateList();
  239.  
  240.     }
  241.  
  242.  
  243.     public GameObject FindNextEmptySlot()
  244.     {
  245.         foreach (GameObject slot in quickSlotsList)
  246.         {
  247.             if (slot.transform.childCount == 0)
  248.             {
  249.                 return slot;
  250.             }
  251.         }
  252.         return new GameObject();
  253.     }
  254.  
  255.     public bool CheckIfFull()
  256.     {
  257.  
  258.         int counter = 0;
  259.  
  260.         foreach (GameObject slot in quickSlotsList)
  261.         {
  262.             if (slot.transform.childCount > 0)
  263.             {
  264.                 counter += 1;
  265.             }
  266.         }
  267.  
  268.         if (counter == 7)
  269.         {
  270.             return true;
  271.         }
  272.         else
  273.         {
  274.             return false;
  275.         }
  276.     }
  277. }
  278.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement