--- id: GAL-52 title: Display Score, Lives, and Stage on screen using bevy_ui status: Todo parent: GAL-50 labels: [polish, ui] --- # GAL-52: Display Score, Lives, and Stage on the screen using `bevy_ui` Display Score, Lives, and Stage on the screen using `bevy_ui`. ## Acceptance criteria - [ ] HUD shows `Score`, `PlayerLives`, and `CurrentStage` as on-screen `Text` nodes via `bevy_ui`. - [ ] HUD updates each frame the underlying resource changes (use `Changed` filters or run-conditions). - [ ] HUD is hidden (or not spawned) during `StartMenu`; visible during `Playing` and `GameOver`. - [ ] Window title is no longer the source of truth for these values (kept only as debug, or removed — pick one). - [ ] Layout survives window resize without overlapping the play field. ## Integration test hints - Build `App`, mutate `Score` resource, run schedule one tick, query for the score `Text` component, assert its content includes the new score string. - Transition into `StartMenu`; assert HUD nodes have `Display::None` or are despawned. - Visual smoke test via `nix run .#take-screenshots` after resource changes; eyeball that text positions are sensible.