using UnityEngine; using UnityEngine.EventSystems; public class DragDropItem : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler, IPointerClickHandler { public InventoryItem item; private InventoryUIController inventoryUI; private CharacterInGroup owner; private float lastClickTime = 0f; private const float doubleClickThreshold = 0.3f; public void Init(InventoryItem i, InventoryUIController ui, CharacterInGroup chara) { item = i; inventoryUI = ui; owner = chara; } public void OnPointerClick(PointerEventData eventData) { // Double-click to use consumable items if (Time.time - lastClickTime < doubleClickThreshold) { if (item != null && item.itemType == ItemType.Consumable) { item.Use(owner); // Remove item if quantity is 0 if (item.quantity <= 0) { owner.inventory.items.Remove(item); } inventoryUI.Refresh(); } } lastClickTime = Time.time; } public void OnBeginDrag(PointerEventData eventData) { transform.SetParent(transform.root); // float au-dessus } public void OnDrag(PointerEventData eventData) { transform.position = eventData.position; } public void OnEndDrag(PointerEventData eventData) { GameObject dropTarget = eventData.pointerEnter; if (dropTarget != null && dropTarget.CompareTag("Portrait")) { CharacterUIController receiverUI = dropTarget.GetComponentInParent(); if (receiverUI != null && receiverUI.Character != owner) { inventoryUI.TransferItem(item, receiverUI.Character); } } inventoryUI.Refresh(); // Retour à sa place si non transféré } }