namespace RobotNet.RobotShares.Enums;

public enum TrafficConflictState
{
    /// <summary>
    /// Xảy ra khi hai robot sử dụng cùng một cạnh (edge) trong biểu đồ đường đi (graph) trong khoảng thời gian trùng lặp, đồng thời lộ trình tiếp theo của robot chồng lên nhau.
    /// </summary>
    Confrontation,

    /// <summary>
    /// Xảy ra khi hai robot sử dụng cùng một cạnh (edge) trong biểu đồ đường đi (graph) trong khoảng thời gian trùng lặp nhưng lộ trình tiếp theo của 2 robot không chồng lấn lên nhau.
    /// </summary>
    Edge,

    /// <summary>
    ///  Xảy ra khi hai robot chiếm cùng một nút (vertex/node) trong biểu đồ đường đi tại cùng một thời điểm hoặc trong khoảng thời gian trùng lặp.
    /// </summary>
    Vertex,

    /// <summary>
    /// Xảy ra khi hai robot ở quá gần nhau (dựa trên khoảng cách Euclidean) trong không gian liên tục, vi phạm khoảng cách an toàn (minDistance).
    /// </summary>
    Proximity,

    /// <summary>
    ///  Xảy ra khi hai robot di chuyển qua một hành lang hẹp (thường được biểu diễn bằng một chuỗi cạnh hoặc node) theo hướng ngược nhau, dẫn đến tình trạng không thể vượt qua nhau.
    /// </summary>
    Corridor,

    /// <summary>
    /// Xảy ra khi hai robot có lộ trình giao nhau về mặt thời gian, nhưng không nhất thiết ở cùng một cạnh hoặc nút, mà ở các vị trí khiến chúng không thể di chuyển tiếp mà không va chạm.
    /// </summary>
    Temporal,

    /// <summary>
    /// Xảy ra khi hai robot cần xoay tại một điểm (thường là node) và không gian xoay bị chồng lấn, dẫn đến va chạm hoặc cản trở.
    /// </summary>
    Rotation,

    /// <summary>
    /// Xảy ra khi các robot cạnh tranh cho một tài nguyên chung (ví dụ: một khu vực làm việc, điểm sạc, hoặc thiết bị nâng) 
    /// </summary>
    Resource,

    /// <summary>
    /// Xảy ra lỗi khi kiểm tra xung đột
    /// </summary>
    None
}
