#pragma once

#include "CoreMinimal.h"
#include "AIEnemyTracker.h"
#include "AITunableParameter.h"
#include "ETrackedKillerState.h"
#include "AIEnemyTracker_Survivor.generated.h"

class AKiller;

UCLASS(Blueprintable, EditInlineNew)
class DBDBOTS_API UAIEnemyTracker_Survivor : public UAIEnemyTracker
{
	GENERATED_BODY()

public:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float TerrorRadiusDistanceRange;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float ChaseDistanceRange;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float DownedAllyDistanceRange;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float ExactPredictRange;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float LoopOffsetDirectionMaxUpdateInterval;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float SurvivorLoopMaxRange;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float KillerLoopMaxRange;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FAITunableParameter BaseLoopOffsetDistance;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FAITunableParameter PerSecondLoopOffsetDistance;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FAITunableParameter MaxOffsetPercent;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FName BBEvadePointInteractable;

private:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	TMap<AKiller*, ETrackedKillerState> _trackedKillerStates;

public:
	UAIEnemyTracker_Survivor();
};

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