// Project Lab - NHTV Igad

#pragma once

#include "GUI/Menu/MenuItemBase.h"
#include "MenuButton.generated.h"

extern FLinearColor uiIdleColor;
extern FLinearColor uiSelectedColor;

/**
 * 
 */
UCLASS()
class UNREALPROJECT_API UMenuButton : public UMenuItemBase
{
	GENERATED_BODY()
public:
	UMenuButton(const FObjectInitializer& init);
	void NativeConstruct() override;
	void FocusTick(float DeltaTime) override;

	DECLARE_DYNAMIC_MULTICAST_DELEGATE(FButtonPressed);
	UPROPERTY(BlueprintAssignable, Category = "MenuButton")
	FButtonPressed onPressed;

	virtual void NativeOnMenuAction(EMenuActionBinding binding) override;
	virtual void NativeOnSelectionChanged(bool selected, bool controller) override;

	// Called when this button is pressed, and if it was a controller or a mouse
	virtual void NativeOnPressed(bool controllerInput);

	// Updates button text + glow
	UFUNCTION(BlueprintCallable, Category="MenuButton")
	void SetButtonText(FString text);

	void SimulatePressed() { m_OnPressed(); }

protected:
	UFUNCTION()
	virtual void m_OnPressed();

	UOverlay* m_textOverlay;
	UOverlay* m_blurOverlay;
	UPROPERTY()
	UTextBlock* m_label;
	UButton* m_button;
};
