Files
KingshearthLegacy/Source/KingshearthLegacy/UI/Menu/MenuScreenWidget.cpp
T
Dolobarsch b55eda5e51 Neues Menüsystem implementiert
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.
2026-09-05 00:33:04 +02:00

42 lines
1018 B
C++

#include "MenuScreenWidget.h"
#include "MenuManagerSubsystem.h"
#include "MenuButtonWidget.h"
#include "Engine/GameInstance.h"
#include "Engine/World.h"
void UMenuScreenWidget::NativeConstruct()
{
Super::NativeConstruct();
if (BackButton)
{
BackButton->OnClicked.AddUniqueDynamic(this, &UMenuScreenWidget::HandleBackClicked);
}
}
UMenuManagerSubsystem* UMenuScreenWidget::GetMenuManager() const
{
const UWorld* World = GetWorld();
UGameInstance* GameInstance = World ? World->GetGameInstance() : nullptr;
return GameInstance ? GameInstance->GetSubsystem<UMenuManagerSubsystem>() : nullptr;
}
void UMenuScreenWidget::Close()
{
if (UMenuManagerSubsystem* MenuManager = GetMenuManager())
{
MenuManager->PopScreen();
}
}
UMenuScreenWidget* UMenuScreenWidget::OpenScreen(TSubclassOf<UMenuScreenWidget> ScreenClass)
{
UMenuManagerSubsystem* MenuManager = GetMenuManager();
return MenuManager ? MenuManager->PushScreen(ScreenClass) : nullptr;
}
void UMenuScreenWidget::HandleBackClicked()
{
Close();
}