| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- 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<CharacterUIController>();
- if (receiverUI != null && receiverUI.Character != owner)
- {
- inventoryUI.TransferItem(item, receiverUI.Character);
- }
- }
- inventoryUI.Refresh(); // Retour à sa place si non transféré
- }
- }
|