Files
Cog/Source/CogSample/CogSampleExecCalculation_PoolRegen.h
T
2023-10-05 16:57:43 -04:00

47 lines
1.6 KiB
C++

#pragma once
#include "CoreMinimal.h"
#include "GameplayEffectExecutionCalculation.h"
#include "ScalableFloat.h"
#include "CogSampleExecCalculation_PoolRegen.generated.h"
UENUM()
enum class ECogSamplePoolRegenMode : uint8
{
Attribute,
MaxPoolDuration,
ScalableFloatRate,
};
UCLASS()
class UCogSampleExecCalculation_PoolRegen : public UGameplayEffectExecutionCalculation
{
GENERATED_BODY()
public:
UCogSampleExecCalculation_PoolRegen();
UPROPERTY(EditAnywhere, BlueprintReadOnly)
FGameplayAttribute AmountAttribute;
UPROPERTY(EditAnywhere, BlueprintReadOnly)
FGameplayTag DisableRegenTag;
UPROPERTY(EditAnywhere, BlueprintReadOnly)
ECogSamplePoolRegenMode Mode = ECogSamplePoolRegenMode::MaxPoolDuration;
UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (EditConditionHides, EditCondition = "Mode == ECogSamplePoolRegenMode::Attribute"))
FGameplayAttribute RegenRateAttribute;
UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (EditConditionHides, EditCondition = "Mode == ECogSamplePoolRegenMode::ScalableFloatRate"))
FScalableFloat RegenRate;
UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (EditConditionHides, EditCondition = "Mode == ECogSamplePoolRegenMode::MaxPoolDuration"))
FGameplayAttribute MaxAmountAttribute;
UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (EditConditionHides, EditCondition = "Mode == ECogSamplePoolRegenMode::MaxPoolDuration"))
FScalableFloat TotalDuration;
virtual void Execute_Implementation(const FGameplayEffectCustomExecutionParameters& ExecutionParams, OUT FGameplayEffectCustomExecutionOutput& OutExecutionOutput) const override;
};