#pragma once

#include "CoreMinimal.h"
#include "StatusEffect.h"
#include "GameplayTagContainer.h"
#include "VoidHauntPassiveStatusEffect.generated.h"

class UFloatValueStrategy;
class ADBDPlayer;

UCLASS(Blueprintable, EditInlineNew, meta=(BlueprintSpawnableComponent))
class HALLOWEEN2025_API UVoidHauntPassiveStatusEffect : public UStatusEffect
{
	GENERATED_BODY()

private:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced, meta=(AllowPrivateAccess=true))
	UFloatValueStrategy* _hauntPassiveEffectCooldown;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	FGameplayTagContainer _breakStartedEvents;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	FGameplayTagContainer _breakFinishedEvents;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	FGameplayTagContainer _breakCancelledEvents;

protected:
	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnVoidHauntBreakInteractionStarted(ADBDPlayer* breakingPlayer);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnVoidHauntBreakInteractionFinished(ADBDPlayer* breakingPlayer);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnVoidHauntBreakInteractionCancelled(ADBDPlayer* breakingPlayer);

public:
	UVoidHauntPassiveStatusEffect();
};

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