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>
1.1 KiB
1.1 KiB
| id | title | status | parent | labels | ||
|---|---|---|---|---|---|---|
| GAL-48 | Add sound effects | Todo | GAL-46 |
|
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(insertTractorBeamcomponent) → assert onePlaySfx(BeamStart)event per beam, not per frame the beam exists.