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); }