#pragma once

#include "CoreMinimal.h"
#include "BaseSurvivorAnimInstance.h"
#include "GameplayTagContainer.h"
#include "ArmOverrideSurvivorSubAnimInstance.generated.h"

class UAnimSequence;

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

protected:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _isCrawling;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _holdingItem;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float _speed;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _fireCracker;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _smallItem;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _useAimItem;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _holdAimItem;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _isCrouched;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _isFrightScream;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _isHoldingFlashBang;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _isInjured;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _isHoldingVaccine;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _disableArmOverride;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _isHoldingMirror;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _isHoldingLamentBox;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _isHoldingSprayObject;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _isHoldingVhs;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _isHoldingWormholeFatherKeyCard;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _isHoldingLantern;

	UPROPERTY(EditAnywhere)
	FGameplayTag _bsItemArmOverrideTag;

	UPROPERTY(EditAnywhere)
	FGameplayTag _asKeyHandOverrideTag;

	UPROPERTY(EditAnywhere)
	FGameplayTag _asFlashlightHandOverrideTag;

	UPROPERTY(EditAnywhere)
	FGameplayTag _asFirecrackerHandOverrideTag;

	UPROPERTY(EditAnywhere)
	FGameplayTag _asFlashlightHandOverrideAimTag;

	UPROPERTY(EditAnywhere)
	FGameplayTag _asPocketMirrorHandOverrideTag;

	UPROPERTY(EditAnywhere)
	FGameplayTag _asSyringeHandOverrideTag;

	UPROPERTY(EditAnywhere)
	FGameplayTag _asFlashbangHandOverrideTag;

	UPROPERTY(EditAnywhere)
	FGameplayTag _asLamentBoxHandOverrideTag;

	UPROPERTY(EditAnywhere)
	FGameplayTag _asStabilizingSprayOverrideTag;

	UPROPERTY(EditAnywhere)
	FGameplayTag _asKeyCardHandOverrideTag;

	UPROPERTY(EditAnywhere)
	FGameplayTag _asVhsHandOverrideTag;

	UPROPERTY(EditAnywhere)
	FGameplayTag _asIdleArmOverrideTag;

	UPROPERTY(EditAnywhere)
	FGameplayTag _asCrawlArmOverrideTag;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UAnimSequence* _asKeyHandOverride;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UAnimSequence* _asFlashlightHandOverride;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UAnimSequence* _asFirecrackerHandOverride;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UAnimSequence* _asFlashlightHandOverrideAim;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UAnimSequence* _asPocketMirrorHandOverride;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UAnimSequence* _asSyringeHandOverride;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UAnimSequence* _asFlashBangHandOverride;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UAnimSequence* _asLamentBoxHandOverride;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UAnimSequence* _asStabilizingSprayOverride;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UAnimSequence* _asKeyCardHandOverride;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UAnimSequence* _asVhsHandOverride;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UAnimSequence* _asIdleArmOverride;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UAnimSequence* _asCrawlArmOverride;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	float _injuredNotUsingAimItem;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	bool _baseToConduitRule;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	bool _conduitToBaseRule;

public:
	UArmOverrideSurvivorSubAnimInstance();
};

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