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;
|
||
|
|
};
|