test/Source/MyProject/Variant_Combat/Interfaces/CombatDamageable.h

42 lines
1.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "UObject/Interface.h"
#include "CombatDamageable.generated.h"
/**
* CombatDamageable interface
* Provides functionality to handle damage, healing, knockback and death
* Also provides functionality to warn characters of incoming sources of damage
*/
UINTERFACE(MinimalAPI, NotBlueprintable)
class UCombatDamageable : public UInterface
{
GENERATED_BODY()
};
class ICombatDamageable
{
GENERATED_BODY()
public:
/** Handles damage and knockback events */
UFUNCTION(BlueprintCallable, Category="Damageable")
virtual void ApplyDamage(float Damage, AActor* DamageCauser, const FVector& DamageLocation, const FVector& DamageImpulse) = 0;
/** Handles death events */
UFUNCTION(BlueprintCallable, Category="Damageable")
virtual void HandleDeath() = 0;
/** Handles healing events */
UFUNCTION(BlueprintCallable, Category="Damageable")
virtual void ApplyHealing(float Healing, AActor* Healer) = 0;
/** Notifies the actor of impending danger such as an incoming hit, allowing it to react. */
UFUNCTION(BlueprintCallable, Category="Damageable")
virtual void NotifyDanger(const FVector& DangerLocation, AActor* DangerSource) = 0;
};