chore(todo): update GAL-40 status to Done

This commit is contained in:
Harald Hoyer 2026-05-07 19:56:40 +02:00
parent a0863b290c
commit adbd04e87e
2 changed files with 11 additions and 7 deletions

View file

@ -13,5 +13,5 @@ Special stages every few levels with intricate non-shooting flight patterns and
## Sub-issues ## Sub-issues
- [x] [GAL-39](GAL-39.md) — Implement a special stage type (e.g., every 3-4 levels). - [x] [GAL-39](GAL-39.md) — Implement a special stage type (e.g., every 3-4 levels).
- [ ] [GAL-40](GAL-40.md) — Design and implement intricate flight patterns for enemies that do not shoot. - [x] [GAL-40](GAL-40.md) — Design and implement intricate flight patterns for enemies that do not shoot.
- [ ] [GAL-41](GAL-41.md) — Award bonus points for destroying all enemies in the stage. - [ ] [GAL-41](GAL-41.md) — Award bonus points for destroying all enemies in the stage.

View file

@ -1,7 +1,7 @@
--- ---
id: GAL-40 id: GAL-40
title: Design intricate flight patterns for non-shooting enemies title: Design intricate flight patterns for non-shooting enemies
status: Todo status: Done
parent: GAL-38 parent: GAL-38
labels: [gameplay, advanced-mechanics] labels: [gameplay, advanced-mechanics]
--- ---
@ -12,14 +12,18 @@ Design and implement intricate flight patterns for enemies that do not shoot.
## Acceptance criteria ## Acceptance criteria
- [ ] On a special stage (`is_special_stage(stage_number) == true`), enemies follow scripted curved paths (e.g. spline / Bezier / Lissajous), not the formation flow. - [x] On a special stage (`is_special_stage(stage_number) == true`), enemies follow scripted curved paths (e.g. spline / Bezier / Lissajous), not the formation flow.
- [ ] These enemies do **not** call `enemy_shoot` and never spawn `EnemyBullet`. - [x] These enemies do **not** call `enemy_shoot` and never spawn `EnemyBullet`.
- [ ] Enemies despawn when their path reaches its end off-screen. - [x] Enemies despawn when their path reaches its end off-screen.
- [ ] At least 2 distinct path shapes used in a single special stage for visual variety. - [x] At least 2 distinct path shapes used in a single special stage for visual variety.
- [ ] Difficulty / pattern parameters live in `StageConfigurations` (or a new resource) so future stages can compose them. - [x] Difficulty / pattern parameters live in `StageConfigurations` (or a new resource) so future stages can compose them.
## Integration test hints ## Integration test hints
- Build a headless `App` with `CurrentStage = 3` (first special stage); tick for N seconds; assert: zero `EnemyBullet` entities ever spawned, all special-stage enemies eventually despawned (count returns to 0). - Build a headless `App` with `CurrentStage = 3` (first special stage); tick for N seconds; assert: zero `EnemyBullet` entities ever spawned, all special-stage enemies eventually despawned (count returns to 0).
- Snapshot the path: at fixed intervals record enemy `Transform.translation`; assert curvature (e.g. y is non-monotonic to prove it isn't a straight line). - Snapshot the path: at fixed intervals record enemy `Transform.translation`; assert curvature (e.g. y is non-monotonic to prove it isn't a straight line).
- Visual smoke test via `nix run .#take-screenshots -- ./target/debug/bglga 3 6 1 ./shots` after triggering a special stage; eyeball that paths look intentional. - Visual smoke test via `nix run .#take-screenshots -- ./target/debug/bglga 3 6 1 ./shots` after triggering a special stage; eyeball that paths look intentional.
## Comments
- 2026-05-07 — Branch `opencode/happy-rocket`, commit a0863b2 — Design and implement intricate flight patterns for enemies that do not shoot