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>
25 lines
1.1 KiB
Markdown
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.
|