78 lines
2.2 KiB
C#
78 lines
2.2 KiB
C#
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.EventSystems;
|
|
using UnityEngine.UI;
|
|
|
|
public class SkillEntry : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
|
|
{
|
|
[SerializeField] private Image _iconImage;
|
|
[SerializeField] private TextMeshProUGUI _nameText;
|
|
|
|
public SkillData Data { get; private set; }
|
|
|
|
private Transform _dragTransform;
|
|
private Transform _originalParent;
|
|
private CanvasGroup _canvasGroup;
|
|
private Vector3 _originalLocalPos;
|
|
|
|
private void Awake()
|
|
{
|
|
_canvasGroup = GetComponent<CanvasGroup>();
|
|
if (_canvasGroup == null)
|
|
_canvasGroup = gameObject.AddComponent<CanvasGroup>();
|
|
}
|
|
|
|
public void SetData(SkillData data)
|
|
{
|
|
Data = data;
|
|
if (_iconImage != null)
|
|
{
|
|
_iconImage.sprite = data != null ? data.Icon : null;
|
|
_iconImage.enabled = data != null && data.Icon != null;
|
|
}
|
|
if (_nameText != null)
|
|
_nameText.text = data != null ? data.EntryName : "";
|
|
}
|
|
|
|
public void OnBeginDrag(PointerEventData eventData)
|
|
{
|
|
if (Data == null)
|
|
{
|
|
eventData.pointerDrag = null;
|
|
return;
|
|
}
|
|
|
|
_dragTransform = GameManager.Instance.InGameUI.DragCanvas;
|
|
_originalParent = transform.parent;
|
|
_originalLocalPos = transform.localPosition;
|
|
|
|
transform.SetParent(_dragTransform);
|
|
_canvasGroup.blocksRaycasts = false;
|
|
}
|
|
|
|
public void OnDrag(PointerEventData eventData)
|
|
{
|
|
transform.position = eventData.position;
|
|
}
|
|
|
|
public void OnEndDrag(PointerEventData eventData)
|
|
{
|
|
_canvasGroup.blocksRaycasts = true;
|
|
|
|
// 드롭된 오브젝트 판정 — 퀵슬롯이면 등록
|
|
GameObject hovered = eventData.pointerEnter;
|
|
if (hovered != null)
|
|
{
|
|
QuickSlot slot = hovered.GetComponentInParent<QuickSlot>();
|
|
if (slot != null && Data != null)
|
|
{
|
|
slot.SetEntry(Data);
|
|
}
|
|
}
|
|
|
|
// 엔트리는 항상 제자리로 복귀 (원본은 목록에 남아있어야 함)
|
|
transform.SetParent(_originalParent);
|
|
transform.localPosition = _originalLocalPos;
|
|
}
|
|
}
|