LoadingScreenScene #20

Open
opened 2026-04-16 20:24:07 +00:00 by sebastian · 0 comments
Owner

Problem: Beim Übergang zwischen Scenes (Start → Menü, Menü → Spiel) gibt es keinen Zwischenstand. Assets werden blockierend geladen, der Bildschirm friert ein.
Lösung:

// game/scenes/LoadingScreenScene.h
class LoadingScreenScene : public Scene {
public:
    // Ziel-Scene die nach dem Laden aktiviert wird
    explicit LoadingScreenScene(std::unique_ptr<Scene> target);

    void onEnter() override;  // UI aufbauen, erste processQueue-Runde
    void onUpdate() override; // processQueue aufrufen, Event abonnieren
    void onExit()  override;

private:
    std::unique_ptr<Scene> targetScene;
    UiText* progressLabel = nullptr;  // non-owning
    // UiProgressBar* progressBar (wenn vorhanden)
};

onUpdate() ruft AssetManager::processQueue() auf. Wenn complete, übergibt es sich selbst dem SceneManager mit der Ziel-Scene.
Acceptance Criteria:

  • Ladebalken (oder Text "Lade... X%") wird angezeigt und aktualisiert
  • Nach vollständigem Laden wird targetScene aktiviert
  • Kein Einfrieren des Fensters während des Ladens
**Problem**: Beim Übergang zwischen Scenes (Start → Menü, Menü → Spiel) gibt es keinen Zwischenstand. Assets werden blockierend geladen, der Bildschirm friert ein. **Lösung**: ``` // game/scenes/LoadingScreenScene.h class LoadingScreenScene : public Scene { public: // Ziel-Scene die nach dem Laden aktiviert wird explicit LoadingScreenScene(std::unique_ptr<Scene> target); void onEnter() override; // UI aufbauen, erste processQueue-Runde void onUpdate() override; // processQueue aufrufen, Event abonnieren void onExit() override; private: std::unique_ptr<Scene> targetScene; UiText* progressLabel = nullptr; // non-owning // UiProgressBar* progressBar (wenn vorhanden) }; ``` onUpdate() ruft AssetManager::processQueue() auf. Wenn complete, übergibt es sich selbst dem SceneManager mit der Ziel-Scene. Acceptance Criteria: - Ladebalken (oder Text "Lade... X%") wird angezeigt und aktualisiert - Nach vollständigem Laden wird targetScene aktiviert - Kein Einfrieren des Fensters während des Ladens
sebastian added this to the Konkrete Szenen milestone 2026-04-16 20:24:07 +00:00
sebastian added the
enhancement
engine
labels 2026-04-16 20:24:07 +00:00
sebastian changed title from LoadingScreenSceene to LoadingScreenScene 2026-04-16 20:24:13 +00:00
sebastian modified the milestone from Konkrete Szenen to AI-System 2026-04-16 21:02:55 +00:00
sebastian modified the milestone from AI-System to Konkrete Szenen 2026-04-16 21:02:59 +00:00
sebastian added this to the Dicewars project 2026-04-16 21:03:01 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: sebastian/Dicewars-Siedler#20
No description provided.