mirror of
https://github.com/Ed94/Cog.git
synced 2026-06-13 08:02:23 -07:00
42ca1afc6a
Cog Sample: Make Area a component instead of an actor Cog Sample: Add Basic actor for Projectiles, Areas, etc... Cog Sample: Start to add Projectile Cog Sample: Start to add SpawnPrediction
93 lines
4.6 KiB
C++
93 lines
4.6 KiB
C++
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "Abilities/GameplayAbility.h"
|
|
#include "CogSampleGameplayAbility.generated.h"
|
|
|
|
class UCogSampleSpawnPredictionComponent;
|
|
|
|
UCLASS()
|
|
class UCogSampleGameplayAbility : public UGameplayAbility
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
|
|
UCogSampleGameplayAbility();
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------
|
|
// UGameplayAbility overrides
|
|
//----------------------------------------------------------------------------------------------------------------------
|
|
virtual void PreActivate(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, FOnGameplayAbilityEnded::FDelegate* OnGameplayAbilityEndedDelegate, const FGameplayEventData* TriggerEventData) override;
|
|
|
|
virtual void ActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEventData* TriggerEventData) override;
|
|
|
|
virtual void EndAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, bool bReplicateEndAbility, bool bWasCancelled) override;
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------
|
|
// Cooldown & Cost
|
|
//----------------------------------------------------------------------------------------------------------------------
|
|
UFUNCTION(BlueprintNativeEvent, BlueprintPure, Category = Ability)
|
|
float GetUnmitigatedCooldownDuration() const;
|
|
|
|
UFUNCTION(BlueprintNativeEvent, BlueprintPure, Category = Ability)
|
|
float GetUnmitigatedCost() const;
|
|
|
|
const FGameplayTag& GetCooldownTag() const { return CooldownTag; }
|
|
|
|
void SetCooldownTag(FGameplayTag Value) { CooldownTag = Value; }
|
|
|
|
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;
|
|
|
|
UFUNCTION(BlueprintCallable, Category = Ability, BlueprintPure=false)
|
|
virtual void GetCooldownInfos(float& TimeRemaining, float& CooldownDuration) const;
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------
|
|
// 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;
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------
|
|
// Predicated Actors
|
|
//----------------------------------------------------------------------------------------------------------------------
|
|
|
|
UFUNCTION(BlueprintCallable)
|
|
void SetupSpawnPrediction(AActor* PredictedSpawn, int32 InstanceIndex);
|
|
|
|
UFUNCTION(BlueprintCallable)
|
|
void SetupSpawnPredictionComponent(UCogSampleSpawnPredictionComponent* SpawnPrediction, int32 InstanceIndex);
|
|
|
|
private:
|
|
|
|
bool IsCostGameplayEffectIsZero(const UGameplayEffect* GameplayEffect, float Level, const FGameplayEffectContextHandle& EffectContext) const;
|
|
|
|
UPROPERTY(BlueprintReadOnly, meta = (AllowPrivateAccess = "true"))
|
|
FGameplayTag CooldownTag;
|
|
|
|
UPROPERTY(BlueprintReadOnly, EditAnywhere, Category = "Cooldowns", meta = (AllowPrivateAccess = "true"))
|
|
FScalableFloat Cooldown;
|
|
|
|
UPROPERTY(BlueprintReadOnly, EditAnywhere, Category = "Costs", meta = (AllowPrivateAccess = "true"))
|
|
FScalableFloat Cost;
|
|
|
|
UPROPERTY(Transient)
|
|
FGameplayTagContainer CachedCooldownTags;
|
|
|
|
};
|