How-to: UI-Screen ergänzen
Schritte
- Scene unter dem zuständigen
src/HolodeckArena.Game3D/Features/<Feature>anlegen; RootControl.Resources/Themes/Default.tresnutzen und Layout mit Anchors/Containers statt festen Pixelpositionen bauen. - Controller als
InjectedNodeoderControl, IServiceConsumerimplementieren. Services ausschließlich inInjectServicesbeziehen. - Nodes in
_Readyauflösen, Signals einmal binden und in_ExitTreeabmelden. Async-Handler fangen Exceptions und setzen Loading/Disabled/Error-State zurück. - Featureevents über
IEventBus; Nakama/Registry nie direkt aus Buttonhandlern, sondern über injizierten Feature-Service. - Neuer Vollbild-Flow: Route in
Core/GameFlow/GameFlowRoutes.cs, Methode inIGameFlowServiceundGameFlowService, Navigation darüber. Overlay im bestehenden Screen benötigt keine Route. - Maus-/Keyboard-Fokus prüfen: LineEdit darf Playerbewegung nicht auslösen;
TypingUiChangedEvent/bestehende Inputlocks verwenden. Escape/Cancel und Fokusreihenfolge definieren. - Das Projekt hat kein Translation-System. Neue Strings so kapseln, dass sie später durch Translation keys ersetzbar sind; keine Netzwerkfehler roh anzeigen.
Tests/Prüfung
Manuell verschiedene Auflösungen, Tastatur/Maus, Loading, Fehler, Retry, Disconnect, Back/Cancel, mehrfaches Öffnen und Scenewechsel. Remote Scene Tree auf doppelte Nodes/Handlers prüfen. Automatisierte UI-Tests fehlen.
Beispiele: MainMenu.tscn/MainMenuController.cs, HubClientScene.tscn/HubController.cs, Core/UI/LoadingScreenLayer.tscn.
Verwandt: Social Hub/UI, Game3D Lifecycle, Input.