#pragma once

#include "CoreMinimal.h"
#include "RiftPassPurchasePopupViewInterface.h"
#include "CoreGenericPopupWidget.h"
#include "Templates/SubclassOf.h"
#include "ECurrencyType.h"
#include "CoreRiftPassPurchasePopupWidget.generated.h"

class UDBDTextBlock;
class UCoreCurrencyInputSwitcherWidget;
class UDBDImage;
class UHorizontalBox;
class UCoreRewardWrapperWidget;
class URiftPassPurchasePopupViewData;

UCLASS(Blueprintable, EditInlineNew)
class DBDUIVIEWSCORE_API UCoreRiftPassPurchasePopupWidget : public UCoreGenericPopupWidget, public IRiftPassPurchasePopupViewInterface
{
	GENERATED_BODY()

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

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UCoreCurrencyInputSwitcherWidget* UnlockButton;

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

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

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UCoreCurrencyInputSwitcherWidget* UnlockPackButton;

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

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

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UDBDImage* BackgroundKeyArtIMG;

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UHorizontalBox* RewardsContainer;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, NoClear)
	float _rewardSpacing;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TSubclassOf<UCoreRewardWrapperWidget> RewardWidgetClass;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	URiftPassPurchasePopupViewData* _viewData;

private:
	UFUNCTION(BlueprintCallable)
	void OnPurchaseClicked(ECurrencyType currencyType);

	UFUNCTION(BlueprintCallable)
	void OnPurchaseBundleClicked(ECurrencyType currencyType);

public:
	UCoreRiftPassPurchasePopupWidget();
};

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