namespace AcDream.UI.Abstractions.Panels.Settings;
///
/// Audio mixer preferences persisted to settings.json. The host wires
/// these into OpenAlAudioEngine.MasterVolume / SfxVolume /
/// AmbientVolume on Save and on startup.
///
///
/// A Music field lived here until 2026-08-08 (Campaign A slice A6).
/// Retail has no music system to turn down — see the note on
/// IAudioEngine — so the knob moved nothing. Old settings.json
/// files carrying a "music" key still load: the reader simply ignores
/// keys it does not know, and the next save drops it.
///
///
///
/// Defaults match the engine's hard-coded starting values so a user
/// who never opens the Audio tab gets identical behaviour to the
/// previous env-var-only world.
///
///
public sealed record AudioSettings(
float Master,
float Sfx,
float Ambient)
{
///
/// Values used on first launch. Retail's own defaults are 1.0 for every
/// sound preference (SoundManager::InitPrefs @ 0x005503F0),
/// so ambient starts at unity rather than the invented 0.8.
///
public static AudioSettings Default { get; } = new(
Master: 1.0f,
Sfx: 1.0f,
Ambient: 1.0f);
}