using UnityEngine; namespace Ashwild.Settings { /// /// Binds the audio volume widgets (master, music, SFX) to the , /// configuring each slider from the authored . /// public class AudioSettingsSubPanel : SettingsSubPanel { #region Serialized Fields [Header("Widgets")] [SerializeField] private SettingSliderWidget masterSlider; [SerializeField] private SettingSliderWidget musicSlider; [SerializeField] private SettingSliderWidget sfxSlider; #endregion #region Unity Lifecycle /// /// Initializes each volume slider from the definition with its apply action. /// private void Awake() { SettingsManager s = SettingsManager.Instance; if (s == null || s.Definition == null) { Debug.LogError($"[AudioSettingsSubPanel] SettingsManager/Definition unavailable on '{name}'.", this); return; } SettingsDefinition def = s.Definition; masterSlider.Init(def.MasterVolume.Min, def.MasterVolume.Max, def.MasterVolume.LabelScale, def.MasterVolume.LabelFormat, v => s.SetMasterVolume(v)); musicSlider.Init(def.MusicVolume.Min, def.MusicVolume.Max, def.MusicVolume.LabelScale, def.MusicVolume.LabelFormat, v => s.SetMusicVolume(v)); sfxSlider.Init(def.SfxVolume.Min, def.SfxVolume.Max, def.SfxVolume.LabelScale, def.SfxVolume.LabelFormat, v => s.SetSfxVolume(v)); } #endregion #region Public API /// /// Pushes the manager's current volumes into the sliders. /// public override void Refresh() { SettingsManager s = SettingsManager.Instance; if (s == null) return; masterSlider.SetValue(s.MasterVolume); musicSlider.SetValue(s.MusicVolume); sfxSlider.SetValue(s.SfxVolume); } #endregion } }