Add more abilities in the sample

This commit is contained in:
Arnaud Jamin
2023-10-05 16:57:43 -04:00
parent e952256b98
commit 25f2e06400
83 changed files with 966 additions and 356 deletions
@@ -0,0 +1,70 @@
#pragma once
#include "CoreMinimal.h"
#include "Abilities/GameplayAbility.h"
#include "CogSampleGameplayAbility.generated.h"
UCLASS()
class UCogSampleGameplayAbility : public UGameplayAbility
{
GENERATED_BODY()
public:
UCogSampleGameplayAbility();
const FGameplayTag& GetSlotTag() const { return SlotTag; }
void SetSlotTag(FGameplayTag Value) { SlotTag = Value; }
//----------------------------------------------------------------------------------------------------------------------
// Cooldown & Cost
//----------------------------------------------------------------------------------------------------------------------
UFUNCTION(BlueprintNativeEvent, BlueprintPure, Category = Ability)
float GetUnmitigatedCooldownDuration() const;
UFUNCTION(BlueprintNativeEvent, BlueprintPure, Category = Ability)
float GetUnmitigatedCost() const;
virtual const FGameplayTagContainer* GetCooldownTags() const override;
virtual void ApplyCooldown(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override;
virtual bool CheckCooldown(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, OUT FGameplayTagContainer* OptionalRelevantTags = nullptr) const override;
virtual bool CheckCost(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, OUT FGameplayTagContainer* OptionalRelevantTags = nullptr) const override;
virtual void ApplyCost(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override;
//----------------------------------------------------------------------------------------------------------------------
// Scalable Float
//----------------------------------------------------------------------------------------------------------------------
UFUNCTION(BlueprintPure)
float GetFloatValueAtAbilityLevel(const FScalableFloat& ScalableFloat) const;
UFUNCTION(BlueprintPure)
bool GetBoolValueAtAbilityLevel(const FScalableFloat& ScalableFloat) const;
UFUNCTION(BlueprintPure)
int32 GetIntValueAtAbilityLevel(const FScalableFloat& ScalableFloat) const;
private:
bool IsCostGameplayEffectIsZero(const UGameplayEffect* GameplayEffect, float Level, const FGameplayEffectContextHandle& EffectContext) const;
UPROPERTY(BlueprintReadOnly, meta = (AllowPrivateAccess = "true"))
FGameplayTag SlotTag;
UPROPERTY(BlueprintReadOnly, EditAnywhere, Category = "Cooldowns", meta = (AllowPrivateAccess = "true"))
FScalableFloat Cooldown;
UPROPERTY(BlueprintReadOnly, EditAnywhere, Category = "Costs", meta = (AllowPrivateAccess = "true"))
FScalableFloat Cost;
UPROPERTY(Transient)
FGameplayTagContainer CachedCooldownTags;
};