Save and save often
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
// Copyright Echo Devgroup
|
||||
|
||||
|
||||
#include "AbilitySystem/AuraAbilitySystemLibrary.h"
|
||||
|
||||
#include "Kismet/GameplayStatics.h"
|
||||
#include "Player/AuraPlayerState.h"
|
||||
#include "UI/WidgetController/AuraWidgetController.h"
|
||||
#include "UI/HUD/AuraHUD.h"
|
||||
|
||||
UOverlayWidgetController* UAuraAbilitySystemLibrary::GetOverlayWidgetController(const UObject* WorldContextObject)
|
||||
{
|
||||
if (APlayerController* PC = UGameplayStatics::GetPlayerController(WorldContextObject, 0))
|
||||
{
|
||||
if (AAuraHUD* AuraHUD = Cast<AAuraHUD>(PC->GetHUD()))
|
||||
{
|
||||
AAuraPlayerState* PS = PC->GetPlayerState<AAuraPlayerState>();
|
||||
UAbilitySystemComponent* ASC = PS->GetAbilitySystemComponent();
|
||||
UAttributeSet* AS = PS->GetAttributeSet();
|
||||
const FWidgetControllerParams WidgetControllerParams(PC, PS, ASC, AS);
|
||||
return AuraHUD->GetOverlayWidgetController(WidgetControllerParams);
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
UAttributeMenuWidgetController* UAuraAbilitySystemLibrary::GetAttributeMenuWidgetController(
|
||||
const UObject* WorldContextObject)
|
||||
{
|
||||
if (APlayerController* PC = UGameplayStatics::GetPlayerController(WorldContextObject, 0))
|
||||
{
|
||||
if (AAuraHUD* AuraHUD = Cast<AAuraHUD>(PC->GetHUD()))
|
||||
{
|
||||
AAuraPlayerState* PS = PC->GetPlayerState<AAuraPlayerState>();
|
||||
UAbilitySystemComponent* ASC = PS->GetAbilitySystemComponent();
|
||||
UAttributeSet* AS = PS->GetAttributeSet();
|
||||
const FWidgetControllerParams WidgetControllerParams(PC, PS, ASC, AS);
|
||||
return AuraHUD->GetAttributeMenuWidgetController(WidgetControllerParams);
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
21
Source/Aura/Private/AbilitySystem/Data/AttributeInfo.cpp
Normal file
21
Source/Aura/Private/AbilitySystem/Data/AttributeInfo.cpp
Normal file
@@ -0,0 +1,21 @@
|
||||
// Copyright Echo Devgroup
|
||||
|
||||
|
||||
#include "AbilitySystem/Data/AttributeInfo.h"
|
||||
|
||||
FAuraAttributeInfo UAttributeInfo::FindAttributeInfoForTag(const FGameplayTag& AttributeTag, bool bLogNotFound) const
|
||||
{
|
||||
for (const FAuraAttributeInfo& Info : AttributeInformation)
|
||||
{
|
||||
if (Info.AttributeTag.MatchesTagExact(AttributeTag))
|
||||
{
|
||||
return Info;
|
||||
}
|
||||
}
|
||||
|
||||
if (bLogNotFound)
|
||||
{
|
||||
UE_LOG(LogTemp, Error, TEXT("AttributeInfo.cpp - Attribute not found - [%s] on AttributeInfo [%s]"), *AttributeTag.ToString(), *GetNameSafe(this));
|
||||
}
|
||||
return FAuraAttributeInfo();
|
||||
}
|
||||
5
Source/Aura/Private/AbilitySystem/Data/AuraDataAsset.cpp
Normal file
5
Source/Aura/Private/AbilitySystem/Data/AuraDataAsset.cpp
Normal file
@@ -0,0 +1,5 @@
|
||||
// Copyright Echo Devgroup
|
||||
|
||||
|
||||
#include "AbilitySystem/Data/AuraDataAsset.h"
|
||||
|
||||
37
Source/Aura/Private/AbilitySystem/MMC/MMC_MaxHealth.cpp
Normal file
37
Source/Aura/Private/AbilitySystem/MMC/MMC_MaxHealth.cpp
Normal file
@@ -0,0 +1,37 @@
|
||||
// Copyright Echo Devgroup
|
||||
|
||||
|
||||
#include "AbilitySystem/MMC/MMC_MaxHealth.h"
|
||||
|
||||
#include "AbilitySystem/AuraAttributeSet.h"
|
||||
#include "Interact/CombatInterface.h"
|
||||
|
||||
UMMC_MaxHealth::UMMC_MaxHealth()
|
||||
{
|
||||
VigorDef.AttributeToCapture = UAuraAttributeSet::GetVigorAttribute();
|
||||
VigorDef.AttributeSource = EGameplayEffectAttributeCaptureSource::Target;
|
||||
VigorDef.bSnapshot = false;
|
||||
|
||||
RelevantAttributesToCapture.Add(VigorDef);
|
||||
}
|
||||
|
||||
float UMMC_MaxHealth::CalculateBaseMagnitude_Implementation(const FGameplayEffectSpec& Spec) const
|
||||
{
|
||||
|
||||
const FGameplayTagContainer* SourceTags = Spec.CapturedSourceTags.GetAggregatedTags();
|
||||
const FGameplayTagContainer* TargetTags = Spec.CapturedTargetTags.GetAggregatedTags();
|
||||
|
||||
FAggregatorEvaluateParameters EvaluateParams;
|
||||
EvaluateParams.SourceTags = SourceTags;
|
||||
EvaluateParams.TargetTags = TargetTags;
|
||||
|
||||
float Vigor = 0.f;
|
||||
GetCapturedAttributeMagnitude(VigorDef, Spec, EvaluateParams, Vigor);
|
||||
Vigor = FMath::Max<float>(Vigor, 0.0f);
|
||||
|
||||
ICombatInterface* CombatInterface = Cast<ICombatInterface>(Spec.GetContext().GetSourceObject());
|
||||
const int32 PlayerLevel = CombatInterface->GetPlayerLevel();
|
||||
|
||||
|
||||
return 80.f + 2.5f * Vigor + 10.f * PlayerLevel;
|
||||
}
|
||||
36
Source/Aura/Private/AbilitySystem/MMC/MMC_MaxMana.cpp
Normal file
36
Source/Aura/Private/AbilitySystem/MMC/MMC_MaxMana.cpp
Normal file
@@ -0,0 +1,36 @@
|
||||
// Copyright Echo Devgroup
|
||||
|
||||
|
||||
#include "AbilitySystem/MMC/MMC_MaxMana.h"
|
||||
|
||||
#include "AbilitySystem/AuraAttributeSet.h"
|
||||
#include "Interact/CombatInterface.h"
|
||||
|
||||
UMMC_MaxMana::UMMC_MaxMana()
|
||||
{
|
||||
IntDef.AttributeToCapture = UAuraAttributeSet::GetIntelligenceAttribute();
|
||||
IntDef.AttributeSource = EGameplayEffectAttributeCaptureSource::Target;
|
||||
IntDef.bSnapshot = false;
|
||||
|
||||
RelevantAttributesToCapture.Add(IntDef);
|
||||
}
|
||||
|
||||
float UMMC_MaxMana::CalculateBaseMagnitude_Implementation(const FGameplayEffectSpec& Spec) const
|
||||
{
|
||||
const FGameplayTagContainer* SourceTags = Spec.CapturedSourceTags.GetAggregatedTags();
|
||||
const FGameplayTagContainer* TargetTags = Spec.CapturedTargetTags.GetAggregatedTags();
|
||||
|
||||
FAggregatorEvaluateParameters EvaluateParams;
|
||||
EvaluateParams.SourceTags = SourceTags;
|
||||
EvaluateParams.TargetTags = TargetTags;
|
||||
|
||||
float Int = 0.f;
|
||||
GetCapturedAttributeMagnitude(IntDef, Spec, EvaluateParams, Int);
|
||||
Int = FMath::Max<float>(Int, 0.0f);
|
||||
|
||||
ICombatInterface* CombatInterface = Cast<ICombatInterface>(Spec.GetContext().GetSourceObject());
|
||||
const int32 PlayerLevel = CombatInterface->GetPlayerLevel();
|
||||
|
||||
|
||||
return 50.f + 2.5f * Int + 5.f * PlayerLevel;
|
||||
}
|
||||
20
Source/Aura/Private/AuraAssetManager.cpp
Normal file
20
Source/Aura/Private/AuraAssetManager.cpp
Normal file
@@ -0,0 +1,20 @@
|
||||
// Copyright Echo Devgroup
|
||||
|
||||
|
||||
#include "AuraAssetManager.h"
|
||||
#include "AuraGameplayTags.h"
|
||||
|
||||
UAuraAssetManager& UAuraAssetManager::Get()
|
||||
{
|
||||
check(GEngine);
|
||||
UAuraAssetManager* AuraAssetManager = Cast<UAuraAssetManager>(GEngine->AssetManager);
|
||||
return * AuraAssetManager;
|
||||
}
|
||||
|
||||
void UAuraAssetManager::StartInitialLoading()
|
||||
{
|
||||
Super::StartInitialLoading();
|
||||
|
||||
FAuraGameplayTags::InitializeNativeGameplayTags();
|
||||
|
||||
}
|
||||
39
Source/Aura/Private/AuraGameplayTags.cpp
Normal file
39
Source/Aura/Private/AuraGameplayTags.cpp
Normal file
@@ -0,0 +1,39 @@
|
||||
// Copyright Echo Devgroup
|
||||
|
||||
|
||||
#include "AuraGameplayTags.h"
|
||||
#include "GameplayTagsManager.h"
|
||||
FAuraGameplayTags FAuraGameplayTags::GameplayTags;
|
||||
|
||||
void FAuraGameplayTags::InitializeNativeGameplayTags()
|
||||
{
|
||||
//Vital Stats - Health, Mana, MaxHealth, MaxMana
|
||||
GameplayTags.Attributes_Vital_Health = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Vital.Health"), FString(""));
|
||||
GameplayTags.Attributes_Vital_Mana = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Vital.Mana"), FString(""));
|
||||
GameplayTags.Attributes_Vital_MaxHealth = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Vital.MaxHealth"), FString(""));
|
||||
GameplayTags.Attributes_Vital_MaxMana = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Vital.MaxMana"), FString(""));
|
||||
|
||||
//Primary Stats - Strength, Intelligence, Resilience, Vigor
|
||||
GameplayTags.Attributes_Primary_Strength = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Primary.Strength"), FString(""));
|
||||
GameplayTags.Attributes_Primary_Intelligence = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Primary.Intelligence"), FString(""));
|
||||
GameplayTags.Attributes_Primary_Resilience = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Primary.Resilience"), FString(""));
|
||||
GameplayTags.Attributes_Primary_Vigor = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Primary.Vigor"), FString(""));
|
||||
|
||||
//Secondary Stats - Armor, Armor Penetration, Block Chance, Critical Hit Chance, Critical Hit Damage, Critical Hit Resistance, Health Regeneration, Mana Regeneration
|
||||
GameplayTags.Attributes_Secondary_Armor = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Secondary.Armor"), FString(""));
|
||||
GameplayTags.Attributes_Secondary_ArmorPenetration = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Secondary.ArmorPenetration"), FString(""));
|
||||
GameplayTags.Attributes_Secondary_BlockChance = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Secondary.BlockChance"), FString(""));
|
||||
GameplayTags.Attributes_Secondary_CriticalHitChance = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Secondary.CriticalHitChance"), FString(""));
|
||||
GameplayTags.Attributes_Secondary_CriticalHitDamage = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Secondary.CriticalHitDamage"), FString(""));
|
||||
GameplayTags.Attributes_Secondary_CriticalHitResistance = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Secondary.CriticalHitResistance"), FString(""));
|
||||
GameplayTags.Attributes_Secondary_HealthRegeneration = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Secondary.HealthRegeneration"), FString(""));
|
||||
GameplayTags.Attributes_Secondary_ManaRegeneration = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Secondary.ManaRegeneration"), FString(""));
|
||||
|
||||
//Tertiary Stats - Resistances - Physical, Arcane, Fire, Lightning
|
||||
GameplayTags.Attributes_Resistance_Physical = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Resistance.Physical"), FString(""));
|
||||
GameplayTags.Attributes_Resistance_Arcane = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Resistance.Arcane"), FString(""));
|
||||
GameplayTags.Attributes_Resistance_Fire = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Resistance.Fire"), FString(""));
|
||||
GameplayTags.Attributes_Resistance_Lightning = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Resistance.Lightning"), FString(""));
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
// Copyright Echo Devgroup
|
||||
|
||||
|
||||
#include "UI/WidgetController/AttributeMenuWidgetController.h"
|
||||
#include "AbilitySystem/Data/AttributeInfo.h"
|
||||
#include "AuraGameplayTags.h"
|
||||
#include "AbilitySystem/AuraAttributeSet.h"
|
||||
|
||||
void UAttributeMenuWidgetController::BindCallbacksToDependencies()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void UAttributeMenuWidgetController::BroadcastInitialValues()
|
||||
{
|
||||
UAuraAttributeSet* AS = CastChecked<UAuraAttributeSet>(AttributeSet);
|
||||
|
||||
check(AttributeInfo);
|
||||
|
||||
FAuraAttributeInfo Info = AttributeInfo->FindAttributeInfoForTag(FAuraGameplayTags::Get().Attributes_Primary_Strength);
|
||||
Info.AttributeValue = AS->GetStrength();
|
||||
AttributeInfoDelegate.Broadcast(Info);
|
||||
}
|
||||
|
||||
void UAttributeMenuWidgetController::BroadcastAttributeInfo(const FGameplayTag& AttributeTag,
|
||||
const FGameplayAttribute& Attribute) const
|
||||
{
|
||||
|
||||
}
|
||||
27
Source/Aura/Public/AbilitySystem/AuraAbilitySystemLibrary.h
Normal file
27
Source/Aura/Public/AbilitySystem/AuraAbilitySystemLibrary.h
Normal file
@@ -0,0 +1,27 @@
|
||||
// Copyright Echo Devgroup
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Kismet/BlueprintFunctionLibrary.h"
|
||||
#include "UI/WidgetController/AttributeMenuWidgetController.h"
|
||||
#include "UI/WidgetController/OverlayWidgetController.h"
|
||||
#include "AuraAbilitySystemLibrary.generated.h"
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
UCLASS()
|
||||
class AURA_API UAuraAbilitySystemLibrary : public UBlueprintFunctionLibrary
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
|
||||
UFUNCTION(BlueprintPure, Category="AuraAbilitySystem|Controller")
|
||||
static UOverlayWidgetController* GetOverlayWidgetController(const UObject* WorldContextObject);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category="AuraAbilitySystem|Controller")
|
||||
static UAttributeMenuWidgetController* GetAttributeMenuWidgetController(const UObject* WorldContextObject);
|
||||
|
||||
};
|
||||
40
Source/Aura/Public/AbilitySystem/Data/AttributeInfo.h
Normal file
40
Source/Aura/Public/AbilitySystem/Data/AttributeInfo.h
Normal file
@@ -0,0 +1,40 @@
|
||||
// Copyright Echo Devgroup
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "GameplayTagContainer.h"
|
||||
#include "Engine/DataAsset.h"
|
||||
#include "AttributeInfo.generated.h"
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FAuraAttributeInfo
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
|
||||
FGameplayTag AttributeTag = FGameplayTag();
|
||||
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
|
||||
FText AttributeName = FText();
|
||||
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
|
||||
FText AttributeDesc = FText();
|
||||
|
||||
UPROPERTY(BlueprintReadOnly)
|
||||
float AttributeValue = 0.f;
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
UCLASS()
|
||||
class AURA_API UAttributeInfo : public UDataAsset
|
||||
{
|
||||
GENERATED_BODY()
|
||||
public:
|
||||
FAuraAttributeInfo FindAttributeInfoForTag(const FGameplayTag& AttributeTag, bool bLogNotFound = false) const;
|
||||
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
|
||||
TArray<FAuraAttributeInfo> AttributeInformation;
|
||||
};
|
||||
17
Source/Aura/Public/AbilitySystem/Data/AuraDataAsset.h
Normal file
17
Source/Aura/Public/AbilitySystem/Data/AuraDataAsset.h
Normal file
@@ -0,0 +1,17 @@
|
||||
// Copyright Echo Devgroup
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Engine/DataAsset.h"
|
||||
#include "AuraDataAsset.generated.h"
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
UCLASS()
|
||||
class AURA_API UAuraDataAsset : public UDataAsset
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
};
|
||||
24
Source/Aura/Public/AbilitySystem/MMC/MMC_MaxHealth.h
Normal file
24
Source/Aura/Public/AbilitySystem/MMC/MMC_MaxHealth.h
Normal file
@@ -0,0 +1,24 @@
|
||||
// Copyright Echo Devgroup
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "GameplayModMagnitudeCalculation.h"
|
||||
#include "MMC_MaxHealth.generated.h"
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
UCLASS()
|
||||
class AURA_API UMMC_MaxHealth : public UGameplayModMagnitudeCalculation
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
UMMC_MaxHealth();
|
||||
|
||||
virtual float CalculateBaseMagnitude_Implementation(const FGameplayEffectSpec& Spec) const override;
|
||||
|
||||
private:
|
||||
FGameplayEffectAttributeCaptureDefinition VigorDef;
|
||||
};
|
||||
24
Source/Aura/Public/AbilitySystem/MMC/MMC_MaxMana.h
Normal file
24
Source/Aura/Public/AbilitySystem/MMC/MMC_MaxMana.h
Normal file
@@ -0,0 +1,24 @@
|
||||
// Copyright Echo Devgroup
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "GameplayModMagnitudeCalculation.h"
|
||||
#include "MMC_MaxMana.generated.h"
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
UCLASS()
|
||||
class AURA_API UMMC_MaxMana : public UGameplayModMagnitudeCalculation
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
UMMC_MaxMana();
|
||||
|
||||
virtual float CalculateBaseMagnitude_Implementation(const FGameplayEffectSpec& Spec) const override;
|
||||
|
||||
private:
|
||||
FGameplayEffectAttributeCaptureDefinition IntDef;
|
||||
};
|
||||
24
Source/Aura/Public/AuraAssetManager.h
Normal file
24
Source/Aura/Public/AuraAssetManager.h
Normal file
@@ -0,0 +1,24 @@
|
||||
// Copyright Echo Devgroup
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Engine/AssetManager.h"
|
||||
#include "AuraAssetManager.generated.h"
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
UCLASS()
|
||||
class AURA_API UAuraAssetManager : public UAssetManager
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
static UAuraAssetManager& Get();
|
||||
|
||||
protected:
|
||||
virtual void StartInitialLoading() override;
|
||||
private:
|
||||
|
||||
};
|
||||
52
Source/Aura/Public/AuraGameplayTags.h
Normal file
52
Source/Aura/Public/AuraGameplayTags.h
Normal file
@@ -0,0 +1,52 @@
|
||||
// Copyright Echo Devgroup
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "GameplayTagContainer.h"
|
||||
|
||||
/**
|
||||
* AuraGameplayTags
|
||||
*
|
||||
* Singleton containing native Gameplay Tags
|
||||
*/
|
||||
struct FAuraGameplayTags
|
||||
{
|
||||
public:
|
||||
|
||||
static const FAuraGameplayTags& Get() { return GameplayTags; };
|
||||
static void InitializeNativeGameplayTags();
|
||||
|
||||
//Vital Stats - Health, Mana, MaxHealth, MaxMana
|
||||
FGameplayTag Attributes_Vital_Health;
|
||||
FGameplayTag Attributes_Vital_Mana;
|
||||
FGameplayTag Attributes_Vital_MaxHealth;
|
||||
FGameplayTag Attributes_Vital_MaxMana;
|
||||
|
||||
//Primary Stats - Strength, Intelligence, Resilience, Vigor
|
||||
FGameplayTag Attributes_Primary_Strength;
|
||||
FGameplayTag Attributes_Primary_Intelligence;
|
||||
FGameplayTag Attributes_Primary_Resilience;
|
||||
FGameplayTag Attributes_Primary_Vigor;
|
||||
|
||||
//Secondary Stats - Armor, Armor Penetration, Block Chance, Critical Hit Chance, Critical Hit Damage, Critical Hit Resistance, Health Regeneration, Mana Regeneration
|
||||
FGameplayTag Attributes_Secondary_Armor;
|
||||
FGameplayTag Attributes_Secondary_ArmorPenetration;
|
||||
FGameplayTag Attributes_Secondary_BlockChance;
|
||||
FGameplayTag Attributes_Secondary_CriticalHitChance;
|
||||
FGameplayTag Attributes_Secondary_CriticalHitDamage;
|
||||
FGameplayTag Attributes_Secondary_CriticalHitResistance;
|
||||
FGameplayTag Attributes_Secondary_HealthRegeneration;
|
||||
FGameplayTag Attributes_Secondary_ManaRegeneration;
|
||||
|
||||
//Tertiary Stats - Resistances - Physical, Arcane, Fire, Lightning
|
||||
FGameplayTag Attributes_Resistance_Physical;
|
||||
FGameplayTag Attributes_Resistance_Arcane;
|
||||
FGameplayTag Attributes_Resistance_Fire;
|
||||
FGameplayTag Attributes_Resistance_Lightning;
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
static FAuraGameplayTags GameplayTags;
|
||||
};
|
||||
@@ -0,0 +1,43 @@
|
||||
// Copyright Echo Devgroup
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "UI/WidgetController/AuraWidgetController.h"
|
||||
#include "AttributeMenuWidgetController.generated.h"
|
||||
|
||||
class UAttributeInfo;
|
||||
struct FAuraAttributeInfo;
|
||||
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FAttributeInfoSignature, const FAuraAttributeInfo&, Info);
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
UCLASS(Blueprintable, BlueprintType)
|
||||
class AURA_API UAttributeMenuWidgetController : public UAuraWidgetController
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
virtual void BindCallbacksToDependencies() override;
|
||||
virtual void BroadcastInitialValues() override;
|
||||
|
||||
|
||||
UPROPERTY(BlueprintAssignable, Category="GAS|Attributes")
|
||||
FAttributeInfoSignature AttributeInfoDelegate;
|
||||
|
||||
//UPROPERTY(BlueprintAssignable, Category="GAS|Attributes")
|
||||
//FOnPlayerStatChangedSignature AttributePointsChangedDelegate;
|
||||
|
||||
//UFUNCTION(BlueprintCallable)
|
||||
//void UpgradeAttribute(const FGameplayTag& AttributeTag);
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
UPROPERTY(EditDefaultsOnly)
|
||||
TObjectPtr<UAttributeInfo> AttributeInfo;
|
||||
|
||||
private:
|
||||
void BroadcastAttributeInfo(const FGameplayTag& AttributeTag, const FGameplayAttribute& Attribute) const;
|
||||
};
|
||||
Reference in New Issue
Block a user