#pragma once

#include "CoreMinimal.h"
#include "StoreSpecialsViewInterface.h"
#include "CoreStoreBaseTabWidget.h"
#include "Templates/SubclassOf.h"
#include "Layout/Margin.h"
#include "SpecialItemClickedDelegate.h"
#include "ArchivePassBannerClickedDelegate.h"
#include "CoreStoreSpecialsWidget.generated.h"

class UCoreStoreCustomizationItemWidget;
class UCoreAuricCellsBundleWidget;
class UDBDTextBlock;
class UOverlay;
class UCoreArchivePassBannerWidget;
class UHorizontalBox;
class UWrapBox;
class UDBDScrollBox;
class UCorePreConstructableList;
class UCoreButtonWidget;

UCLASS(Blueprintable, EditInlineNew)
class UCoreStoreSpecialsWidget : public UCoreStoreBaseTabWidget, public IStoreSpecialsViewInterface
{
	GENERATED_BODY()

protected:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, NoClear)
	TSubclassOf<UCoreStoreCustomizationItemWidget> _itemWidgetClass;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 _layoutMask;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, NoClear)
	int32 _highlightPreConstructedItemsCount;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float _highlightItemsScale;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, NoClear)
	FMargin _highlightItemPadding;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, NoClear)
	int32 _regularPreConstructedItemsCount;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float _regularItemsScale;

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UCoreAuricCellsBundleWidget* AuricCellSpecialOffer;

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

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

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

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UOverlay* ArchivePassBannerContainer;

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UCoreArchivePassBannerWidget* ArchivePassBanner;

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

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

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UWrapBox* RegularSectionContainer;

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UDBDScrollBox* SpecialsScrollBox;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, BlueprintCallable)
	FSpecialItemClickedDelegate SpecialItemClickedDelegate;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, BlueprintCallable)
	FArchivePassBannerClickedDelegate ArchivePassBannerClickedDelegate;

private:
	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient, meta=(AllowPrivateAccess=true))
	UCorePreConstructableList* _highlightItemList;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient, meta=(AllowPrivateAccess=true))
	UCorePreConstructableList* _regularItemList;

private:
	UFUNCTION(BlueprintCallable)
	void OnSpecialItemClicked(UCoreButtonWidget* buttonTarget);

	UFUNCTION(BlueprintCallable)
	void OnArchivePassBannerClicked(UCoreButtonWidget* buttonTarget);

public:
	UCoreStoreSpecialsWidget();
};

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