Added Meta values(cost, restore) to the mana attribute set
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
|
||||
#include "ManaAttributeSet.h"
|
||||
|
||||
UManaAttributeSet::UManaAttributeSet()
|
||||
@@ -31,4 +30,37 @@ void UManaAttributeSet::OnRep_MaxMana(const FGameplayAttributeData& OldValue)
|
||||
const float OldMaxMana = OldValue.GetCurrentValue();
|
||||
const float NewMaxMana = GetMaxMana();
|
||||
OnMaxManaChanged.Broadcast(this, OldMaxMana, NewMaxMana);
|
||||
}
|
||||
}
|
||||
|
||||
void UManaAttributeSet::PostGameplayEffectExecute(const FGameplayEffectModCallbackData& Data)
|
||||
{
|
||||
Super::PostGameplayEffectExecute(Data);
|
||||
if (Data.EvaluatedData.Attribute == GetManaAttribute())
|
||||
{
|
||||
SetMana(FMath::Clamp(GetMana(), 0.0f, GetMaxMana()));
|
||||
}
|
||||
if (Data.EvaluatedData.Attribute == GetCostAttribute())
|
||||
{
|
||||
const float CostValue = GetCost();
|
||||
const float OldMana = GetMana();
|
||||
const float ManaMax = GetMaxMana();
|
||||
const float NewMana = FMath::Clamp(OldMana-CostValue,0.0f, ManaMax);
|
||||
if (OldMana!=NewMana)
|
||||
{
|
||||
SetMana(NewMana);
|
||||
}
|
||||
SetCost(0.0f);
|
||||
}
|
||||
if (Data.EvaluatedData.Attribute==GetMaxManaAttribute())
|
||||
{
|
||||
const float RestoreValue = GetMaxMana();
|
||||
const float OldMana = GetMana();
|
||||
const float ManaMax = GetMaxMana();
|
||||
const float NewMana = FMath::Clamp(OldMana+RestoreValue,0.0f, ManaMax);
|
||||
if (OldMana!=NewMana)
|
||||
{
|
||||
SetMana(NewMana);
|
||||
}
|
||||
SetRestore(0.0f);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "AttributeSet.h"
|
||||
#include "AbilitySystemComponent.h"
|
||||
#include "Net/UnrealNetwork.h"
|
||||
#include "GameplayEffectExtension.h"
|
||||
#include "ManaAttributeSet.generated.h"
|
||||
|
||||
/**
|
||||
@@ -28,16 +29,26 @@ class ELISTRIA_CALLING_API UManaAttributeSet : public UAttributeSet
|
||||
public:
|
||||
UManaAttributeSet();
|
||||
|
||||
virtual void PostGameplayEffectExecute(const FGameplayEffectModCallbackData& Data) override;
|
||||
|
||||
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
|
||||
|
||||
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, ReplicatedUsing=OnRep_Mana)
|
||||
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, ReplicatedUsing=OnRep_Mana, meta = (HideFromModifiers))
|
||||
FGameplayAttributeData Mana;
|
||||
|
||||
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, ReplicatedUsing=OnRep_MaxMana)
|
||||
FGameplayAttributeData MaxMana;
|
||||
|
||||
UPROPERTY(VisibleAnywhere)
|
||||
FGameplayAttributeData Cost;
|
||||
|
||||
UPROPERTY(VisibleAnywhere)
|
||||
FGameplayAttributeData Restore;
|
||||
|
||||
ATTRIBUTE_ACCESSORS(UManaAttributeSet, Mana)
|
||||
ATTRIBUTE_ACCESSORS(UManaAttributeSet, MaxMana)
|
||||
ATTRIBUTE_ACCESSORS(UManaAttributeSet, Cost)
|
||||
ATTRIBUTE_ACCESSORS(UManaAttributeSet, Restore)
|
||||
|
||||
UFUNCTION()
|
||||
void OnRep_Mana(const FGameplayAttributeData& OldValue);
|
||||
|
||||
Reference in New Issue
Block a user