Enemy HP Bars done! Time to make classes.
This commit is contained in:
@@ -5,6 +5,8 @@
|
||||
#include "AbilitySystem/AuraAbilitySystemComponent.h"
|
||||
#include "AbilitySystem/AuraAttributeSet.h"
|
||||
#include "Aura/Aura.h"
|
||||
#include "Components/WidgetComponent.h"
|
||||
#include "UI/Widget/AuraUserWidget.h"
|
||||
|
||||
AAuraEnemy::AAuraEnemy()
|
||||
{
|
||||
@@ -13,6 +15,9 @@ AAuraEnemy::AAuraEnemy()
|
||||
AbilitySystemComponent->SetIsReplicated(true);
|
||||
AbilitySystemComponent->SetReplicationMode(EGameplayEffectReplicationMode::Minimal);
|
||||
AttributeSet = CreateDefaultSubobject<UAuraAttributeSet>("AttributeSet");
|
||||
|
||||
HealthBar = CreateDefaultSubobject<UWidgetComponent>("HealthBar");
|
||||
HealthBar->SetupAttachment(GetRootComponent());
|
||||
}
|
||||
|
||||
void AAuraEnemy::HighlightActor()
|
||||
@@ -21,6 +26,28 @@ void AAuraEnemy::HighlightActor()
|
||||
GetMesh()->SetCustomDepthStencilValue(CUSTOM_DEPTH_RED);
|
||||
Weapon->SetRenderCustomDepth(true);
|
||||
Weapon->SetCustomDepthStencilValue(CUSTOM_DEPTH_RED);
|
||||
|
||||
if (UAuraUserWidget* AuraUserWidget = Cast<UAuraUserWidget>(HealthBar->GetUserWidgetObject()))
|
||||
{
|
||||
AuraUserWidget->SetWidgetController(this);
|
||||
}
|
||||
|
||||
if (const UAuraAttributeSet* AuraAS = Cast<UAuraAttributeSet>(AttributeSet))
|
||||
{
|
||||
AbilitySystemComponent->GetGameplayAttributeValueChangeDelegate(AuraAS->GetHealthAttribute()).AddLambda(
|
||||
[this](const FOnAttributeChangeData& Data){ OnHealthChanged.Broadcast(Data.NewValue); }
|
||||
);
|
||||
AbilitySystemComponent->GetGameplayAttributeValueChangeDelegate(AuraAS->GetMaxHealthAttribute()).AddLambda(
|
||||
[this](const FOnAttributeChangeData& Data)
|
||||
{
|
||||
OnMaxHealthChanged.Broadcast(Data.NewValue);
|
||||
}
|
||||
);
|
||||
|
||||
OnHealthChanged.Broadcast(AuraAS->GetHealth());
|
||||
OnMaxHealthChanged.Broadcast(AuraAS->GetMaxHealth());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void AAuraEnemy::UnHighlightActor()
|
||||
|
||||
@@ -5,8 +5,10 @@
|
||||
#include "CoreMinimal.h"
|
||||
#include "Character/AuraCharacterBase.h"
|
||||
#include "Interact/EnemyInterface.h"
|
||||
#include "UI/WidgetController/OverlayWidgetController.h"
|
||||
#include "AuraEnemy.generated.h"
|
||||
|
||||
class UWidgetComponent;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@@ -25,13 +27,22 @@ public:
|
||||
|
||||
virtual int32 GetPlayerLevel() override;
|
||||
|
||||
UPROPERTY(BlueprintAssignable)
|
||||
FOnAttributeChangedSignature OnHealthChanged;
|
||||
UPROPERTY(BlueprintAssignable)
|
||||
FOnAttributeChangedSignature OnMaxHealthChanged;
|
||||
|
||||
protected:
|
||||
virtual void BeginPlay() override;
|
||||
virtual void InitAbilityActorInfo() override;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Character Class Defaults")
|
||||
int32 Level = 1;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Character Class Defaults")
|
||||
FText Name;
|
||||
|
||||
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
|
||||
TObjectPtr<UWidgetComponent> HealthBar;
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user