// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "Blueprint/DragDropOperation.h"
#include "InventoryDragDropOperation.generated.h"

class UInventoryComponent;

/**
 * Ce qui voyage entre la case qu'on saisit et celle ou on lache.
 *
 * On transporte un INDEX et non le contenu du slot : si l'inventaire change
 * pendant le glisser (ramassage automatique, script), la cible relira l'etat
 * reel au moment du drop au lieu d'appliquer une donnee perimee.
 */
UCLASS()
class EMBERWILD_API UInventoryDragDropOperation : public UDragDropOperation
{
	GENERATED_BODY()

public:
	UPROPERTY(BlueprintReadOnly, Category = "Inventaire")
	int32 SourceSlotIndex = INDEX_NONE;

	/**
	 * Combien d'exemplaires on deplace. Egal a la pile entiere pour un
	 * glisser normal, la moitie avec Maj, un seul avec Ctrl.
	 */
	UPROPERTY(BlueprintReadOnly, Category = "Inventaire")
	int32 Quantity = 0;

	UPROPERTY(BlueprintReadOnly, Category = "Inventaire")
	TWeakObjectPtr<UInventoryComponent> SourceInventory;
};
