// © 2024 Long Ly. All rights reserved. Any unauthorized use, reproduction, or distribution of this trademark is strictly prohibited and may result in legal action. #pragma once #include "CoreMinimal.h" #include "AttributeSet.h" #include "OLSAttributeSetBase.generated.h" /** * This macro defines a set of helper functions for accessing and initializing attributes. * * The following example of the macro: * ATTRIBUTE_ACCESSORS(ULyraHealthSet, Health) * will create the following functions: * static FGameplayAttribute GetHealthAttribute(); * float GetHealth() const; * void SetHealth(float NewVal); * void InitHealth(float NewVal); */ #define ATTRIBUTE_ACCESSORS(ClassName, PropertyName) \ GAMEPLAYATTRIBUTE_PROPERTY_GETTER(ClassName, PropertyName) \ GAMEPLAYATTRIBUTE_VALUE_GETTER(PropertyName) \ GAMEPLAYATTRIBUTE_VALUE_SETTER(PropertyName) \ GAMEPLAYATTRIBUTE_VALUE_INITTER(PropertyName) /** * Delegate used to broadcast attribute events, some of these parameters may be null on clients: * @param EffectInstigator The original instigating actor for this event * @param EffectCauser The physical actor that caused the change * @param EffectSpec The full effect spec for this change * @param EffectMagnitude The raw magnitude, this is before clamping * @param OldValue The value of the attribute before it was changed * @param NewValue The value after it was changed */ DECLARE_MULTICAST_DELEGATE_SixParams( FOLSAttributeEventNativeDelegate, class AActor* /*effectInstigator*/, class AActor* /*effectCauser*/, const struct FGameplayEffectSpec* /*effectSpec*/, float /*effectMagnitude*/, float /*oldValue*/, float /*newValue*/); /** * UOLSAttributeSet * * Base attribute set class for the project. */ UCLASS() class OLS_API UOLSAttributeSetBase : public UAttributeSet { GENERATED_BODY() public: UOLSAttributeSetBase(); //~ Begin UObject interface class UWorld* GetWorld() const override; //~ End UObject interface public: class UOLSAbilitySystemComponent* GetOLSAbilitySystemComponent() const; };