From f17c53a1a9497953b61ee0b84491304e3f95539c Mon Sep 17 00:00:00 2001 From: Ed_ Date: Wed, 24 Apr 2024 11:48:07 -0400 Subject: [PATCH] 42. Infinite Gameplay Effects --- .../Win64/UnrealEditor-GasaEditor.dll | 2 +- .../Core/AbilitySystem/GE_AreaFire.uasset | 3 ++ Project/Content/Core/BP_AreaFire.uasset | 3 ++ .../Content/Core/BP_AreaFire_RawEffect.uasset | 3 ++ .../Core/Pickups/BP_HealthCrystal.uasset | 4 +-- .../Pickups/BP_HealthCrystal_RawEffect.uasset | 3 ++ .../Core/Pickups/BP_ManaCrystal.uasset | 4 +-- .../Pickups/BP_ManaCrystal_RawEffect.uasset | 3 ++ Project/Content/Levels/StartupMap.umap | 4 +-- .../Gasa/AbilitySystem/GasaEffectActor.cpp | 12 +++++++ .../Gasa/AbilitySystem/GasaEffectActor.h | 35 +++++++++++++++++++ Project/Source/Gasa/GasaCommon.h | 2 ++ 12 files changed, 71 insertions(+), 7 deletions(-) create mode 100644 Project/Content/Core/AbilitySystem/GE_AreaFire.uasset create mode 100644 Project/Content/Core/BP_AreaFire.uasset create mode 100644 Project/Content/Core/BP_AreaFire_RawEffect.uasset create mode 100644 Project/Content/Core/Pickups/BP_HealthCrystal_RawEffect.uasset create mode 100644 Project/Content/Core/Pickups/BP_ManaCrystal_RawEffect.uasset diff --git a/Project/Binaries/Win64/UnrealEditor-GasaEditor.dll b/Project/Binaries/Win64/UnrealEditor-GasaEditor.dll index bfd2082..60e8a91 100644 --- a/Project/Binaries/Win64/UnrealEditor-GasaEditor.dll +++ b/Project/Binaries/Win64/UnrealEditor-GasaEditor.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36bd29b06747f05f67c12ab6dcce9e0da7f419b2e02c9051327cf1419f07ddbd +oid sha256:a08006e998e3135977ef15159599f237160d46f7bcee5853af42580a568a7464 size 79360 diff --git a/Project/Content/Core/AbilitySystem/GE_AreaFire.uasset b/Project/Content/Core/AbilitySystem/GE_AreaFire.uasset new file mode 100644 index 0000000..768c0ae --- /dev/null +++ b/Project/Content/Core/AbilitySystem/GE_AreaFire.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e66e6c6303e58dad33df07f1d8ec9567f7ff1740b238fde0449e67f9bf5e74f +size 13480 diff --git a/Project/Content/Core/BP_AreaFire.uasset b/Project/Content/Core/BP_AreaFire.uasset new file mode 100644 index 0000000..85e7a0a --- /dev/null +++ b/Project/Content/Core/BP_AreaFire.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5b0a685d35e41d29090007064d1f0b4db91ca4dbd4db8d8511d8e86fd68e591 +size 2500 diff --git a/Project/Content/Core/BP_AreaFire_RawEffect.uasset b/Project/Content/Core/BP_AreaFire_RawEffect.uasset new file mode 100644 index 0000000..2f66dea --- /dev/null +++ b/Project/Content/Core/BP_AreaFire_RawEffect.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71622de18c1e4ba57374f394b081f40b65419bf8af9a38e2c2f8d80dbbfb9496 +size 33212 diff --git a/Project/Content/Core/Pickups/BP_HealthCrystal.uasset b/Project/Content/Core/Pickups/BP_HealthCrystal.uasset index c5191e9..7bd6980 100644 --- a/Project/Content/Core/Pickups/BP_HealthCrystal.uasset +++ b/Project/Content/Core/Pickups/BP_HealthCrystal.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:867f9694bc84970eb6373196e244519df8f325d02f9f7901cd0534107ac28dc4 -size 41427 +oid sha256:ba96c7d2f601107b37b74822be061af49c588ac10bd6aff61a9dd6355ebc4189 +size 2671 diff --git a/Project/Content/Core/Pickups/BP_HealthCrystal_RawEffect.uasset b/Project/Content/Core/Pickups/BP_HealthCrystal_RawEffect.uasset new file mode 100644 index 0000000..975356c --- /dev/null +++ b/Project/Content/Core/Pickups/BP_HealthCrystal_RawEffect.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d441bd455809ed77d69f87cf490938d1a7432ff84e61fa34079e75931a9ad4e +size 41485 diff --git a/Project/Content/Core/Pickups/BP_ManaCrystal.uasset b/Project/Content/Core/Pickups/BP_ManaCrystal.uasset index c6ea446..4080188 100644 --- a/Project/Content/Core/Pickups/BP_ManaCrystal.uasset +++ b/Project/Content/Core/Pickups/BP_ManaCrystal.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:45acb8255844625a1a871a4f837a048fe43715dec9b7aad7f3ccc33858c69f21 -size 41338 +oid sha256:755888561fc170e2bbcf5161a12498b020fe7939f885eeb662890a6f36662150 +size 2625 diff --git a/Project/Content/Core/Pickups/BP_ManaCrystal_RawEffect.uasset b/Project/Content/Core/Pickups/BP_ManaCrystal_RawEffect.uasset new file mode 100644 index 0000000..91a3d9b --- /dev/null +++ b/Project/Content/Core/Pickups/BP_ManaCrystal_RawEffect.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6adb8f6d545d1b59628292e3d21c0c5f6ffb5ceceb4bfeed9a9fad1749b333b2 +size 41407 diff --git a/Project/Content/Levels/StartupMap.umap b/Project/Content/Levels/StartupMap.umap index b8bf5e2..3109324 100644 --- a/Project/Content/Levels/StartupMap.umap +++ b/Project/Content/Levels/StartupMap.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a60dd9c730ef218547e9dfa22254916982c904c327b4e966bc01d17dc53de207 -size 83489 +oid sha256:9a82625f9c4bb8a705ea1b26eb10fdd9115bc477cfe007fe4b0bae26f597c52b +size 85379 diff --git a/Project/Source/Gasa/AbilitySystem/GasaEffectActor.cpp b/Project/Source/Gasa/AbilitySystem/GasaEffectActor.cpp index fc73561..2fc65af 100644 --- a/Project/Source/Gasa/AbilitySystem/GasaEffectActor.cpp +++ b/Project/Source/Gasa/AbilitySystem/GasaEffectActor.cpp @@ -8,6 +8,10 @@ AGasaEffectActor::AGasaEffectActor() PrimaryActorTick.bCanEverTick = false; RootComponent = CreateDefaultSubobject("Root"); + + InstantEffectUsage = DefaultEffectUsagePolicy; + DurationEffectUsage = DefaultEffectUsagePolicy; + InfiniteEffectUsage = DefaultEffectUsagePolicy; } void AGasaEffectActor::ApplyEffectToActor(AActor* Actor, TSubclassOf EffectClass) @@ -21,3 +25,11 @@ void AGasaEffectActor::ApplyEffectToActor(AActor* Actor, TSubclassOfMakeOutgoingSpec( EffectClass, 1.0f, Context ); AS->ApplyGameplayEffectSpecToSelf( * Spec.Data ); } + +void AGasaEffectActor::OnOverlap(AActor* Actor) +{ +} + +void AGasaEffectActor::OnEndOverlap(AActor* Actor) +{ +} diff --git a/Project/Source/Gasa/AbilitySystem/GasaEffectActor.h b/Project/Source/Gasa/AbilitySystem/GasaEffectActor.h index 24ae180..989992b 100644 --- a/Project/Source/Gasa/AbilitySystem/GasaEffectActor.h +++ b/Project/Source/Gasa/AbilitySystem/GasaEffectActor.h @@ -6,6 +6,20 @@ #include "GasaEffectActor.generated.h" +UENUM(BlueprintType) +enum class EEffectUsagePolicy : uint8 +{ + None = 0 UMETA(Hidden), + ApplyOnOverlap = bit(0), + ApplyOnEndOverlap = bit(1), + DoNotApply = bit(2), + RemoveOnOverlap = bit(3), + RemoveOnEndOverlap = bit(4), + DoNotRemove = bit(5), +}; + +constexpr int32 DefaultEffectUsagePolicy = (int32(EEffectUsagePolicy::DoNotApply) | int32(EEffectUsagePolicy::RemoveOnEndOverlap)); + UCLASS() class GASA_API AGasaEffectActor : public AGasaActor { @@ -14,13 +28,34 @@ public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects") TSubclassOf InstantEffectClass; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects", meta=(Bitmask, BitmaskEnum = EEffectUsagePolicy)) + int32 InstantEffectUsage; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects") TSubclassOf DurationEffectClass; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects", meta=(Bitmask, BitmaskEnum = EEffectUsagePolicy)) + int32 DurationEffectUsage; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects") + TSubclassOf InfiniteEffectClass; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects", meta=(Bitmask, BitmaskEnum = EEffectUsagePolicy)) + int32 InfiniteEffectUsage; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects") + bool bDestroyOnEffectRemoval = false; + AGasaEffectActor(); UFUNCTION(BlueprintCallable, Category = "Gameplay Effects") void ApplyEffectToActor(AActor* Actor, TSubclassOf EffectClass ); + + UFUNCTION(BlueprintCallable) + void OnOverlap(AActor* Actor); + + UFUNCTION(BlueprintCallable) + void OnEndOverlap(AActor* Actor); }; diff --git a/Project/Source/Gasa/GasaCommon.h b/Project/Source/Gasa/GasaCommon.h index 3070e7c..3344200 100644 --- a/Project/Source/Gasa/GasaCommon.h +++ b/Project/Source/Gasa/GasaCommon.h @@ -13,6 +13,8 @@ #define rcast( Type, Value ) reinterpret_cast( Value ) #define scast( Type, Value ) static_cast( Value ) +#define bit(position) (1 << position) + #pragma region Math #define m_pow2( value ) (value * value) #pragma endregion Math