#pragma once

#include "CoreMinimal.h"
#include "CoreMenuLoadoutPartWidget.h"
#include "CoreMenuPerkWidget.generated.h"

class UDBDImage;
class UDBDTextBlock;
class UOverlay;

UCLASS(Blueprintable, EditInlineNew)
class DBDUIVIEWSCORE_API UCoreMenuPerkWidget : public UCoreMenuLoadoutPartWidget
{
	GENERATED_BODY()

protected:
	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UDBDImage* LevelImage;

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UDBDTextBlock* UnlockLevelLabelTB;

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UOverlay* RandomPerkOverlay;

public:
	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
	void StopEmptySlotAnimation();

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
	void StopAllUnlockAnimations();

protected:
	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetPerkUnlocked();

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetPerkLocked(const int32 perkUnlockLevel);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
	void SetMenuPerkLevel(int32 level);

public:
	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void PlayUnlockAnimation();

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
	void PlayEmptySlotAnimation();

public:
	UCoreMenuPerkWidget();
};

FORCEINLINE uint32 GetTypeHash(const UCoreMenuPerkWidget) { return 0; }
