namespace MultiWheelC.TrajectoryPlanning.CoarsePath;

/// <summary>粗路径规划的最终状态；除 <see cref="Success"/> 外均不发布路径或方向分段。</summary>
public enum PlanningStatus
{
    /// <summary>已得到并通过最终连续碰撞复核的完整粗路径。</summary>
    Success,

    /// <summary>在搜索扩展检查点收到取消请求。</summary>
    Cancelled,

    /// <summary>请求对象或其必要成员为空，或包含不符合基本契约的值。</summary>
    InvalidRequest,

    /// <summary>请求提供的地图对象不满足规划器的结构要求。</summary>
    InvalidMap,

    /// <summary>地图快照尚未准备好参与规划；应查看地图的阻止原因。</summary>
    MapNotReady,

    /// <summary>车辆尺寸、安全余量或曲率限制无效。</summary>
    InvalidVehicleParameters,

    /// <summary>原语、离散、代价、容差或资源限制配置无效。</summary>
    InvalidCurvatureConfiguration,

    /// <summary>起始车辆几何中心或扩大车体不在地图范围内。</summary>
    StartOutsideMap,

    /// <summary>起始扩大车体与地图障碍物相交或擦边。</summary>
    StartInCollision,

    /// <summary>目标车辆几何中心或扩大车体不在地图范围内。</summary>
    GoalOutsideMap,

    /// <summary>目标扩大车体与地图障碍物相交或擦边。</summary>
    GoalInCollision,

    /// <summary>搜索达到 <see cref="HybridAStarConfiguration.SearchTimeout"/> 限制。</summary>
    SearchTimeout,

    /// <summary>搜索达到 <see cref="HybridAStarConfiguration.MaximumExpandedNodes"/> 限制。</summary>
    SearchNodeLimitExceeded,

    /// <summary>Open List 已耗尽，或二维启发式证明目标不可达。</summary>
    NoFeasiblePath,

    /// <summary>搜索成功节点无法按父链回溯为完整路径。</summary>
    BacktrackingFailed,

    /// <summary>回溯路径未通过连续碰撞、终点或输出不变量复核。</summary>
    FinalValidationFailed,

    /// <summary>规划内部发生未预期错误；不会发布部分路径。</summary>
    InternalError,
}
