80 lines
1.9 KiB
C++
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;
|
|
|
|
};
|