#pragma once

#include "CoreMinimal.h"
#include "GammaSettingsPopupViewInterface.h"
#include "CoreGenericPopupWidget.h"
#include "CoreGammaSettingsPopupWidget.generated.h"

class UDBDImage;
class UCoreSliderWidget;
class UDBDTextBlock;
class UCoreInputSwitcherWidget;
class UCoreKeyListenerInputPromptWidget;
class UGammaSettingsPopupViewData;

UCLASS(Blueprintable, EditInlineNew)
class UCoreGammaSettingsPopupWidget : public UCoreGenericPopupWidget, public IGammaSettingsPopupViewInterface
{
	GENERATED_BODY()

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

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

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

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

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

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UCoreSliderWidget* GammaSlider;

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

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UCoreInputSwitcherWidget* RestoreDefaultsButton;

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UCoreKeyListenerInputPromptWidget* AdjustPrompt;

	UPROPERTY(BlueprintReadWrite, Transient)
	UGammaSettingsPopupViewData* _viewData;

protected:
	UFUNCTION(BlueprintCallable)
	void OnResetTriggered();

	UFUNCTION(BlueprintCallable)
	void OnGammaValueChanged(float gamma);

public:
	UCoreGammaSettingsPopupWidget();
};

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