#pragma once

#include "CoreMinimal.h"
#include "HudEffectCardViewInterface.h"
#include "CoreBaseHudWidget.h"
#include "EffectCardViewData.h"
#include "HudEffectCardWidget.generated.h"

class UDBDTextBlock;

UCLASS(Blueprintable, EditInlineNew)
class DBDUIVIEWSCORE_API UHudEffectCardWidget : public UCoreBaseHudWidget, public IHudEffectCardViewInterface
{
	GENERATED_BODY()

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

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	uint8 _futureCardIndex;

protected:
	UFUNCTION(BlueprintCallable)
	void UpdateEffectCardName(FText cardName);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
	void RotateCards(const bool isFutureCardValid, const FEffectCardViewData& futureCardViewData);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
	void InitCards(const FEffectCardViewData& currentCardViewData, const FEffectCardViewData& nextCardViewData);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
	void AddMatchPoint(bool isSecondPoint, bool withAnimation);

public:
	UHudEffectCardWidget();
};

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