156 lines
4.6 KiB
C#
156 lines
4.6 KiB
C#
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<Image>();
|
|
|
|
if (Application.isPlaying)
|
|
{
|
|
inspectText = GameObject.Find("Inventory_inspect").GetComponent<TextMeshProUGUI>();
|
|
}
|
|
|
|
}
|
|
|
|
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<RaycastResult> results = new List<RaycastResult>();
|
|
PointerEventData ped = new PointerEventData(EventSystem.current);
|
|
ped.position = mousePosition;
|
|
transform.root.GetComponent<GraphicRaycaster>().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;
|
|
}
|
|
}
|