42 lines
1.2 KiB
C++
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;
|
|
};
|