修改提交
This commit is contained in:
@@ -1,8 +1,92 @@
|
||||
using UnityEngine;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
public class FishingLineSolver : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private FishingLineNode[] logicalNodes = Array.Empty<FishingLineNode>();
|
||||
|
||||
|
||||
#region LineNode
|
||||
|
||||
/// <summary>
|
||||
/// 当前配置的逻辑节点只读列表。
|
||||
/// 外部可读取节点顺序,但不应直接修改数组内容。
|
||||
/// </summary>
|
||||
public IReadOnlyList<FishingLineNode> LogicalNodes => logicalNodes;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取指定顺序索引的逻辑节点。
|
||||
/// 索引基于 logicalNodes 配置顺序;超出范围或节点为空时返回 null。
|
||||
/// </summary>
|
||||
public FishingLineNode GetLogicalNode(int logicalIndex)
|
||||
{
|
||||
if (logicalNodes == null || logicalIndex < 0 || logicalIndex >= logicalNodes.Length)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return logicalNodes[logicalIndex];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前起点逻辑节点。
|
||||
/// 会返回配置顺序中第一个非空节点。
|
||||
/// </summary>
|
||||
public FishingLineNode GetStartNode()
|
||||
{
|
||||
return FindFirstValidLogicalNode();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前终点逻辑节点。
|
||||
/// 会返回配置顺序中最后一个非空节点。
|
||||
/// </summary>
|
||||
public FishingLineNode GetEndNode()
|
||||
{
|
||||
return FindLastValidLogicalNode();
|
||||
}
|
||||
|
||||
private FishingLineNode FindFirstValidLogicalNode()
|
||||
{
|
||||
if (logicalNodes == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
for (var i = 0; i < logicalNodes.Length; i++)
|
||||
{
|
||||
if (logicalNodes[i] != null)
|
||||
{
|
||||
return logicalNodes[i];
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private FishingLineNode FindLastValidLogicalNode()
|
||||
{
|
||||
if (logicalNodes == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
for (var i = logicalNodes.Length - 1; i >= 0; i--)
|
||||
{
|
||||
if (logicalNodes[i] != null)
|
||||
{
|
||||
return logicalNodes[i];
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user