#pragma once

#include "CoreMinimal.h"
#include "KillerFormSwitchingAbility.h"
#include "Templates/SubclassOf.h"
#include "CyclicKillerFormSwitchingAbility.generated.h"

class UCyclicKillerFormSwitchingTransitionSelectionInteraction;
class UCyclicKillerFormSwitchingTransitionInteraction;

UCLASS(Blueprintable, EditInlineNew, meta=(BlueprintSpawnableComponent))
class DBDKILLERABILITIES_API UCyclicKillerFormSwitchingAbility : public UKillerFormSwitchingAbility
{
	GENERATED_BODY()

protected:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TSubclassOf<UCyclicKillerFormSwitchingTransitionSelectionInteraction> _formSwitchingInteractionClass;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Replicated, Instanced)
	UCyclicKillerFormSwitchingTransitionSelectionInteraction* _formSwitchingInteraction;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TSubclassOf<UCyclicKillerFormSwitchingTransitionInteraction> _formSwitchingPreviousTransitionInteractionClass;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Replicated, Instanced)
	UCyclicKillerFormSwitchingTransitionInteraction* _formSwitchingPreviousTransitionInteraction;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TSubclassOf<UCyclicKillerFormSwitchingTransitionInteraction> _formSwitchingNextTransitionInteractionClass;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Replicated, Instanced)
	UCyclicKillerFormSwitchingTransitionInteraction* _formSwitchingNextTransitionInteraction;

public:
	virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;

public:
	UCyclicKillerFormSwitchingAbility();
};

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