64 lines
1.7 KiB
C++
64 lines
1.7 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "Blueprint/UserWidget.h"
|
|
#include "PHYAttributeGroupWidget.generated.h"
|
|
|
|
class UPHYAttributeRowWidget;
|
|
class UTextBlock;
|
|
class UVerticalBox;
|
|
|
|
/**
|
|
* @brief 属性分组子控件。
|
|
*
|
|
* 每个分组负责一个标题和若干属性行,例如攻击能力、防御能力、元素抗性。
|
|
*/
|
|
UCLASS(BlueprintType, Blueprintable)
|
|
class PHY_API UPHYAttributeGroupWidget : public UUserWidget
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
/** @brief 构造属性分组控件。 */
|
|
UPHYAttributeGroupWidget(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
|
|
|
|
/** @brief 构建原生分组 WidgetTree。 */
|
|
virtual TSharedRef<SWidget> RebuildWidget() override;
|
|
|
|
/** @brief 同步分组显示。 */
|
|
virtual void SynchronizeProperties() override;
|
|
|
|
/** @brief 设置分组标题。 */
|
|
UFUNCTION(BlueprintCallable, Category="PHY|UI|Attributes")
|
|
void SetGroupTitle(FText InGroupTitle);
|
|
|
|
/** @brief 清理当前分组内所有属性行。 */
|
|
UFUNCTION(BlueprintCallable, Category="PHY|UI|Attributes")
|
|
void ClearRows();
|
|
|
|
/** @brief 添加一行属性。 */
|
|
UFUNCTION(BlueprintCallable, Category="PHY|UI|Attributes")
|
|
UPHYAttributeRowWidget* AddRow(FText Label, FText Value, bool bCanUpgrade = false);
|
|
|
|
protected:
|
|
/** @brief 构造原生分组树。 */
|
|
void BuildNativeWidgetTree();
|
|
|
|
/** @brief 刷新分组标题。 */
|
|
void UpdateGroupWidgets();
|
|
|
|
/** @brief 分组标题。 */
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="PHY|UI|Attributes")
|
|
FText GroupTitle;
|
|
|
|
/** @brief 标题文本。 */
|
|
UPROPERTY(Transient)
|
|
TObjectPtr<UTextBlock> TitleText;
|
|
|
|
/** @brief 属性行容器。 */
|
|
UPROPERTY(Transient)
|
|
TObjectPtr<UVerticalBox> RowsBox;
|
|
};
|