newlon/scripts/audio/AudioSlider.cs
2025-07-21 14:28:40 +05:00

42 lines
700 B
C#

using Godot;
using Newlon;
public partial class AudioSlider : HSlider
{
enum TYPE
{
SFX,
MUSIC
}
[Export] private TYPE affects;
public override void _Ready()
{
ValueChanged += OnValueChanged;
if (affects == TYPE.SFX)
{
SetValueNoSignal(Settings.SFX);
}
else
{
SetValueNoSignal(Settings.Music);
}
}
private void OnValueChanged(double value)
{
if (affects == TYPE.SFX)
{
var volume = Mathf.LinearToDb(Mathf.Exp((float)value) - 1); ;
Settings.SFX = value;
AudioServer.SetBusVolumeDb(2, volume);
}
else
{
var volume = Mathf.LinearToDb(Mathf.Exp((float)value) - 1); ;
Settings.Music = value;
AudioServer.SetBusVolumeDb(1, volume);
}
}
}