66
77#include " AttrModifier.h"
88#include " AttrCategory.h"
9+ #include " AttributeEvents.h"
910
1011#include " BaseAttr.generated.h"
1112
1213
13- UENUM (BlueprintType)
14- enum class EAttributeOperation : uint8
15- {
16- None,
17- Add,
18- Remove,
19- RemoveAll,
20- RemoveCategory,
21- Base
22- };
23-
24- DECLARE_DYNAMIC_DELEGATE_ThreeParams (FAttributeModifiedDelegate, const EAttributeOperation, Operation, const FAttrModifier&, Modifier, const FAttrCategory&, Category);
25- DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams (FAttributeModifiedMCDelegate, const EAttributeOperation, Operation, const FAttrModifier&, Modifier, const FAttrCategory&, Category);
26-
27-
2814/* *
2915 * Base Attribute
3016 * Extended upon to support different types of attributes
@@ -34,7 +20,6 @@ struct ATTRIBUTES_API FBaseAttr
3420{
3521 GENERATED_BODY ()
3622
37-
3823private:
3924
4025 /* * Using an static counter for Ids.
@@ -54,17 +39,12 @@ struct ATTRIBUTES_API FBaseAttr
5439 UPROPERTY (NotReplicated, SaveGame)
5540 TArray<FAttributeCategoryMods> CategoryMods;
5641
57- public:
58-
59- UPROPERTY ()
60- FAttributeModifiedMCDelegate OnModified;
6142
43+ public:
6244
6345 FBaseAttr () : Id (IdCount++) {}
6446 virtual ~FBaseAttr () {}
6547
66- public:
67-
6848 void AddModifier (const FAttrModifier& Modifier, const FAttrCategory& Category = FAttrCategory::NoCategory);
6949 bool RemoveModifier (const FAttrModifier& Modifier, const FAttrCategory& Category = FAttrCategory::NoCategory, bool bRemoveFromAllCategories = false );
7050
@@ -82,8 +62,12 @@ struct ATTRIBUTES_API FBaseAttr
8262 void CleanCategoryModifiers (const FAttrCategory& Category);
8363 void CleanModifiers ();
8464
85- virtual void RefreshValue () {}
65+ void RefreshValue () { InternalRefreshValue ({}); }
8666
8767 // Compare two attributes by Id
8868 FORCEINLINE bool operator ==(const FBaseAttr& Other) const { return Id == Other.Id ; }
69+
70+ protected:
71+
72+ virtual void InternalRefreshValue (FAttributeModifiedInfo&& ChangeInfo) {}
8973};
0 commit comments