using Godot;
namespace GFramework.Godot.extensions.signal;
///
/// 信号连接构建器,用于以流畅的方式连接Godot信号
///
/// 要连接信号的目标节点
/// 要连接的信号名称
public sealed class SignalBuilder(Node target, StringName signal)
{
private GodotObject.ConnectFlags? _flags;
///
/// 设置连接标志
///
/// 连接标志
/// 当前构建器实例
public SignalBuilder WithFlags(GodotObject.ConnectFlags flags)
{
_flags = flags;
return this;
}
///
/// 将信号连接到指定的处理方法
///
/// 信号触发时要调用的处理方法
public void To(Callable callable)
{
// 根据是否设置了标志来决定使用哪种连接方法
if (_flags is null)
{
target.Connect(signal, callable);
return;
}
target.Connect(signal, callable, (uint)_flags);
}
}