Make the damage window more generic

The goal was to handle gameplay event other than damage, such as heals. Renamed it to metric.
This commit is contained in:
Arnaud Jamin
2023-10-03 01:00:06 -04:00
parent 82dca91a89
commit 60b1578e96
11 changed files with 434 additions and 415 deletions
+10 -14
View File
@@ -348,13 +348,11 @@ void ACogSampleCharacter::Look(const FInputActionValue& Value)
void ACogSampleCharacter::OnDamageReceived(float ReceivedDamage, float IncomingDamage, AActor* DamageDealer, const FGameplayEffectSpec& EffectSpec)
{
#if USE_COG
FCogInterfaceDamageParams Params;
Params.Type = ECogInterfaceDamageEventType::DamageReceived;
Params.MitigatedDamage = ReceivedDamage;
Params.IncomingDamage = IncomingDamage;
Params.DamageDealer = DamageDealer;
Params.DamageReceiver = this;
OnDamageEventDelegate.Broadcast(Params);
FCogInterfaceMetricEventParams Params;
Params.Name = "Damage Received";
Params.MitigatedValue = ReceivedDamage;
Params.UnmitigatedValue = IncomingDamage;
OnMetricEventDelegate.Broadcast(Params);
#endif //USE_COG
}
@@ -362,13 +360,11 @@ void ACogSampleCharacter::OnDamageReceived(float ReceivedDamage, float IncomingD
void ACogSampleCharacter::OnDamageDealt(float ReceivedDamage, float IncomingDamage, AActor* DamageReceiver, const FGameplayEffectSpec& EffectSpec)
{
#if USE_COG
FCogInterfaceDamageParams Params;
Params.Type = ECogInterfaceDamageEventType::DamageDealt;
Params.MitigatedDamage = ReceivedDamage;
Params.IncomingDamage = IncomingDamage;
Params.DamageDealer = this;
Params.DamageReceiver = DamageReceiver;
OnDamageEventDelegate.Broadcast(Params);
FCogInterfaceMetricEventParams Params;
Params.Name = "Damage Dealt";
Params.MitigatedValue = ReceivedDamage;
Params.UnmitigatedValue = IncomingDamage;
OnMetricEventDelegate.Broadcast(Params);
#endif //USE_COG
}
+4 -4
View File
@@ -5,7 +5,7 @@
#include "ActiveGameplayEffectHandle.h"
#include "AttributeSet.h"
#include "CogDefines.h"
#include "CogInterfaceDamageActor.h"
#include "CogInterfaceMetricActor.h"
#include "CogInterfaceFilteredActor.h"
#include "GameFramework/Character.h"
#include "GameplayAbilitySpecHandle.h"
@@ -59,7 +59,7 @@ UCLASS(config=Game)
class ACogSampleCharacter : public ACharacter
, public IAbilitySystemInterface
, public ICogInterfacesFilteredActor
, public ICogInterfaceDamageActor
, public ICogInterfaceMetricActor
{
GENERATED_BODY()
@@ -75,7 +75,7 @@ public:
virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
virtual void PossessedBy(AController* NewController) override;
virtual FCogInterfaceOnDamageEvent& OnDamageEvent() override { return OnDamageEventDelegate; }
virtual FCogInterfaceOnMetricEvent& OnMetricEvent() override { return OnMetricEventDelegate; }
virtual bool IsActorFilteringDebug() const override { return true; }
void OnAcknowledgePossession(APlayerController* InController);
@@ -146,7 +146,7 @@ public:
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Ability)
TArray<TSubclassOf<UGameplayEffect>> Effects;
FCogInterfaceOnDamageEvent OnDamageEventDelegate;
FCogInterfaceOnMetricEvent OnMetricEventDelegate;
private:
+2 -2
View File
@@ -17,8 +17,8 @@
#include "CogAbilityWindow_Abilities.h"
#include "CogAbilityWindow_Attributes.h"
#include "CogAbilityWindow_Cheats.h"
#include "CogAbilityWindow_Damages.h"
#include "CogAbilityWindow_Effects.h"
#include "CogAbilityWindow_Metrics.h"
#include "CogAbilityWindow_Pools.h"
#include "CogAbilityWindow_Tags.h"
#include "CogAbilityWindow_Tweaks.h"
@@ -194,7 +194,7 @@ void ACogSampleGameState::InitializeCog()
UCogAbilityWindow_Cheats* CheatsWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Cheats>("Gameplay.Cheats");
CheatsWindow->CheatsAsset = GetFirstAssetByClass<UCogAbilityDataAsset_Cheats>();
CogWindowManager->CreateWindow<UCogAbilityWindow_Damages>("Gameplay.Damages");
CogWindowManager->CreateWindow<UCogAbilityWindow_Metrics>("Gameplay.Metrics");
UCogAbilityWindow_Effects* EffectsWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Effects>("Gameplay.Effects");
EffectsWindow->NegativeEffectTag = Tag_Effect_Alignment_Negative;