2025-03-17 11:43:11 +01:00
|
|
|
|
using Godot;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Cirno.Scripts.UI;
|
|
|
|
|
|
|
|
|
|
|
|
public partial class AudioSlider : HSlider
|
|
|
|
|
|
{
|
|
|
|
|
|
[Export] public StringName AudioBusName { get; private set; } = "Master";
|
|
|
|
|
|
|
|
|
|
|
|
private int _audioBusIndex;
|
|
|
|
|
|
|
|
|
|
|
|
public override void _Ready()
|
|
|
|
|
|
{
|
|
|
|
|
|
_audioBusIndex = AudioServer.GetBusIndex(AudioBusName);
|
2025-03-24 15:36:35 +01:00
|
|
|
|
|
|
|
|
|
|
CallDeferred(MethodName.InitializeDeferred);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void InitializeDeferred()
|
|
|
|
|
|
{
|
2025-03-17 11:43:11 +01:00
|
|
|
|
this.Value = AudioServer.GetBusVolumeLinear(_audioBusIndex);
|
|
|
|
|
|
|
|
|
|
|
|
this.ValueChanged += MusicVolumeSliderOnValueChanged;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void MusicVolumeSliderOnValueChanged(double value)
|
|
|
|
|
|
{
|
|
|
|
|
|
AudioServer.SetBusVolumeLinear(_audioBusIndex, (float)value);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|