#pragma once

#include "CoreMinimal.h"
#include "Components/ActorComponent.h"
#include "GameplayTagContainer.h"
#include "BPC_MovementStateSystem.generated.h"

DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnMovementModeChanged, FGameplayTag, NewMode, FGameplayTag, OldMode);

UCLASS(Blueprintable, ClassGroup=(Framework), meta=(BlueprintSpawnableComponent))
class PG_FRAMEWORK_API UBPC_MovementStateSystem : public UActorComponent
{
	GENERATED_BODY()

public:
	UBPC_MovementStateSystem();

	UPROPERTY(BlueprintReadOnly, Category = "Framework|Movement")
	FGameplayTag CurrentMovementMode;

	UPROPERTY(BlueprintAssignable, Category = "Framework|Events")
	FOnMovementModeChanged OnMovementModeChanged;
};
