// Oleg Petruny proprietary.

#pragma once

#include "Widgets/ResolutionResponsiveUserWidget.h"

#include "MainMenuWidget.generated.h"

DECLARE_DYNAMIC_MULTICAST_DELEGATE(FMainMenuOpeningDelegate);
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FMainMenuClosingDelegate);
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FMainMenuClosedDelegate);

UCLASS(Blueprintable, Abstract)
class UMainMenuWidget : public UUserWidget
{
    GENERATED_BODY()

public:
    virtual bool Initialize() override;

    UFUNCTION(BlueprintCallable)
    void Show(bool fast = true);
    UFUNCTION(BlueprintCallable)
    void Hide();

    UPROPERTY(BlueprintAssignable)
    FMainMenuOpeningDelegate OnMainMenuOpeningDelegate;
    UPROPERTY(BlueprintAssignable)
    FMainMenuClosedDelegate OnMainMenuClosingDelegate;
    UPROPERTY(BlueprintAssignable)
    FMainMenuClosedDelegate OnMainMenuClosedDelegate;

    UPROPERTY(meta = (BindWidget))
    class UMainMenuButtonWidget* ButtonContinue;
    UPROPERTY(meta = (BindWidget))
    class UMainMenuButtonWidget* ButtonLoadLastSave;
    UPROPERTY(meta = (BindWidget))
    class UMainMenuButtonWidget* ButtonNewGame;
    UPROPERTY(meta = (BindWidget))
    class UMainMenuButtonWidget* ButtonOptions;
    UPROPERTY(meta = (BindWidget))
    class UMainMenuButtonWidget* ButtonCredits;
    UPROPERTY(meta = (BindWidget))
    class UMainMenuButtonWidget* ButtonExit;

    UPROPERTY(Transient, meta = (BindWidgetAnim))
    class UWidgetAnimation* showFullAnimation;
    UPROPERTY(Transient, meta = (BindWidgetAnim))
    class UWidgetAnimation* showFastAnimation;
    UPROPERTY(Transient, meta = (BindWidgetAnim))
    class UWidgetAnimation* closeAnimation;

protected:
    UFUNCTION()
    void Closed();
};
