Files
Naked-Desire/Source/NakedDesire/UI/Menu/MainMenuWidget.h
T
2026-06-05 20:00:33 +03:00

80 lines
2.1 KiB
C++

// © 2025 Naked People Team. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "CommonActivatableWidget.h"
#include "MainMenuWidget.generated.h"
class UButton;
class UCommonActivatableWidgetStack;
class UConfirmModalWidget;
// Front-end main menu. Owns the Continue / New Game / Settings / Credits / Quit flow.
// Confirmation popups, credits and settings are pushed onto ModalStack (a stack in the
// widget tree). The gameplay / menu maps are data-driven via the soft map references.
UCLASS(Abstract)
class NAKEDDESIRE_API UMainMenuWidget : public UCommonActivatableWidget
{
GENERATED_BODY()
public:
UMainMenuWidget();
protected:
virtual void NativeOnActivated() override;
private:
UPROPERTY(meta = (BindWidget))
TObjectPtr<UButton> ContinueButton;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UButton> NewGameButton;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UButton> SettingsButton;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UButton> CreditsButton;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UButton> QuitButton;
// Stack the confirm popup / credits / settings screens are pushed onto.
UPROPERTY(meta = (BindWidget))
TObjectPtr<UCommonActivatableWidgetStack> ModalStack;
UPROPERTY(EditDefaultsOnly, Category = "UI")
TSubclassOf<UConfirmModalWidget> ConfirmModalClass;
UPROPERTY(EditDefaultsOnly, Category = "UI")
TSubclassOf<UCommonActivatableWidget> CreditsWidgetClass;
// Optional — wired once the settings screen exists. Settings button no-ops until then.
UPROPERTY(EditDefaultsOnly, Category = "UI")
TSubclassOf<UCommonActivatableWidget> SettingsWidgetClass;
// Level "New Game" / "Continue" load into (the §0.2 slice district).
UPROPERTY(EditDefaultsOnly, Category = "UI", meta = (AllowedClasses = "/Script/Engine.World"))
TSoftObjectPtr<UWorld> GameplayMap;
UFUNCTION()
void OnContinueClicked();
UFUNCTION()
void OnNewGameClicked();
UFUNCTION()
void OnSettingsClicked();
UFUNCTION()
void OnCreditsClicked();
UFUNCTION()
void OnQuitClicked();
void HandleNewGameConfirmed();
void HandleQuitConfirmed();
void OpenGameplayLevel();
};