SupaLidlGame/Audio/ManagedPlayer.cs

46 lines
1.1 KiB
C#
Raw Permalink Normal View History

using Godot;
namespace SupaLidlGame.Audio;
public sealed partial class ManagedAudioPlayer : AudioStreamPlayer
{
private Tween _tween;
public bool IsDead { get; set; }
private Tween GetNewTween()
{
if (_tween is not null && IsInstanceValid(_tween))
{
_tween.Kill();
}
return _tween = GetTree().CreateTween().BindNode(this);
}
public void FadeOut(float time, bool kill = false, bool pause = false)
{
GetNewTween();
_tween.TweenProperty(this, "volume_db", -80, time);
if (kill)
{
IsDead = true;
_tween.TweenCallback(Callable.From(QueueFree));
}
else if (pause)
{
_tween.TweenCallback(Callable.From(() => StreamPaused = true));
}
}
public void FadeIn(float time, bool unpause = false)
{
GetNewTween();
_tween.TweenProperty(this, "volume_db", 0, time);
if (unpause)
{
_tween.TweenCallback(Callable.From(() => StreamPaused = false));
}
}
}