Listening for Attribute Changes
This commit is contained in:
@ -6,9 +6,9 @@
|
|||||||
|
|
||||||
UAuraAttributeSet::UAuraAttributeSet()
|
UAuraAttributeSet::UAuraAttributeSet()
|
||||||
{
|
{
|
||||||
InitHealth(100.f);
|
InitHealth(50.f);
|
||||||
InitMaxHealth(100.f);
|
InitMaxHealth(100.f);
|
||||||
InitMana(50.f);
|
InitMana(25.f);
|
||||||
InitMaxMana(50.f);
|
InitMaxMana(50.f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ UOverlayWidgetController* AAuraHUD::GetOverlayWidgetController(const FWidgetCont
|
|||||||
OverlayWidgetController = NewObject<UOverlayWidgetController>(this, OverlayWidgetControllerClass);
|
OverlayWidgetController = NewObject<UOverlayWidgetController>(this, OverlayWidgetControllerClass);
|
||||||
OverlayWidgetController->SetWidgetControllerParams(WCParams);
|
OverlayWidgetController->SetWidgetControllerParams(WCParams);
|
||||||
|
|
||||||
|
OverlayWidgetController->BindCallbacksToDependencies();
|
||||||
return OverlayWidgetController;
|
return OverlayWidgetController;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,3 +14,7 @@ void UAuraWidgetController::SetWidgetControllerParams(const FWidgetControllerPar
|
|||||||
void UAuraWidgetController::BroadcastInitialValues()
|
void UAuraWidgetController::BroadcastInitialValues()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UAuraWidgetController::BindCallbacksToDependencies()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
@ -13,3 +13,40 @@ void UOverlayWidgetController::BroadcastInitialValues()
|
|||||||
OnManaChanged.Broadcast(AuraAttributeSet->GetMana());
|
OnManaChanged.Broadcast(AuraAttributeSet->GetMana());
|
||||||
OnMaxManaChanged.Broadcast(AuraAttributeSet->GetMaxMana());
|
OnMaxManaChanged.Broadcast(AuraAttributeSet->GetMaxMana());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UOverlayWidgetController::BindCallbacksToDependencies()
|
||||||
|
{
|
||||||
|
const UAuraAttributeSet* AuraAttributeSet = CastChecked<UAuraAttributeSet>(AttributeSet);
|
||||||
|
|
||||||
|
AbilitySystemComponent->GetGameplayAttributeValueChangeDelegate(
|
||||||
|
AuraAttributeSet->GetHealthAttribute()).AddUObject(this, &UOverlayWidgetController::HealthChanged);
|
||||||
|
|
||||||
|
AbilitySystemComponent->GetGameplayAttributeValueChangeDelegate(
|
||||||
|
AuraAttributeSet->GetMaxHealthAttribute()).AddUObject(this, &UOverlayWidgetController::MaxHealthChanged);
|
||||||
|
|
||||||
|
AbilitySystemComponent->GetGameplayAttributeValueChangeDelegate(
|
||||||
|
AuraAttributeSet->GetManaAttribute()).AddUObject(this, &UOverlayWidgetController::ManaChanged);
|
||||||
|
|
||||||
|
AbilitySystemComponent->GetGameplayAttributeValueChangeDelegate(
|
||||||
|
AuraAttributeSet->GetMaxManaAttribute()).AddUObject(this, &UOverlayWidgetController::MaxManaChanged);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UOverlayWidgetController::HealthChanged(const FOnAttributeChangeData& Data) const
|
||||||
|
{
|
||||||
|
OnHealthChanged.Broadcast(Data.NewValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UOverlayWidgetController::MaxHealthChanged(const FOnAttributeChangeData& Data) const
|
||||||
|
{
|
||||||
|
OnMaxHealthChanged.Broadcast(Data.NewValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UOverlayWidgetController::ManaChanged(const FOnAttributeChangeData& Data) const
|
||||||
|
{
|
||||||
|
OnManaChanged.Broadcast(Data.NewValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UOverlayWidgetController::MaxManaChanged(const FOnAttributeChangeData& Data) const
|
||||||
|
{
|
||||||
|
OnMaxManaChanged.Broadcast(Data.NewValue);
|
||||||
|
}
|
||||||
|
@ -46,7 +46,7 @@ public:
|
|||||||
void SetWidgetControllerParams(const FWidgetControllerParams& Params);
|
void SetWidgetControllerParams(const FWidgetControllerParams& Params);
|
||||||
|
|
||||||
virtual void BroadcastInitialValues();
|
virtual void BroadcastInitialValues();
|
||||||
|
virtual void BindCallbacksToDependencies();
|
||||||
protected:
|
protected:
|
||||||
UPROPERTY(BlueprintReadOnly, Category="WidgetController")
|
UPROPERTY(BlueprintReadOnly, Category="WidgetController")
|
||||||
TObjectPtr<APlayerController> PlayerController;
|
TObjectPtr<APlayerController> PlayerController;
|
||||||
|
@ -22,6 +22,7 @@ class AURA_API UOverlayWidgetController : public UAuraWidgetController
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void BroadcastInitialValues() override;
|
virtual void BroadcastInitialValues() override;
|
||||||
|
virtual void BindCallbacksToDependencies() override;
|
||||||
|
|
||||||
UPROPERTY(BlueprintAssignable, Category="GAS|Attributes")
|
UPROPERTY(BlueprintAssignable, Category="GAS|Attributes")
|
||||||
FOnHealthChangedSignature OnHealthChanged;
|
FOnHealthChangedSignature OnHealthChanged;
|
||||||
@ -34,4 +35,10 @@ public:
|
|||||||
|
|
||||||
UPROPERTY(BlueprintAssignable, Category="GAS|Attributes")
|
UPROPERTY(BlueprintAssignable, Category="GAS|Attributes")
|
||||||
FOnMaxManaChangedSignature OnMaxManaChanged;
|
FOnMaxManaChangedSignature OnMaxManaChanged;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void HealthChanged(const FOnAttributeChangeData& Data) const;
|
||||||
|
void MaxHealthChanged(const FOnAttributeChangeData& Data) const;
|
||||||
|
void ManaChanged(const FOnAttributeChangeData& Data) const;
|
||||||
|
void MaxManaChanged(const FOnAttributeChangeData& Data) const;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user