149 lines
3.8 KiB
C++
149 lines
3.8 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "GameplayTagContainer.h"
|
|
#include "GameplayAbilitySpec.h"
|
|
#include "GameplayEffectTypes.h"
|
|
#include "Engine/DataAsset.h"
|
|
|
|
#include "LyraAbilitySet.generated.h"
|
|
|
|
|
|
class ULyraAbilitySystemComponent;
|
|
class ULyraGameplayAbility;
|
|
class UGameplayEffect;
|
|
|
|
|
|
/**
|
|
* FLyraAbilitySet_GameplayAbility
|
|
*
|
|
* Data used by the ability set to grant gameplay abilities.
|
|
*/
|
|
USTRUCT(BlueprintType)
|
|
struct FLyraAbilitySet_GameplayAbility
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
|
|
// Gameplay ability to grant.
|
|
UPROPERTY(EditDefaultsOnly)
|
|
TSubclassOf<ULyraGameplayAbility> Ability = nullptr;
|
|
|
|
// Level of ability to grant.
|
|
UPROPERTY(EditDefaultsOnly)
|
|
int32 AbilityLevel = 1;
|
|
|
|
// Tag used to process input for the ability.
|
|
UPROPERTY(EditDefaultsOnly, Meta = (Categories = "InputTag"))
|
|
FGameplayTag InputTag;
|
|
};
|
|
|
|
|
|
/**
|
|
* FLyraAbilitySet_GameplayEffect
|
|
*
|
|
* Data used by the ability set to grant gameplay effects.
|
|
*/
|
|
USTRUCT(BlueprintType)
|
|
struct FLyraAbilitySet_GameplayEffect
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
|
|
// Gameplay effect to grant.
|
|
UPROPERTY(EditDefaultsOnly)
|
|
TSubclassOf<UGameplayEffect> GameplayEffect = nullptr;
|
|
|
|
// Level of gameplay effect to grant.
|
|
UPROPERTY(EditDefaultsOnly)
|
|
float EffectLevel = 1.0f;
|
|
};
|
|
|
|
/**
|
|
* FLyraAbilitySet_AttributeSet
|
|
*
|
|
* Data used by the ability set to grant attribute sets.
|
|
*/
|
|
USTRUCT(BlueprintType)
|
|
struct FLyraAbilitySet_AttributeSet
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
// Gameplay effect to grant.
|
|
UPROPERTY(EditDefaultsOnly)
|
|
TSubclassOf<UAttributeSet> AttributeSet;
|
|
|
|
};
|
|
|
|
/**
|
|
* FLyraAbilitySet_GrantedHandles
|
|
*
|
|
* Data used to store handles to what has been granted by the ability set.
|
|
*/
|
|
USTRUCT(BlueprintType)
|
|
struct FLyraAbilitySet_GrantedHandles
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
|
|
void AddAbilitySpecHandle(const FGameplayAbilitySpecHandle& Handle);
|
|
void AddGameplayEffectHandle(const FActiveGameplayEffectHandle& Handle);
|
|
void AddAttributeSet(UAttributeSet* Set);
|
|
|
|
void TakeFromAbilitySystem(ULyraAbilitySystemComponent* LyraASC);
|
|
|
|
protected:
|
|
|
|
// Handles to the granted abilities.
|
|
UPROPERTY()
|
|
TArray<FGameplayAbilitySpecHandle> AbilitySpecHandles;
|
|
|
|
// Handles to the granted gameplay effects.
|
|
UPROPERTY()
|
|
TArray<FActiveGameplayEffectHandle> GameplayEffectHandles;
|
|
|
|
// Pointers to the granted attribute sets
|
|
UPROPERTY()
|
|
TArray<TObjectPtr<UAttributeSet>> GrantedAttributeSets;
|
|
};
|
|
|
|
|
|
/**
|
|
* ULyraAbilitySet
|
|
*
|
|
* Non-mutable data asset used to grant gameplay abilities and gameplay effects.
|
|
*/
|
|
UCLASS(BlueprintType, Const)
|
|
class ULyraAbilitySet : public UPrimaryDataAsset
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
|
|
ULyraAbilitySet(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
|
|
|
|
// Grants the ability set to the specified ability system component.
|
|
// The returned handles can be used later to take away anything that was granted.
|
|
void GiveToAbilitySystem(ULyraAbilitySystemComponent* LyraASC, FLyraAbilitySet_GrantedHandles* OutGrantedHandles, UObject* SourceObject = nullptr) const;
|
|
|
|
protected:
|
|
|
|
// Gameplay abilities to grant when this ability set is granted.
|
|
UPROPERTY(EditDefaultsOnly, Category = "Gameplay Abilities", meta=(TitleProperty=Ability))
|
|
TArray<FLyraAbilitySet_GameplayAbility> GrantedGameplayAbilities;
|
|
|
|
// Gameplay effects to grant when this ability set is granted.
|
|
UPROPERTY(EditDefaultsOnly, Category = "Gameplay Effects", meta=(TitleProperty=GameplayEffect))
|
|
TArray<FLyraAbilitySet_GameplayEffect> GrantedGameplayEffects;
|
|
|
|
// Attribute sets to grant when this ability set is granted.
|
|
UPROPERTY(EditDefaultsOnly, Category = "Attribute Sets", meta=(TitleProperty=AttributeSet))
|
|
TArray<FLyraAbilitySet_AttributeSet> GrantedAttributes;
|
|
};
|