Files
Cog/Source/CogSample/CogSampleExecCalculation_PoolRegen.h
2023-10-09 02:20:52 -04:00

47 lines
1.5 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)
FGameplayAttribute MaxAmountAttribute;
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"))
FScalableFloat TotalDuration;
virtual void Execute_Implementation(const FGameplayEffectCustomExecutionParameters& ExecutionParams, OUT FGameplayEffectCustomExecutionOutput& OutExecutionOutput) const override;
};