Skip to content

How-to: UI-Screen ergänzen

Schritte

  1. Scene unter dem zuständigen src/HolodeckArena.Game3D/Features/<Feature> anlegen; Root Control. Resources/Themes/Default.tres nutzen und Layout mit Anchors/Containers statt festen Pixelpositionen bauen.
  2. Controller als InjectedNode oder Control, IServiceConsumer implementieren. Services ausschließlich in InjectServices beziehen.
  3. Nodes in _Ready auflösen, Signals einmal binden und in _ExitTree abmelden. Async-Handler fangen Exceptions und setzen Loading/Disabled/Error-State zurück.
  4. Featureevents über IEventBus; Nakama/Registry nie direkt aus Buttonhandlern, sondern über injizierten Feature-Service.
  5. Neuer Vollbild-Flow: Route in Core/GameFlow/GameFlowRoutes.cs, Methode in IGameFlowService und GameFlowService, Navigation darüber. Overlay im bestehenden Screen benötigt keine Route.
  6. Maus-/Keyboard-Fokus prüfen: LineEdit darf Playerbewegung nicht auslösen; TypingUiChangedEvent/bestehende Inputlocks verwenden. Escape/Cancel und Fokusreihenfolge definieren.
  7. 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.