// Copyright Echo Devgroup #include "UI/WidgetController/AttributeMenuWidgetController.h" #include "AbilitySystem/Data/AttributeInfo.h" #include "AbilitySystem/AuraAttributeSet.h" void UAttributeMenuWidgetController::BindCallbacksToDependencies() { UAuraAttributeSet* AS = CastChecked(AttributeSet); check(AttributeInfo); for (auto& Pair : AS->TagsToAttributes) { AbilitySystemComponent->GetGameplayAttributeValueChangeDelegate(Pair.Value()).AddLambda( [this, Pair](const FOnAttributeChangeData& Data) { BroadcastAttributeInfo(Pair.Key, Pair.Value()); } ); } } void UAttributeMenuWidgetController::BroadcastInitialValues() { UAuraAttributeSet* AS = CastChecked(AttributeSet); check(AttributeInfo); for (auto& Pair : AS->TagsToAttributes) { BroadcastAttributeInfo(Pair.Key, Pair.Value()); } } void UAttributeMenuWidgetController::BroadcastAttributeInfo(const FGameplayTag& AttributeTag, const FGameplayAttribute& Attribute) const { FAuraAttributeInfo Info = AttributeInfo->FindAttributeInfoForTag(AttributeTag); Info.AttributeValue = Attribute.GetNumericValue(AttributeSet); AttributeInfoDelegate.Broadcast(Info); }