using UnityEngine;
namespace NBF
{
public abstract class FishingLineNodeFeature : MonoBehaviour
{
///
/// 当前功能组件所属的节点。
///
public FishingLineNode Node { get; private set; }
///
/// 当前功能组件所属的鱼线求解器。
///
public FishingLineSolver Solver { get; private set; }
///
/// 将当前功能组件绑定到指定节点和求解器。
///
public void Bind(FishingLineNode node, FishingLineSolver solver)
{
Node = node;
Solver = solver;
if (!IsSupportedNode(node))
{
Debug.LogWarning($"{GetType().Name} 不适用于节点 {node.name} 的当前配置。", this);
}
OnBind();
}
///
/// 当前功能组件是否支持挂在该节点上。
/// 子类可按节点类型、尾节点类型或产品标识做限制。
///
public virtual bool IsSupportedNode(FishingLineNode node)
{
return node != null;
}
///
/// 节点与求解器绑定完成后的回调。
///
protected virtual void OnBind()
{
}
///
/// 鱼线链路重建完成后的回调。
///
public virtual void OnLineBuilt()
{
}
///
/// 鱼线达到断线条件后的回调。
///
public virtual void OnLineBreakRequested()
{
}
}
}