36 lines
862 B
Go
36 lines
862 B
Go
// Package audio provides fire-and-forget sound effect playback.
|
|
// Placeholder backend: pre-synthesized WAVs spawned via pw-play (PipeWire).
|
|
// Per-spawn stream connect costs ~tens of ms; replace with a persistent
|
|
// stream (libpipewire CGO or raylib audio) once latency matters
|
|
package audio
|
|
|
|
// Effect identifies a synthesized sound effect
|
|
type Effect uint8
|
|
|
|
const (
|
|
EffectNone Effect = iota
|
|
EffectPickup
|
|
EffectMagnet
|
|
EffectShield
|
|
EffectShieldBreak
|
|
EffectBoost
|
|
EffectDeflect
|
|
EffectMoveRow
|
|
EffectMoveLane
|
|
EffectHitWall
|
|
EffectLevelClear
|
|
EffectCount
|
|
)
|
|
|
|
// Engine plays effects without blocking the caller
|
|
type Engine interface {
|
|
Play(Effect) // EffectNone is a no-op
|
|
Close()
|
|
}
|
|
|
|
// nullEngine is the silent fallback (unsupported platform, pw-play absent)
|
|
type nullEngine struct{}
|
|
|
|
func (nullEngine) Play(Effect) {}
|
|
func (nullEngine) Close() {}
|