| using System; |
| using System.Collections; |
| using System.Collections.Generic; |
| using UnityEngine; |
| using UnityEngine.EventSystems; |
| using UnityEngine.UI; |
| |
| |
| public class TrashSlot : MonoBehaviour, IDropHandler, IPointerEnterHandler, IPointerExitHandler |
| { |
| |
| public GameObject trashAlertUI; |
| |
| private Text textToModify; |
| |
| public Sprite trash_closed; |
| public Sprite trash_opened; |
| |
| private Image imageComponent; |
| |
| Button YesBTN, NoBTN; |
| |
| GameObject draggedItem |
| { |
| get |
| { |
| return DragDrop.itemBeingDragged; |
| } |
| } |
| |
| GameObject itemToBeDeleted; |
| |
| |
| |
| public string itemName |
| { |
| get |
| { |
| string name = itemToBeDeleted.name; |
| string toRemove = "(Clone)"; |
| string result = name.Replace(toRemove, ""); |
| return result; |
| } |
| } |
| |
| |
| |
| void Start() |
| { |
| imageComponent = transform.Find("background").GetComponent<Image>(); |
| |
| textToModify = trashAlertUI.transform.Find("Text").GetComponent<Text>(); |
| |
| YesBTN = trashAlertUI.transform.Find("yes").GetComponent<Button>(); |
| YesBTN.onClick.AddListener(delegate { DeleteItem(); }); |
| |
| NoBTN = trashAlertUI.transform.Find("no").GetComponent<Button>(); |
| NoBTN.onClick.AddListener(delegate { CancelDeletion(); }); |
| |
| } |
| |
| |
| public void OnDrop(PointerEventData eventData) |
| { |
| |
| if (draggedItem && draggedItem.GetComponent<InventoryItem>().isTrashable == true) |
| { |
| itemToBeDeleted = draggedItem.gameObject; |
| |
| StartCoroutine(notifyBeforeDeletion()); |
| } |
| |
| } |
| |
| IEnumerator notifyBeforeDeletion() |
| { |
| trashAlertUI.SetActive(true); |
| textToModify.text = "Throw away this " + itemName + "?"; |
| yield return new WaitForSeconds(1f); |
| } |
| |
| private void CancelDeletion() |
| { |
| imageComponent.sprite = trash_closed; |
| trashAlertUI.SetActive(false); |
| } |
| |
| private void DeleteItem() |
| { |
| imageComponent.sprite = trash_closed; |
| DestroyImmediate(itemToBeDeleted.gameObject); |
| InventorySystem.Instance.ReCalculateList(); |
| CraftingSystem.Instance.RefreshNeededItems(); |
| trashAlertUI.SetActive(false); |
| } |
| |
| public void OnPointerEnter(PointerEventData eventData) |
| { |
| |
| if (draggedItem != null && draggedItem.GetComponent<InventoryItem>().isTrashable == true) |
| { |
| imageComponent.sprite = trash_opened; |
| } |
| |
| } |
| |
| public void OnPointerExit(PointerEventData eventData) |
| { |
| if (draggedItem != null && draggedItem.GetComponent<InventoryItem>().isTrashable == true) |
| { |
| imageComponent.sprite = trash_closed; |
| } |
| } |
| |
| } |
| |