#pragma once

#include "CoreMinimal.h"
#include "KillerPower.h"
#include "Templates/SubclassOf.h"
#include "DBDTunableRowHandle.h"
#include "K36Power.generated.h"

class AK36SpellTrajectoryPreviewer;
class UK36PowerChargePresentationItemProgressComponent;
class UK36PresentationPowerFadeOutComponent;
class AAnimationFollowerActor;
class AK36Spikes;
class UDataTable;

UCLASS(Blueprintable)
class AK36Power : public AKillerPower
{
	GENERATED_BODY()

private:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	TSubclassOf<AK36SpellTrajectoryPreviewer> _spellTrajectoryPreviewerClass;

	UPROPERTY(BlueprintReadWrite, Transient, meta=(AllowPrivateAccess=true))
	AK36SpellTrajectoryPreviewer* _spellTrajectoryPreviewer;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced, meta=(AllowPrivateAccess=true))
	UK36PowerChargePresentationItemProgressComponent* _powerChargePresentationItemProgress;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced, meta=(AllowPrivateAccess=true))
	UK36PresentationPowerFadeOutComponent* _powerFadeOutComponent;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	TSubclassOf<AAnimationFollowerActor> _moriSkeletonsAnimationFollowerActorClass;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	TSubclassOf<AAnimationFollowerActor> _miniMageHandAnimationFollowerActorClass;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	TSubclassOf<AK36Spikes> _spikesActorClass;

	UPROPERTY(BlueprintReadWrite, Transient, meta=(AllowPrivateAccess=true))
	AK36Spikes* _spikesActor;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	int32 _defaultNumberOfMoriSkeletons;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	int32 _switchNumberOfMoriSkeletons;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	UDataTable* _vecnaArtifactAnimationMappingsTables;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	FDBDTunableRowHandle _timeToAttackAfterActivatingSpellToTriggerScoreEvent;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	FName _miniMageHandSocketName;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	float _minimumTimeBetweenKillerStartMovingEventsTriggered;

public:
	AK36Power();
};

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