#pragma once

#include "CoreMinimal.h"
#include "BTService_FindInteractable.h"
#include "EFindEnemySurvivorPurpose.h"
#include "AITunableParameter.h"
#include "BehaviorTree/BehaviorTreeTypes.h"
#include "BTService_FindInteractable_EnemySurvivor.generated.h"

UCLASS(Blueprintable)
class DBDBOTS_API UBTService_FindInteractable_EnemySurvivor : public UBTService_FindInteractable
{
	GENERATED_BODY()

public:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	EFindEnemySurvivorPurpose PurposeFilter;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FAITunableParameter LastSeenMaximumTime;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float ReachedLastSeenLocationDistance;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float MaxDistanceToLoopInteractable;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float MaxDistanceToLoopPath;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FAITunableParameter CrawlingRecoveryProgressGoalWeight;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FAITunableParameter BestTargetWeight;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FAITunableParameter MeleeRangeWeight;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FAITunableParameter MeleeRangeDistance;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FAITunableParameter CurrentTargetWeight;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FAITunableParameter LastSurvivorWeight;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FAITunableParameter ForcedSurvivorWeight;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FAITunableParameter ActiveTimeWeightPenalty;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FAITunableParameter LoopSafetyRatingWeightPenalty;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FBlackboardKeySelector BBStimulusActor;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FBlackboardKeySelector BBStimulusNavLocation;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FBlackboardKeySelector BBIsStimulusInSight;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FBlackboardKeySelector BBWasInSight;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FBlackboardKeySelector BBPredictedLocation;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FBlackboardKeySelector BBWasBlind;

public:
	UBTService_FindInteractable_EnemySurvivor();
};

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