| using System; |
| using System.Collections; |
| using System.Collections.Generic; |
| using UnityEngine; |
| using UnityEngine.UI; |
|
|
| public class EquipSystem : MonoBehaviour |
| { |
| public static EquipSystem Instance { get; set; } |
|
|
| |
| public GameObject quickSlotsPanel; |
|
|
| public List<GameObject> quickSlotsList = new List<GameObject>(); |
|
|
| public GameObject numbersHolder; |
|
|
| public int selectedNumber = -1; |
| public GameObject selectedItem; |
| public GameObject toolHolder; |
|
|
| public GameObject selectedItemModel; |
| private void Awake() |
| { |
| if (Instance != null && Instance != this) |
| { |
| Destroy(gameObject); |
| } |
| else |
| { |
| Instance = this; |
| } |
| } |
|
|
|
|
| private void Start() |
| { |
| PopulateSlotList(); |
| } |
|
|
| void Update() |
| { |
| if (Input.GetKeyDown(KeyCode.Alpha1)) |
| { |
| SelectQuickSlot(1); |
| } |
| else if (Input.GetKeyDown(KeyCode.Alpha2)) |
| { |
| SelectQuickSlot(2); |
| } |
| else if (Input.GetKeyDown(KeyCode.Alpha3)) |
| { |
| SelectQuickSlot(3); |
| } |
| else if (Input.GetKeyDown(KeyCode.Alpha4)) |
| { |
| SelectQuickSlot(4); |
| } |
| else if (Input.GetKeyDown(KeyCode.Alpha5)) |
| { |
| SelectQuickSlot(5); |
| } |
| else if (Input.GetKeyDown(KeyCode.Alpha6)) |
| { |
| SelectQuickSlot(6); |
| } |
| else if (Input.GetKeyDown(KeyCode.Alpha7)) |
| { |
| SelectQuickSlot(7); |
| } |
| } |
|
|
| private void SelectQuickSlot(int number) |
| { |
| if (checkIfSlotIsFull(number) == true) |
| { |
| if (selectedNumber != number) |
| { |
| selectedNumber = number; |
| |
| if (selectedItem != null) |
| { |
| selectedItem.GetComponent<InventoryItem>().isSelected = false; |
| } |
| selectedItem = getSelectedItem(number); |
| selectedItem.GetComponent<InventoryItem>().isSelected = true; |
| SetEquippedModel(selectedItem); |
| |
| foreach (Transform child in numbersHolder.transform) |
| { |
| child.transform.Find("Text").GetComponent<Text>().color = Color.grey; |
| } |
| Text toBeChanged = numbersHolder.transform.Find("number" + number).transform.Find("Text").GetComponent<Text>(); |
| toBeChanged.color = Color.white; |
| } |
| else |
| { |
| |
| selectedNumber = -1; |
| if (selectedItem != null) |
| { |
| selectedItem.GetComponent<InventoryItem>().isSelected = false; |
| |
| foreach (Transform child in numbersHolder.transform) |
| { |
| child.transform.Find("Text").GetComponent<Text>().color = Color.grey; |
| } |
| selectedItem = null; |
| } |
| if (selectedItemModel != null) |
| { |
| DestroyImmediate(selectedItemModel.gameObject); |
| selectedItemModel = null; |
| } |
| } |
| } |
|
|
| } |
|
|
| private void SetEquippedModel(GameObject selectedItem) |
| { |
| if (selectedItemModel != null) |
| { |
| DestroyImmediate(selectedItemModel.gameObject); |
| } |
|
|
| string selectedItemName = selectedItem.name.Replace("(Clone)", ""); |
| selectedItemModel = Instantiate(Resources.Load<GameObject>(selectedItemName + "_Model"), |
| new Vector3(1.07f, 0.38f, 1.54f), Quaternion.Euler(0, 66.7f, 0f) |
| ); |
| selectedItemModel.transform.SetParent(toolHolder.transform, false); |
| } |
|
|
| private GameObject getSelectedItem(int number) |
| { |
| return quickSlotsList[number - 1].transform.GetChild(0).gameObject; |
| } |
|
|
| private bool checkIfSlotIsFull(int number) |
| { |
| if (quickSlotsList[number - 1].transform.childCount > 0) |
| { |
| return true; |
| } |
| else |
| { |
| return false; |
| } |
| } |
|
|
| private void PopulateSlotList() |
| { |
| foreach (Transform child in quickSlotsPanel.transform) |
| { |
| if (child.CompareTag("QuickSlot")) |
| { |
| quickSlotsList.Add(child.gameObject); |
| } |
| } |
| } |
|
|
| public void AddToQuickSlots(GameObject itemToEquip) |
| { |
| |
| GameObject availableSlot = FindNextEmptySlot(); |
| |
| itemToEquip.transform.SetParent(availableSlot.transform, false); |
| InventorySystem.Instance.ReCalculateList(); |
|
|
| } |
|
|
|
|
| private GameObject FindNextEmptySlot() |
| { |
| foreach (GameObject slot in quickSlotsList) |
| { |
| if (slot.transform.childCount == 0) |
| { |
| return slot; |
| } |
| } |
| return new GameObject(); |
| } |
|
|
| public bool CheckIfFull() |
| { |
|
|
| int counter = 0; |
|
|
| foreach (GameObject slot in quickSlotsList) |
| { |
| if (slot.transform.childCount > 0) |
| { |
| counter += 1; |
| } |
| } |
|
|
| if (counter == 7) |
| { |
| return true; |
| } |
| else |
| { |
| return false; |
| } |
| } |
| } |