#pragma once

#include "CoreMinimal.h"
#include "TooltipWidget.h"
#include "EmblemSlotTooltipViewData.h"
#include "EmblemProgressionData.h"
#include "EEmblemQuality.h"
#include "CoreEmblemTooltipWidget.generated.h"

class UDBDTextBlock;
class UDBDRichTextBlock;
class UCoreEmblemProgressBarWidget;
class UWidget;
class UVerticalBox;
class UUserWidget;

UCLASS(Blueprintable, EditInlineNew)
class DBDUIVIEWSCORE_API UCoreEmblemTooltipWidget : public UTooltipWidget
{
	GENERATED_BODY()

protected:
	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UDBDTextBlock* TitleTB;

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UDBDRichTextBlock* DescriptionRTB;

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

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

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UCoreEmblemProgressBarWidget* ProgressionBar;

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UWidget* ProgressionDetail;

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UVerticalBox* ProgressionDetailContainer;

public:
	UFUNCTION(BlueprintCallable)
	void SetTooltipData(const FEmblemSlotTooltipViewData& data);

protected:
	UFUNCTION(BlueprintCallable)
	void SetScoreDetails(const TArray<FEmblemProgressionData>& progressionDetails);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
	void SetScoreDetailData(UUserWidget* progressionDetailNew, FEmblemProgressionData data);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
	void SetQualityImage(EEmblemQuality quality);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
	void SetProgressionBarSizeAndColor(float score, EEmblemQuality quality);

public:
	UCoreEmblemTooltipWidget();
};

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