#pragma once

#include "CoreMinimal.h"
#include "BaseSurvivorAnimInstance.h"
#include "EInteractionAnimation.h"
#include "GameplayTagContainer.h"
#include "CrownSubAnimInstance.generated.h"

class UAnimSequence;

UCLASS(Blueprintable, NonTransient)
class DBDANIMATION_API UCrownSubAnimInstance : public UBaseSurvivorAnimInstance
{
	GENERATED_BODY()

protected:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _isInjured;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	EInteractionAnimation _interactionType;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float _interactionDuration;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float _interactionPlayrate;

	UPROPERTY(EditAnywhere)
	FGameplayTag _takeCrownTag;

	UPROPERTY(EditAnywhere)
	FGameplayTag _takeCrownInjuredTag;

	UPROPERTY(EditAnywhere)
	FGameplayTag _takeGlyphTag;

	UPROPERTY(EditAnywhere)
	FGameplayTag _takeGlyphInjuredTag;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UAnimSequence* _takeCrownAS;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UAnimSequence* _takeCrownInjuredAS;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UAnimSequence* _takeGlyphAS;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UAnimSequence* _takeGlyphInjuredAS;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	bool _unstableRiftInteractionToBaseRule;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	bool _baseToGlyphRule;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	bool _baseToUnstableRiftInteractionRule;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	bool _baseToCrownInteractionRule;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	bool _crownInteractionToBaseRule;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	bool _glyphToBaseRule;

public:
	UCrownSubAnimInstance();
};

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