#pragma once

#include "CoreMinimal.h"
#include "UObject/Interface.h"
#include "GameplayTagContainer.h"
#include "K06FXInterface.generated.h"

class ADBDPlayer;

UINTERFACE(Blueprintable)
class THESHAPE_API UK06FXInterface : public UInterface
{
	GENERATED_BODY()
};

class THESHAPE_API IK06FXInterface : public IInterface
{
	GENERATED_BODY()

public:
	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnWarningFXWhenChargingStalkingPoints(const TArray<ADBDPlayer*>& survivorsBeingStalked);

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

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

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

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

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

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

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

	UFUNCTION(BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnModeChanged(const FGameplayTag& newModeId, const FGameplayTag& previousModeId, bool isStartingMode);

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

};
