Advertisement
evelynshilosky

EquipSystem - Part 32

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