#pragma once

#include "CoreMinimal.h"
#include "AnimLayerUpdateInterface.h"
#include "BaseSurvivorAnimInstance.h"
#include "EGuidedState.h"
#include "EInteractionAnimation.h"
#include "SicknessSurvivorSubAnimInstance.generated.h"

UCLASS(Blueprintable, NonTransient)
class USicknessSurvivorSubAnimInstance : public UBaseSurvivorAnimInstance, public IAnimLayerUpdateInterface
{
	GENERATED_BODY()

protected:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FString _vomitingEnteredStatEvent;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float _hitByVomitTime;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool _isSick;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool _isVomiting;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool _hasRecentlyBeenHitByVomit;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool _isOpeningExitGate;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool _isHooked;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool _isCrawling;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool _isDead;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool _isFrightScreaming;

	UPROPERTY(BlueprintReadWrite, Transient)
	EGuidedState _guidedAction;

	UPROPERTY(BlueprintReadWrite, Transient)
	EInteractionAnimation _interactionType;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool _isInsideLocker;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool _isInteracting;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool _isCrouched;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool _isHoldingAimItem;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool _isIdle;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool _isHoldingHandleItem;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool _isHoldingFlashbang;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool _isHoldingFirecracker;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool _isHoldingSmallItem;

public:
	USicknessSurvivorSubAnimInstance();
};

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