Files
Aura/Source/Aura/Public/AbilitySystem/Data/AbilityBook.h
2024-03-20 16:21:19 +01:00

80 lines
1.9 KiB
C++

// Amasson
#pragma once
#include "CoreMinimal.h"
#include "Engine/DataAsset.h"
#include "AbilitySystem/AbilitySystemTypes.h"
#include "AuraGameplayTags.h"
#include "AbilityBook.generated.h"
USTRUCT(BlueprintType)
struct FAuraAbilityRequirement
{
GENERATED_BODY()
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Player Level")
int32 MiminalPlayerLevel = 1;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Abilities")
TArray<FGameplayAbilityGrant> RequiredAbilities;
};
USTRUCT(BlueprintType)
struct FAuraAbilityInfo
{
GENERATED_BODY()
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Ability")
TSubclassOf<class UGameplayAbility> Ability;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Icon")
TObjectPtr<const UTexture2D> Icon = nullptr;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Icon")
TObjectPtr<const UMaterialInterface> Background = nullptr;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Description")
FText Name = FText();
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Description")
FText Description = FText();
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Levels")
TArray<FAuraAbilityRequirement> RequirementsForLevels;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "TreeLocation")
FName TreeName;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "TreeLocation")
FVector2D TreePosition = FVector2D(0.5f, 150);
};
/**
*
*/
UCLASS()
class AURA_API UAbilityBook : public UDataAsset
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category = "Abilities")
const TMap<FGameplayTag, FAuraAbilityInfo>& GetAbilities();
const FAuraAbilityRequirement* GetRequirementsForAbilityLevel(FGameplayTag AbilityID, int32 Level);
protected:
UPROPERTY(EditDefaultsOnly, Category = "Abilities")
TArray<FAuraAbilityInfo> AllAbilities;
TMap<FGameplayTag, FAuraAbilityInfo> Abilities;
bool DictionaryInitialized = false;
};