51 lines
2.5 KiB
C++
51 lines
2.5 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "UI/PHYAttributeOverviewPageWidget.h"
|
|
|
|
#include UE_INLINE_GENERATED_CPP_BY_NAME(PHYAttributeOverviewPageWidget)
|
|
|
|
#include "AbilitySystemComponent.h"
|
|
#include "AbilitySystem/Attributes/PHYCombatAttributeSet.h"
|
|
#include "AbilitySystem/Attributes/PHYCoreAttributeSet.h"
|
|
#include "UI/PHYAttributeGroupWidget.h"
|
|
|
|
namespace
|
|
{
|
|
float GetOverviewAttributeValue(const UAbilitySystemComponent* AbilitySystemComponent, const FGameplayAttribute& Attribute)
|
|
{
|
|
return AbilitySystemComponent ? AbilitySystemComponent->GetNumericAttribute(Attribute) : 0.0f;
|
|
}
|
|
|
|
FText MakeOverviewNumberText(const float Value)
|
|
{
|
|
return FText::FromString(FString::Printf(TEXT("%.0f"), Value));
|
|
}
|
|
|
|
FText MakeOverviewPairText(const float CurrentValue, const float MaxValue)
|
|
{
|
|
return FText::FromString(FString::Printf(TEXT("%.0f / %.0f"), FMath::Max(0.0f, CurrentValue), FMath::Max(0.0f, MaxValue)));
|
|
}
|
|
|
|
void AddOverviewAttributeRow(UPHYAttributeGroupWidget* GroupWidget, const TCHAR* Label, const FText& Value, const bool bCanUpgrade = false)
|
|
{
|
|
if (GroupWidget)
|
|
{
|
|
GroupWidget->AddRow(FText::FromString(Label), Value, bCanUpgrade);
|
|
}
|
|
}
|
|
}
|
|
|
|
void UPHYAttributeOverviewPageWidget::RefreshAttributes(UAbilitySystemComponent* AbilitySystemComponent)
|
|
{
|
|
SetPageTitle(FText::FromString(TEXT("核心属性")));
|
|
ClearGroups();
|
|
|
|
UPHYAttributeGroupWidget* CoreGroup = AddGroup(FText::FromString(TEXT("核心属性")));
|
|
AddOverviewAttributeRow(CoreGroup, TEXT("力量"), MakeOverviewNumberText(GetOverviewAttributeValue(AbilitySystemComponent, UPHYCoreAttributeSet::GetStrengthAttribute())), true);
|
|
AddOverviewAttributeRow(CoreGroup, TEXT("敏捷"), MakeOverviewNumberText(GetOverviewAttributeValue(AbilitySystemComponent, UPHYCoreAttributeSet::GetDexterityAttribute())), true);
|
|
AddOverviewAttributeRow(CoreGroup, TEXT("体质"), MakeOverviewNumberText(GetOverviewAttributeValue(AbilitySystemComponent, UPHYCoreAttributeSet::GetVitalityAttribute())), true);
|
|
AddOverviewAttributeRow(CoreGroup, TEXT("智力"), MakeOverviewNumberText(GetOverviewAttributeValue(AbilitySystemComponent, UPHYCoreAttributeSet::GetIntelligenceAttribute())), true);
|
|
AddOverviewAttributeRow(CoreGroup, TEXT("精神"), MakeOverviewNumberText(GetOverviewAttributeValue(AbilitySystemComponent, UPHYCoreAttributeSet::GetSpiritAttribute())), true);
|
|
AddOverviewAttributeRow(CoreGroup, TEXT("感知"), MakeOverviewNumberText(GetOverviewAttributeValue(AbilitySystemComponent, UPHYCoreAttributeSet::GetPerceptionAttribute())), true);
|
|
}
|