#pragma once

#include "CoreMinimal.h"
#include "Perk.h"
#include "Templates/SubclassOf.h"
#include "ContextualAnimationMapping.h"
#include "GameplayTagContainer.h"
#include "GameEventData.h"
#include "S47P01.generated.h"

class US47P01BuildFragilePalletInteraction;
class AActor;

UCLASS(Blueprintable, meta=(BlueprintSpawnableComponent))
class US47P01 : public UPerk
{
	GENERATED_BODY()

private:
	UPROPERTY(EditAnywhere)
	int8 _chestsToUnlockOrRummage;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	TSubclassOf<US47P01BuildFragilePalletInteraction> _repairPalletInteraction;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	FContextualAnimationMapping _animMapping;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	TSubclassOf<AActor> _brokenPalletOutline;

private:
	UFUNCTION()
	void OnPerkActivated(FGameplayTag gameEventType, const FGameEventData& gameEventData);

	UFUNCTION()
	void OnChestOpenedOrRummaged(FGameplayTag gameEventType, const FGameEventData& gameEventData);

public:
	US47P01();
};

FORCEINLINE uint32 GetTypeHash(const US47P01) { return 0; }
