#pragma once

#include "CoreMinimal.h"
#include "CoreBaseUserWidget.h"
#include "EStatusEffectType.h"
#include "EItemRarity.h"
#include "UObject/SoftObjectPtr.h"
#include "CoreBaseLoadoutPartWidget.generated.h"

class UDBDImage;
class UDBDTextBlock;
class UTexture2D;

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

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

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(BindWidgetOptional))
	UDBDImage* ImageIcon;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(BindWidgetOptional))
	UDBDTextBlock* TextStackCount;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(BindWidgetOptional))
	UDBDImage* ImageBuff;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(BindWidgetOptional))
	UDBDImage* ImageDebuff;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UTexture2D* RarityTexture;

protected:
	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetStatusEffect(EStatusEffectType statusEffectType);

	UFUNCTION(BlueprintCallable)
	void SetLoadoutStackCount(int32 stackCount);

	UFUNCTION(BlueprintCallable)
	void SetLoadoutPartRarity(EItemRarity rarity);

	UFUNCTION(BlueprintCallable)
	void SetLoadoutPartIcon(TSoftObjectPtr<UTexture2D> icon);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
	void SetActiveState(bool isActive);

public:
	UCoreBaseLoadoutPartWidget();
};

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