53. Gameplay Effect Delegates

This commit is contained in:
Edward R. Gonzalez 2024-04-25 12:46:26 -04:00
parent 901ef9460b
commit 72f8b9ca58
3 changed files with 33 additions and 9 deletions

View File

@ -1 +1,20 @@
#include "GasaAbilitySystemComponent.h" #include "GasaAbilitySystemComponent.h"
#include "Engine/Engine.h"
void UGasaAbilitySystemComp::OnAbilityActorInfoSet()
{
}
void UGasaAbilitySystemComp::EffectApplied(UAbilitySystemComponent* AbilitySystem, FGameplayEffectSpec const& Spec,
FActiveGameplayEffectHandle ActiveEffect)
{
GEngine->AddOnScreenDebugMessage(1, 8.f, FColor::Yellow, FString("Effect applied"));
}
void UGasaAbilitySystemComp::InitAbilityActorInfo(AActor* InOwnerActor, AActor* InAvatarActor)
{
Super::InitAbilityActorInfo(InOwnerActor, InAvatarActor);
OnGameplayEffectAppliedDelegateToSelf.AddUObject(this, & ThisClass::EffectApplied);
}

View File

@ -6,10 +6,17 @@
#include "GasaAbilitySystemComponent.generated.h" #include "GasaAbilitySystemComponent.generated.h"
UCLASS(BlueprintType) UCLASS(BlueprintType)
class GASA_API UGasaAbilitySystemComp : public UAbilitySystemComponent class GASA_API UGasaAbilitySystemComp : public UAbilitySystemComponent
{ {
GENERATED_BODY() GENERATED_BODY()
public: public:
// TODO(Ed): If hes only using this to bind the EffectApplied to a delegate, then just use the init override instead.
void OnAbilityActorInfoSet();
void EffectApplied(UAbilitySystemComponent* AbilitySystem, FGameplayEffectSpec const& Spec, FActiveGameplayEffectHandle ActiveEffect);
#pragma region AbilitySystemComponent
void InitAbilityActorInfo(AActor* InOwnerActor, AActor* InAvatarActor) override;
#pragma endregion AbilitySystemComponent
}; };

View File

@ -155,12 +155,11 @@ void AGasaCharacter::PossessedBy(AController* NewController)
if (GetMesh() && IsReplicatingMovement() && (GetRemoteRole() == ROLE_AutonomousProxy && GetNetConnection() != nullptr)) if (GetMesh() && IsReplicatingMovement() && (GetRemoteRole() == ROLE_AutonomousProxy && GetNetConnection() != nullptr))
GetMesh()->bOnlyAllowAutonomousTickPose = true; GetMesh()->bOnlyAllowAutonomousTickPose = true;
} }
#if 0
if (bAutoAbilitySystem) if (bAutoAbilitySystem)
{
// TODO(Ed): Do we need to do this for enemies?
AbilitySystem->InitAbilityActorInfo(this, this); AbilitySystem->InitAbilityActorInfo(this, this);
} #endif
} }
void AGasaCharacter::SetPlayerDefaults() void AGasaCharacter::SetPlayerDefaults()
@ -179,11 +178,10 @@ void AGasaCharacter::BeginPlay()
{ {
Super::BeginPlay(); Super::BeginPlay();
// TODO(Ed): Find out if this is the best spot todo this
// There is also OnPossessed, PostInitializeComponents, etc...
if (bAutoAbilitySystem) if (bAutoAbilitySystem)
{
// TODO(Ed): Do we need to do this for enemies?
AbilitySystem->InitAbilityActorInfo(this, this); AbilitySystem->InitAbilityActorInfo(this, this);
}
} }
void AGasaCharacter::Tick(float DeltaSeconds) void AGasaCharacter::Tick(float DeltaSeconds)