#pragma once

#include "CoreMinimal.h"
#include "ChallengesMenuStoreViewInterface.h"
#include "CoreTabContentWidget.h"
#include "OnChallengeStoreCustomizationItemClickedDelegate.h"
#include "OnChallengeStoreGoToStoreButtonClickedDelegate.h"
#include "ChallengesMenuStoreWidget.generated.h"

class UCustomizationItemGridContainer;
class UCoreImagePreviewAreaWidget;
class UCoreInputSwitcherWidget;

UCLASS(Blueprintable, EditInlineNew)
class DBDUIVIEWSCORE_API UChallengesMenuStoreWidget : public UCoreTabContentWidget, public IChallengesMenuStoreViewInterface
{
	GENERATED_BODY()

protected:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(BindWidgetOptional))
	UCustomizationItemGridContainer* CustomizationGrid;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(BindWidgetOptional))
	UCoreImagePreviewAreaWidget* PreviewArea;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(BindWidgetOptional))
	UCoreInputSwitcherWidget* GoToStoreButton;

private:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, BlueprintAssignable, meta=(AllowPrivateAccess=true))
	FOnChallengeStoreCustomizationItemClickedDelegate _onChallengeStoreCustomizationItemClickedDelegate;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, BlueprintAssignable, meta=(AllowPrivateAccess=true))
	FOnChallengeStoreCustomizationItemClickedDelegate _onChallengeStorePreviewCustomizationItemClickedDelegate;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, BlueprintAssignable, meta=(AllowPrivateAccess=true))
	FOnChallengeStoreGoToStoreButtonClickedDelegate _onChallengeStoreGoToStoreButtonClickedDelegate;

protected:
	UFUNCTION(BlueprintCallable)
	void OnPreviewAreaItemClicked(const int32 selectedIndex);

	UFUNCTION(BlueprintCallable)
	void OnGoToStoreButtonClicked();

	UFUNCTION(BlueprintCallable)
	void OnCustomizationGridItemClicked(const int32 selectedIndex);

public:
	UChallengesMenuStoreWidget();
};

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