#pragma once

#include "CoreMinimal.h"
#include "DBDPlayerCosmeticHelperActor.h"
#include "ImpactInfo.h"
#include "ProjectileAbilityKillerCosmeticHelperActor.generated.h"

class AKillerProjectileAbilityProjectile;

UCLASS(Blueprintable)
class DBDGAMEPLAY_API AProjectileAbilityKillerCosmeticHelperActor : public ADBDPlayerCosmeticHelperActor
{
	GENERATED_BODY()

protected:
	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnThrowSuccess();

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnThrowCancelled();

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnProjectileLaunched(AKillerProjectileAbilityProjectile* projectile);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnProjectileImpact(const bool isSlashableHit, AKillerProjectileAbilityProjectile* projectile, const FImpactInfo& impactInfo);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnChargeThrowStarted();

public:
	AProjectileAbilityKillerCosmeticHelperActor();
};

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