42 lines
700 B
C#
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);
|
|
}
|
|
}
|
|
|
|
}
|