// © 2025 Naked People Team. All Rights Reserved.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "NakedDesire/Interaction/Interactable.h"
#include "ItemPickup.generated.h"

class UWidgetComponent;
class UBoxComponent;
class UClothingItemInstance;

UCLASS(Abstract)
class NAKEDDESIRE_API AItemPickup : public AActor, public IInteractable
{
	GENERATED_BODY()
	
	AItemPickup();

public:
	virtual void Interact_Implementation(ANakedDesireCharacter* Player) override;
	virtual bool CanInteract_Implementation(ANakedDesireCharacter* Player) const override;
	virtual void HideInteractionHint_Implementation() override;
	virtual void ShowInteractionFocusHint_Implementation() override;
	virtual void ShowInteractionProximityHint_Implementation() override;
	
	void SetItem(UClothingItemInstance* InItem);
	UClothingItemInstance* GetItem() const { return ClothingItemInstance; }
	
protected:
	virtual void BeginPlay() override;
	virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
	
private:
	UPROPERTY()
	TObjectPtr<UClothingItemInstance> ClothingItemInstance;
	
	UPROPERTY(EditDefaultsOnly)
	TObjectPtr<UStaticMeshComponent> Mesh;
	
	UPROPERTY(EditDefaultsOnly)
	TObjectPtr<UBoxComponent> Collider;
	
	UPROPERTY(EditDefaultsOnly)
	TObjectPtr<UWidgetComponent> InteractionHint;
	
	void ApplyOutline(UStaticMeshComponent* InMesh, bool bEnabled, int32 StencilValue);
};
