#pragma once

#include "CoreMinimal.h"
#include "OnGameEventActionInterface.h"
#include "CompetenceAction.h"
#include "GameplayTagContainer.h"
#include "EGameEventActionTarget.h"
#include "CurseAbilitySetCurseStateAction.generated.h"

class UFloatValueStrategy;

UCLASS(Blueprintable, EditInlineNew)
class DBDKILLERABILITIES_API UCurseAbilitySetCurseStateAction : public UCompetenceAction, public IOnGameEventActionInterface
{
	GENERATED_BODY()

private:
	UPROPERTY(EditAnywhere)
	FGameplayTag _curseTagToSet;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	bool _applyIfUnderRequestedState;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	bool _applyToMaxPercentage;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	bool _applyOnAllSurvivors;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	EGameEventActionTarget _eventSurvivorTarget;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	bool _shouldUpdateCursePassiveValue;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced, meta=(AllowPrivateAccess=true))
	UFloatValueStrategy* cursePassiveValue;

public:
	UCurseAbilitySetCurseStateAction();
};

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