text: // Copyright Epic Games, Inc. All Rights Reserved.
  
  #pragma once
  
  #include "ActionRPG.h"
  #include "AbilitySystemComponent.h"
  #include "Abilities/RPGAbilityTypes.h"
  #include "RPGAbilitySystemComponent.generated.h"
  
  class URPGGameplayAbility;
  
  /**
   * Subclass of ability system component with game-specific data
   * Most games will need to make a game-specific subclass to provide utility functions
   */
  UCLASS()
  class ACTIONRPG_API URPGAbilitySystemComponent : public UAbilitySystemComponent
  {
  	GENERATED_BODY()
  
  public:
  	// Constructors and overrides
  	URPGAbilitySystemComponent();
  
  	/** Returns a list of currently active ability instances that match the tags */
  	void GetActiveAbilitiesWithTags(const FGameplayTagContainer& GameplayTagContainer, TArray<URPGGameplayAbility*>& ActiveAbilities);
  
  	/** Returns the default level used for ability activations, derived from the character */
  	int32 GetDefaultAbilityLevel() const;
  
  	/** Version of function in AbilitySystemGlobals that returns correct type */
  	static URPGAbilitySystemComponent* GetAbilitySystemComponentFromActor(const AActor* Actor, bool LookForComponent = false);
  
  };