Advertisement
evelynshilosky

EquipSystem - Part 39

Apr 18th, 2024
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.02 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.  
  86.             if (selectedNumber != number)
  87.             {
  88.  
  89.                 selectedNumber = number;
  90.  
  91.                 // Unselect Previously selected item
  92.                 if (selectedItem != null)
  93.                 {
  94.                     selectedItem.gameObject.GetComponent<InventoryItem>().isSelected = false;
  95.                 }
  96.  
  97.                 selectedItem = GetSelectedItem(number);
  98.                 selectedItem.GetComponent<InventoryItem>().isSelected = true;
  99.                
  100.                 SetEquippedModel(selectedItem);
  101.                
  102.                
  103.                 // Change Color
  104.  
  105.                 foreach (Transform child in numbersHolder.transform)
  106.                 {
  107.                     child.transform.Find("Text").GetComponent<Text>().color = Color.gray;
  108.                 }
  109.  
  110.                 Text toBeChanged = numbersHolder.transform.Find("number" + number).transform.Find("Text").GetComponent<Text>();
  111.                 toBeChanged.color = Color.white;
  112.  
  113.  
  114.  
  115.             }
  116.             else // Trying to select the same slot
  117.             {
  118.                 selectedNumber = -1; // null
  119.  
  120.                 // Unselect Previously selected item
  121.                 if (selectedItem != null)
  122.                 {
  123.                     selectedItem.gameObject.GetComponent<InventoryItem>().isSelected = false;
  124.                     selectedItem = null;
  125.                 }
  126.  
  127.                 if (selectedItemModel != null)
  128.                 {
  129.                     DestroyImmediate(selectedItemModel.gameObject);
  130.                     selectedItemModel = null;
  131.                 }
  132.  
  133.  
  134.                 // Changing the color
  135.                 foreach (Transform child in numbersHolder.transform)
  136.                 {
  137.                     child.transform.Find("Text").GetComponent<Text>().color = Color.gray;
  138.                 }
  139.             }
  140.  
  141.         }
  142.  
  143.  
  144.     }
  145.  
  146.  
  147.     internal int GetWeaponDamage()
  148.     {
  149.         if (selectedItem != null)
  150.         {
  151.             return selectedItem.GetComponent<Weapon>().weaponDamage;
  152.         }
  153.         else
  154.         {
  155.             return 0;
  156.         }
  157.     }
  158.  
  159.     public bool IsPlayerHoldingSeed()
  160.     {
  161.         if (selectedItemModel != null)
  162.         {
  163.             switch (selectedItemModel.gameObject.name)
  164.             {
  165.                 case "Hand_Model(Clone)":
  166.                     return true;
  167.                 case "Hand_Model":
  168.                     return true;
  169.                 default:
  170.                     return false;
  171.             }
  172.         }
  173.         else
  174.         {
  175.             return false;
  176.         }
  177.     }
  178.  
  179.  
  180.     internal bool IsHoldingWeapon()
  181.     {
  182.         if (selectedItem != null)
  183.         {
  184.             if (selectedItem.GetComponent<Weapon>() != null)
  185.             {
  186.                 return true;
  187.             }
  188.             else
  189.             {
  190.                 return false;
  191.             }
  192.         }
  193.         else
  194.         {
  195.             return false;
  196.         }
  197.     }
  198.  
  199.     internal bool IsThereASwingLock()
  200.     {
  201.         if (selectedItemModel && selectedItemModel.GetComponent<EquipableItem>())
  202.         {
  203.             return selectedItemModel.GetComponent<EquipableItem>().swingWait; // false true
  204.         }
  205.         else
  206.         {
  207.             return false;
  208.         }
  209.     }
  210.  
  211.     private void SetEquippedModel(GameObject selectedItem)
  212.     {
  213.  
  214.         if (selectedItemModel != null)
  215.         {
  216.             DestroyImmediate(selectedItemModel.gameObject);
  217.             selectedItemModel = null;
  218.         }
  219.  
  220.         string selectedItemName = selectedItem.name.Replace("(Clone)", "");
  221.  
  222.         selectedItemModel = Instantiate(Resources.Load<GameObject>(CalculateItemModel(selectedItemName)));
  223.  
  224.         selectedItemModel.transform.SetParent(toolHolder.transform, false);
  225.     }
  226.  
  227.     private string CalculateItemModel(string selectedItemName)
  228.     {
  229.         switch (selectedItemName)
  230.         {
  231.             case "Axe":
  232.                 //SoundManager.Instance.PlaySound(SoundManager.Instance.drawMetalicToolSound);
  233.                 return "Axe_Model";
  234.  
  235.             case "TomatoSeed":
  236.                 return "Hand_Model";
  237.  
  238.             case "Pumpkin Seed":
  239.                 return "Hand_Model";
  240.  
  241.             case "WateringCan":
  242.                 return "WateringCan_Model";
  243.  
  244.             default:
  245.                 return null;
  246.         }
  247.     }
  248.  
  249.     GameObject GetSelectedItem(int slotNumber)
  250.     {
  251.         return quickSlotsList[slotNumber - 1].transform.GetChild(0).gameObject;
  252.     }
  253.  
  254.     bool checkIfSlotIsFull(int slotNumber)
  255.     {
  256.         if (quickSlotsList[slotNumber - 1].transform.childCount > 0)
  257.         {
  258.             return true;
  259.         }
  260.         else
  261.         {
  262.             return false;
  263.         }
  264.  
  265.     }
  266.  
  267.  
  268.     private void PopulateSlotList()
  269.     {
  270.         foreach (Transform child in quickSlotsPanel.transform)
  271.         {
  272.             if (child.CompareTag("QuickSlot"))
  273.             {
  274.                 quickSlotsList.Add(child.gameObject);
  275.             }
  276.         }
  277.     }
  278.  
  279.     public void AddToQuickSlots(GameObject itemToEquip)
  280.     {
  281.         // Find next free slot
  282.         GameObject availableSlot = FindNextEmptySlot();
  283.         // Set transform of our object
  284.         itemToEquip.transform.SetParent(availableSlot.transform, false);
  285.  
  286.         InventorySystem.Instance.ReCalculateList();
  287.     }
  288.  
  289.  
  290.     public GameObject FindNextEmptySlot()
  291.     {
  292.         foreach (GameObject slot in quickSlotsList)
  293.         {
  294.             if (slot.transform.childCount == 0)
  295.             {
  296.                 return slot;
  297.             }
  298.         }
  299.         return new GameObject();
  300.     }
  301.  
  302.     internal bool IsPlayerHoldingWateringCan()
  303.     {
  304.         if (selectedItem != null)
  305.         {
  306.             switch (selectedItem.GetComponent<InventoryItem>().thisName)
  307.             {
  308.                 case "WateringCan":
  309.                     return true;
  310.                 default:
  311.                     return false;
  312.             }
  313.         }
  314.         else
  315.         {
  316.             return false;
  317.         }
  318.     }
  319.  
  320.     public bool CheckIfFull()
  321.     {
  322.  
  323.         int counter = 0;
  324.  
  325.         foreach (GameObject slot in quickSlotsList)
  326.         {
  327.             if (slot.transform.childCount > 0)
  328.             {
  329.                 counter += 1;
  330.             }
  331.         }
  332.  
  333.         if (counter == 7)
  334.         {
  335.             return true;
  336.         }
  337.         else
  338.         {
  339.             return false;
  340.         }
  341.     }
  342. }
  343.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement