#pragma once

#include "CoreMinimal.h"
#include "Subsystems/WorldSubsystem.h"
#include "BehaviourDetectionClassConfiguration.h"
#include "BehaviourDetectionComponentInfo.h"
#include "Templates/SubclassOf.h"
#include "BehaviourDetectionSubsystem.generated.h"

class UBaseBehaviourDetectionComponent;

UCLASS(Blueprintable)
class DEADBYDAYLIGHT_API UBehaviourDetectionSubsystem : public UWorldSubsystem
{
	GENERATED_BODY()

protected:
	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	TArray<FBehaviourDetectionClassConfiguration> _configurations;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	TMap<TSubclassOf<UBaseBehaviourDetectionComponent>, FBehaviourDetectionComponentInfo> _componentsByClassMap;

public:
	UBehaviourDetectionSubsystem();
};

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