#pragma once

#include "CoreMinimal.h"
#include "CoreBaseUserWidget.h"
#include "EPlayerRole.h"
#include "CoreCharacterPerksWidget.generated.h"

class UCoreMenuLoadoutPartWidget;
class UCoreMenuPerkWidget;
class UCoreButtonWidget;
class UMenuPerkViewData;
class UMenuPowerViewData;

UCLASS(Blueprintable, EditInlineNew)
class DBDUIVIEWSCORE_API UCoreCharacterPerksWidget : public UCoreBaseUserWidget
{
	GENERATED_BODY()

public:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Export)
	UCoreMenuLoadoutPartWidget* CoreKillerPower;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Export)
	UCoreMenuPerkWidget* CorePerk1;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Export)
	UCoreMenuPerkWidget* CorePerk2;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Export)
	UCoreMenuPerkWidget* CorePerk3;

protected:
	UFUNCTION(BlueprintCallable)
	void ShowTooltip(UCoreButtonWidget* hoveredSlotWidget);

	UFUNCTION(BlueprintCallable)
	void SetPerkData(UCoreMenuPerkWidget* perkWidget, UMenuPerkViewData* perkViewData);

public:
	UFUNCTION(BlueprintCallable)
	void SetData(TArray<UMenuPerkViewData*> characterUniquePerksViewData, const EPlayerRole role, UMenuPowerViewData* killerPowerViewData, const bool keepKillerPowerSizeWhenNotVisible);

protected:
	UFUNCTION(BlueprintCallable)
	void HideTooltip(UCoreButtonWidget* unhoveredSlotWidget);

public:
	UCoreCharacterPerksWidget();
};

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