#pragma once

#include "CoreMinimal.h"
#include "CoreSelectableButtonWidget.h"
#include "CustomizationRewardViewData.h"
#include "CoreStoreCharmSlotWidget.generated.h"

class UWidget;
class UCoreCustomizationRewardWidget;
class UCoreOnHoverBorderWidget;

UCLASS(Blueprintable, EditInlineNew)
class DBDUIVIEWSCORE_API UCoreStoreCharmSlotWidget : public UCoreSelectableButtonWidget
{
	GENERATED_BODY()

protected:
	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UWidget* EmptyCharmSlot;

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UCoreCustomizationRewardWidget* CustomizationReward;

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UCoreOnHoverBorderWidget* OnHoverBorder;

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

public:
	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetSelectedCharmSlotData(const int32 slotIndex, const FCustomizationRewardViewData& charmSlotData);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetEmptyCharmSlotData(const int32 slotIndex);

protected:
	UFUNCTION(BlueprintCallable)
	void OnButtonSelectedChanged(UCoreSelectableButtonWidget* targetButton, bool isSelected);

public:
	UCoreStoreCharmSlotWidget();
};

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