
namespace NavisworksTransport.Core.Config
{
    /// <summary>
    /// 系统配置根类
    /// </summary>
    public class SystemConfig
    {
        /// <summary>
        /// 网格生成配置
        /// </summary>
        public GridGenerationConfig GridGeneration { get; set; }

        /// <summary>
        /// 路径规划配置
        /// </summary>
        public PathPlanningConfig PathPlanning { get; set; }

        /// <summary>
        /// 路径编辑配置
        /// </summary>
        public PathEditingConfig PathEditing { get; set; }

        /// <summary>
        /// 可视化配置
        /// </summary>
        public VisualizationConfig Visualization { get; set; }

        /// <summary>
        /// 动画配置
        /// </summary>
        public AnimationConfig Animation { get; set; }

        /// <summary>
        /// 物流属性配置
        /// </summary>
        public LogisticsConfig Logistics { get; set; }
    }

    /// <summary>
    /// 网格生成配置
    /// </summary>
    public class GridGenerationConfig
    {
    }

    /// <summary>
    /// 路径规划配置
    /// </summary>
    public class PathPlanningConfig
    {
    }

    /// <summary>
    /// 路径编辑配置
    /// </summary>
    public class PathEditingConfig
    {
        /// <summary>
        /// 网格单元大小（米）
        /// </summary>
        public double CellSizeMeters { get; set; }

        /// <summary>
        /// 最大高度差（米）
        /// </summary>
        public double MaxHeightDiffMeters { get; set; }

        /// <summary>
        /// 车辆长度（米）
        /// </summary>
        public double VehicleLengthMeters { get; set; }

        /// <summary>
        /// 车辆宽度（米）
        /// </summary>
        public double VehicleWidthMeters { get; set; }

        /// <summary>
        /// 车辆高度（米）
        /// </summary>
        public double VehicleHeightMeters { get; set; }

        /// <summary>
        /// 安全间隙（米）
        /// </summary>
        public double SafetyMarginMeters { get; set; }

        /// <summary>
        /// 路径默认转弯半径（米）
        /// </summary>
        public double DefaultPathTurnRadius { get; set; }

        /// <summary>
        /// 圆弧采样步长（米）
        /// </summary>
        public double ArcSamplingStep { get; set; }
    }

    /// <summary>
    /// 可视化配置
    /// </summary>
    public class VisualizationConfig
    {
        /// <summary>
        /// 地图边距比例
        /// </summary>
        public double MarginRatio { get; set; }
    }

    /// <summary>
    /// 动画配置
    /// </summary>
    public class AnimationConfig
    {
        /// <summary>
        /// 动画帧率（帧/秒）
        /// </summary>
        public int FrameRate { get; set; }

        /// <summary>
        /// 动画持续时间（秒）
        /// </summary>
        public double DurationSeconds { get; set; }

        /// <summary>
        /// 检测间隙（米）
        /// </summary>
        public double DetectionGapMeters { get; set; }
    }

    /// <summary>
    /// 物流属性配置
    /// </summary>
    public class LogisticsConfig
    {
        /// <summary>
        /// 可通行性
        /// </summary>
        public bool Traversable { get; set; }

        /// <summary>
        /// 优先级
        /// </summary>
        public int Priority { get; set; }

        /// <summary>
        /// 高度限制（米）
        /// </summary>
        public double HeightLimitMeters { get; set; }

        /// <summary>
        /// 速度限制（米/秒）
        /// </summary>
        public double SpeedLimitMetersPerSecond { get; set; }

        /// <summary>
        /// 宽度限制（米）
        /// </summary>
        public double WidthLimitMeters { get; set; }
    }
}
