#pragma once

#include "CoreMinimal.h"
#include "K38DogBaseState.h"
#include "DBDTunableRowHandle.h"
#include "AnimationMontageDescriptor.h"
#include "Engine/HitResult.h"
#include "K38VaultingDogState.generated.h"

class UPrimitiveComponent;
class AActor;

UCLASS(Blueprintable)
class THEK38_API UK38VaultingDogState : public UK38DogBaseState
{
	GENERATED_BODY()

protected:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FDBDTunableRowHandle _dogTurnToVaultSeconds;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FDBDTunableRowHandle _dogDashTurnToVaultSeconds;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FDBDTunableRowHandle _dogVaultSeconds;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FDBDTunableRowHandle _dogDashVaultSeconds;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FAnimationMontageDescriptor _vaultMontage;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FAnimationMontageDescriptor _vaultPalletMontage;

private:
	UFUNCTION()
	void Authority_OnBeginOverlap(UPrimitiveComponent* overlappedComponent, AActor* otherActor, UPrimitiveComponent* otherComp, int32 otherBodyIndex, bool bFromSweep, const FHitResult& sweepResult);

public:
	UK38VaultingDogState();
};

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