bglga/TODO/GAL-48.md
Harald Hoyer 365e3a7cc4 chore(todo): add acceptance criteria and test hints to open issues
Flesh out the 14 still-open issues (GAL-34/35/36/37, 40/41, 43, 46/47/48/49,
52/53/55) with explicit acceptance criteria and concrete integration test
hints that reference existing types and headless tooling, so future work
on these tickets has a clear definition of done.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 09:53:09 +02:00

25 lines
1.1 KiB
Markdown

---
id: GAL-48
title: Add sound effects
status: Todo
parent: GAL-46
labels: [polish, audio]
---
# GAL-48: Add sound effects (shooting, explosions, player death, tractor beam, etc.)
Add sound effects (shooting, explosions, player death, tractor beam, etc.).
## Acceptance criteria
- [ ] Distinct SFX for: player shoot, enemy shoot, enemy explosion, player death, tractor beam start, stage clear.
- [ ] SFX triggered via Bevy events (e.g. `EventWriter<PlaySfx>`), not direct calls scattered through gameplay systems.
- [ ] No duplicate playback in a single frame for a single source (e.g. one shot = one click).
- [ ] SFX volume independent from music channel (see GAL-49).
- [ ] Asset paths centralised so re-skinning is local to one file.
## Integration test hints
- Tick world: simulate shoot input → assert exactly one `PlaySfx(Shoot)` event emitted that frame.
- Despawn an enemy via a bullet collision → assert exactly one `PlaySfx(Explosion)` event.
- Activate a Boss `CaptureBeam` (insert `TractorBeam` component) → assert one `PlaySfx(BeamStart)` event per beam, not per frame the beam exists.