diff --git a/Source/Aura/Private/AbilitySystem/AuraAttributeSet.cpp b/Source/Aura/Private/AbilitySystem/AuraAttributeSet.cpp index e612208..a66d786 100644 --- a/Source/Aura/Private/AbilitySystem/AuraAttributeSet.cpp +++ b/Source/Aura/Private/AbilitySystem/AuraAttributeSet.cpp @@ -6,9 +6,9 @@ UAuraAttributeSet::UAuraAttributeSet() { - InitHealth(100.f); + InitHealth(50.f); InitMaxHealth(100.f); - InitMana(50.f); + InitMana(25.f); InitMaxMana(50.f); } diff --git a/Source/Aura/Private/UI/HUD/AuraHUD.cpp b/Source/Aura/Private/UI/HUD/AuraHUD.cpp index 097547b..92b88c3 100644 --- a/Source/Aura/Private/UI/HUD/AuraHUD.cpp +++ b/Source/Aura/Private/UI/HUD/AuraHUD.cpp @@ -14,6 +14,7 @@ UOverlayWidgetController* AAuraHUD::GetOverlayWidgetController(const FWidgetCont OverlayWidgetController = NewObject(this, OverlayWidgetControllerClass); OverlayWidgetController->SetWidgetControllerParams(WCParams); + OverlayWidgetController->BindCallbacksToDependencies(); return OverlayWidgetController; } diff --git a/Source/Aura/Private/UI/WidgetController/AuraWidgetController.cpp b/Source/Aura/Private/UI/WidgetController/AuraWidgetController.cpp index 1e4bdf0..823e766 100644 --- a/Source/Aura/Private/UI/WidgetController/AuraWidgetController.cpp +++ b/Source/Aura/Private/UI/WidgetController/AuraWidgetController.cpp @@ -14,3 +14,7 @@ void UAuraWidgetController::SetWidgetControllerParams(const FWidgetControllerPar void UAuraWidgetController::BroadcastInitialValues() { } + +void UAuraWidgetController::BindCallbacksToDependencies() +{ +} diff --git a/Source/Aura/Private/UI/WidgetController/OverlayWidgetController.cpp b/Source/Aura/Private/UI/WidgetController/OverlayWidgetController.cpp index b52e9f5..21b6b00 100644 --- a/Source/Aura/Private/UI/WidgetController/OverlayWidgetController.cpp +++ b/Source/Aura/Private/UI/WidgetController/OverlayWidgetController.cpp @@ -13,3 +13,40 @@ void UOverlayWidgetController::BroadcastInitialValues() OnManaChanged.Broadcast(AuraAttributeSet->GetMana()); OnMaxManaChanged.Broadcast(AuraAttributeSet->GetMaxMana()); } + +void UOverlayWidgetController::BindCallbacksToDependencies() +{ + const UAuraAttributeSet* AuraAttributeSet = CastChecked(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); +} diff --git a/Source/Aura/Public/UI/WidgetController/AuraWidgetController.h b/Source/Aura/Public/UI/WidgetController/AuraWidgetController.h index 3af5e67..ce7e99f 100644 --- a/Source/Aura/Public/UI/WidgetController/AuraWidgetController.h +++ b/Source/Aura/Public/UI/WidgetController/AuraWidgetController.h @@ -46,7 +46,7 @@ public: void SetWidgetControllerParams(const FWidgetControllerParams& Params); virtual void BroadcastInitialValues(); - + virtual void BindCallbacksToDependencies(); protected: UPROPERTY(BlueprintReadOnly, Category="WidgetController") TObjectPtr PlayerController; diff --git a/Source/Aura/Public/UI/WidgetController/OverlayWidgetController.h b/Source/Aura/Public/UI/WidgetController/OverlayWidgetController.h index 489ebbf..5dd117e 100644 --- a/Source/Aura/Public/UI/WidgetController/OverlayWidgetController.h +++ b/Source/Aura/Public/UI/WidgetController/OverlayWidgetController.h @@ -22,6 +22,7 @@ class AURA_API UOverlayWidgetController : public UAuraWidgetController public: virtual void BroadcastInitialValues() override; + virtual void BindCallbacksToDependencies() override; UPROPERTY(BlueprintAssignable, Category="GAS|Attributes") FOnHealthChangedSignature OnHealthChanged; @@ -34,4 +35,10 @@ public: UPROPERTY(BlueprintAssignable, Category="GAS|Attributes") 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; };