Ein flexibles Menüsystem wurde hinzugefügt, das ein Hauptmenü und ein In-Game-Menü umfasst. Das Hauptmenü bietet Optionen wie "Neues Spiel starten", "Optionen" und "Credits". Das In-Game-Menü ermöglicht Pausenfunktionen wie "Fortsetzen", "Optionen" und "Zum Desktop beenden". Neue Klassen wurden eingeführt, darunter `MenuManagerSubsystem` zur Verwaltung von Menübildschirmen, `MenuScreenWidget` als Basisklasse für Menüs sowie spezifische Widgets wie `MainMenuWidget`, `InGameMenuWidget` und `OptionsMenuWidget`. Zusätzlich wurden stilisierte Schaltflächen (`MenuButtonWidget`) und ein neuer `MenuPlayerController` für menübasierte Levels implementiert. Änderungen an `KingshearthLegacyPlayerController` ermöglichen die Steuerung des In-Game-Menüs. Binäre Assets für Menüs und UI wurden hinzugefügt.
70 lines
2.1 KiB
C++
70 lines
2.1 KiB
C++
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "UI/Menu/MenuScreenWidget.h"
|
|
#include "MainMenuWidget.generated.h"
|
|
|
|
class UMenuButtonWidget;
|
|
class UWorld;
|
|
|
|
/**
|
|
* Top-level main menu screen. Add a new entry the same way as the existing ones: a
|
|
* BindWidgetOptional UMenuButtonWidget pointer + an OnClicked binding in NativeConstruct.
|
|
*/
|
|
UCLASS(abstract)
|
|
class UMainMenuWidget : public UMenuScreenWidget
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
/** Level opened by Start New Game. */
|
|
UPROPERTY(EditDefaultsOnly, Category = "Menu|New Game")
|
|
TSoftObjectPtr<UWorld> NewGameLevel;
|
|
|
|
/** Screen pushed by the Options button. */
|
|
UPROPERTY(EditDefaultsOnly, Category = "Menu|Screens")
|
|
TSubclassOf<UMenuScreenWidget> OptionsScreenClass;
|
|
|
|
/** Screen pushed by the Credits button. */
|
|
UPROPERTY(EditDefaultsOnly, Category = "Menu|Screens")
|
|
TSubclassOf<UMenuScreenWidget> CreditsScreenClass;
|
|
|
|
/** No save system exists yet - keeps the Load Game button present but disabled until one does. */
|
|
UPROPERTY(EditDefaultsOnly, Category = "Menu|New Game")
|
|
bool bLoadGameAvailable = false;
|
|
|
|
protected:
|
|
virtual void NativeConstruct() override;
|
|
|
|
UFUNCTION(BlueprintCallable, Category = "Menu")
|
|
void StartNewGame();
|
|
|
|
/** Intentionally unimplemented - no save system exists yet. */
|
|
UFUNCTION(BlueprintCallable, Category = "Menu")
|
|
void LoadGame();
|
|
|
|
UFUNCTION(BlueprintCallable, Category = "Menu")
|
|
void OpenOptions();
|
|
|
|
UFUNCTION(BlueprintCallable, Category = "Menu")
|
|
void OpenCredits();
|
|
|
|
UFUNCTION(BlueprintCallable, Category = "Menu")
|
|
void ExitGame();
|
|
|
|
UPROPERTY(BlueprintReadOnly, meta = (BindWidgetOptional = true))
|
|
TObjectPtr<UMenuButtonWidget> StartNewGameButton;
|
|
|
|
UPROPERTY(BlueprintReadOnly, meta = (BindWidgetOptional = true))
|
|
TObjectPtr<UMenuButtonWidget> LoadGameButton;
|
|
|
|
UPROPERTY(BlueprintReadOnly, meta = (BindWidgetOptional = true))
|
|
TObjectPtr<UMenuButtonWidget> OptionsButton;
|
|
|
|
UPROPERTY(BlueprintReadOnly, meta = (BindWidgetOptional = true))
|
|
TObjectPtr<UMenuButtonWidget> CreditsButton;
|
|
|
|
UPROPERTY(BlueprintReadOnly, meta = (BindWidgetOptional = true))
|
|
TObjectPtr<UMenuButtonWidget> ExitButton;
|
|
};
|