// Oleg Petruny proprietary.

#pragma once

#include "Blueprint/UserWidget.h"

#include "InteractableHintWidgetManager.generated.h"

enum class EInputAnimatedWidgetAnimation : uint8;

UCLASS(Blueprintable, Abstract)
class UInteractableHintWidgetManager : public UUserWidget
{
    GENERATED_BODY()

public:
    void Append(const class UInteractableModificator* modificator);
    void Remove(const class UInteractableModificator* modificator);
    void AnimateInteractionHint(const class UInteractableModificator* modificator, const int32 index, const EInputAnimatedWidgetAnimation animation);

protected:
    UPROPERTY(EditDefaultsOnly)
    TSubclassOf<class UInteractableHintWidget> hintWidgetClass;

    UPROPERTY(meta = (BindWidget))
    class UVerticalBox* hints;

    int32 count = 0;
    TMap<const class UInteractableModificator*, TPair<int32, int32>> hintsMap;
    FCriticalSection hintsLock;
};
