#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "K36Utilities.generated.h"

class AKiller;
class AK36Spikes;
class AK36SpellTrajectoryPreviewer;
class UK36SelectSpellInteraction;
class UK36SpellManagerComponent;
class AK36Power;
class UObject;
class UK36DnDManagerComponent;
class ASurvivor;
class AK36MagicItemArtifact;

UCLASS(Blueprintable)
class UK36Utilities : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()

public:
	UFUNCTION(BlueprintPure)
	static AK36Spikes* GetSpikes(const AKiller* killer);

	UFUNCTION(BlueprintPure)
	static AK36SpellTrajectoryPreviewer* GetSpellTrajectoryPreviewer(const AKiller* killer);

	UFUNCTION(BlueprintPure)
	static UK36SelectSpellInteraction* GetSelectSpellInteraction(const AKiller* killer);

	UFUNCTION(BlueprintPure)
	static UK36SpellManagerComponent* GetK36SpellManagerComponent(const AKiller* killer);

	UFUNCTION(BlueprintPure)
	static AK36Power* GetK36Power(const AKiller* killer);

	UFUNCTION(BlueprintPure)
	static UK36DnDManagerComponent* GetDnDManagerComponent(const UObject* worldContextObject);

	UFUNCTION(BlueprintPure)
	static TArray<AK36MagicItemArtifact*> GetArtifactsOnSurvivor(const ASurvivor* survivor);

public:
	UK36Utilities();
};

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