#pragma once

#include "CoreMinimal.h"
#include "KillerVaultDefinition.h"
#include "AnimationMontageDescriptor.h"
#include "K29KillerVaultInteractionDefinition.generated.h"

class ADBDPlayer;
class ASurvivor;

UCLASS(Blueprintable, EditInlineNew, meta=(BlueprintSpawnableComponent))
class UK29KillerVaultInteractionDefinition : public UKillerVaultDefinition
{
	GENERATED_BODY()

private:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	FAnimationMontageDescriptor _rushPallet;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	FAnimationMontageDescriptor _rushWindow;

private:
	UFUNCTION(BlueprintCallable, NetMulticast, Reliable)
	void Multicast_WillHitSurvivor();

	UFUNCTION(BlueprintCallable, NetMulticast, Reliable)
	void Multicast_DamageWithTentacleSlash(ADBDPlayer* player, ASurvivor* hitSurvivor, const bool isDowned);

protected:
	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnTentacleSlashDamage(ASurvivor* hitSurvivor, const bool isDowned);

public:
	UK29KillerVaultInteractionDefinition();
};

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