using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; using TMPro; using DG.Tweening; public class BankVaultItemEvents : Selectable, IPointerDownHandler, IPointerUpHandler, IPointerEnterHandler, IPointerExitHandler, IDragHandler, IBeginDragHandler { private int slotId; private Vector3 originalPosition; private Image thisImage; private TextMeshProUGUI inspectText; protected override void Start() { base.Start(); originalPosition = gameObject.transform.position; slotId = int.Parse(gameObject.name.Substring(11)); thisImage = GetComponent(); if (Application.isPlaying) { inspectText = GameObject.Find("Inventory_inspect").GetComponent(); } } public override void OnSelect(BaseEventData eventData) { base.OnSelect(eventData); if (Player.Instance.GetInputHandler().UsingGamePad) { EnterSlot(); } } public override void OnDeselect(BaseEventData eventData) { base.OnDeselect(eventData); if (Player.Instance.GetInputHandler().UsingGamePad) { OnExit(); } } public override void OnPointerEnter(PointerEventData eventData) { base.OnPointerEnter(eventData); EnterSlot(); } public void EnterSlot() { string name = ItemDef.GetInstance().getItemName(InventoryManager.Instance.bankVaultItems[slotId]); string itemLevel = ItemDef.GetInstance().getItemLevel(InventoryManager.Instance.bankVaultItems[slotId]); if (name == "") { return; } inspectText.SetText($"{itemLevel.ToUpper()} {name.ToUpper()}"); transform.DOScale(Vector3.one * 1.15f, 0.1f).SetEase(Ease.InSine).SetUpdate(true); } public override void OnPointerExit(PointerEventData eventData) { base.OnPointerExit(eventData); OnExit(); } public void OnExit() { inspectText.text = ""; if (EventSystem.current.currentSelectedGameObject != null) EventSystem.current.SetSelectedGameObject(null); transform.DOScale(Vector3.one, 0.1f).SetEase(Ease.OutSine).SetUpdate(true); } public override void OnPointerDown(PointerEventData eventData) { base.OnPointerDown(eventData); OnClick(); } public void OnClick() { if (InventoryManager.Instance.bankVaultItems[slotId] == -1) { return; } } public void OnBeginDrag(PointerEventData eventData) { } public override void OnPointerUp(PointerEventData eventData) { base.OnPointerUp(eventData); OnClickUp(Input.mousePosition); } public void OnClickUp(Vector3 mousePosition) { if (InventoryManager.Instance.bankVaultItems[slotId] == -1) { return; } thisImage.color = Color.white; if (Vector3.Distance(transform.position, originalPosition) > 3) { List results = new List(); PointerEventData ped = new PointerEventData(EventSystem.current); ped.position = mousePosition; transform.root.GetComponent().Raycast(ped, results); if (results.Count <= 1) { //Do nothing for now.We don't want to drag items over inventory slots to withdraw them for now. //if (InventoryManager.Instance.bankVaultItems[slotId] != -1) // { // PacketManager.sendWithdrawBankItem(slotId); // } } else { foreach (RaycastResult result in results) { if (result.gameObject.name.Contains("bg_slot_")) { int to = int.Parse(result.gameObject.name.Substring(8)); if (to != slotId) { //Debug.Log("Sent Packet!"); PacketManager.sendMoveItem(slotId, to, 1); } } } } } else { if (InventoryManager.Instance.bankVaultItems[slotId] != -1) { PacketManager.sendWithdrawBankOrForgeItem(slotId, 0); } } gameObject.transform.position = originalPosition; } public void OnDrag(PointerEventData eventData) { //if (InventoryManager.Instance.bankVaultItems[slotId] == -1) { return; } //transform.position += (Vector3)eventData.delta; } }