#pragma once #include "CoreMinimal.h" #include "Engine/DataAsset.h" #include "GameplayTagContainer.h" #include "DA_StateGatingTable.generated.h" USTRUCT(BlueprintType) struct PG_FRAMEWORK_API FStateGatingRule { GENERATED_BODY() UPROPERTY(EditAnywhere, BlueprintReadWrite) FGameplayTag ActionTag; UPROPERTY(EditAnywhere, BlueprintReadWrite) FGameplayTag BlockedByState; UPROPERTY(EditAnywhere, BlueprintReadWrite) bool bIsBlocked = true; }; UCLASS(BlueprintType) class PG_FRAMEWORK_API UDA_StateGatingTable : public UPrimaryDataAsset { GENERATED_BODY() public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gating") TArray GatingRules; UFUNCTION(BlueprintCallable, BlueprintPure, Category = "Gating") bool IsActionGated(FGameplayTag ActionTag, FGameplayTag CurrentState) const; };