namespace Plane.Copters
{
    /// <summary>
    /// 定义自动飞行任务的属性。
    /// </summary>
    public interface IMission
    {
        /// <summary>
        /// 获取或设置相对于起飞点的高度。
        /// </summary>
        float Altitude { get; set; }

        /// <summary>
        /// 获取或设置飞行命令。
        /// </summary>
        FlightCommand Command { get; set; }

        /// <summary>
        /// 获取或设置纬度。
        /// </summary>
        double Latitude { get; set; }

        /// <summary>
        /// 获取或设置经度。
        /// </summary>
        double Longitude { get; set; }

        /// <summary>
        /// 获取或设置参数 1。通常用来指定判断为到达的最大半径，单位为米。
        /// </summary>
        float Param1 { get; set; }

        /// <summary>
        /// 获取或设置参数 2。通常用来指定停留时间，单位为毫秒。
        /// </summary>
        float Param2 { get; set; }

        /// <summary>
        /// 获取或设置参数 3。通常用来指定盘旋半径，单位为米，正数表示顺时针，负数表示逆时针。
        /// </summary>
        float Param3 { get; set; }

        /// <summary>
        /// 获取或设置参数 4。通常用来指定机头方向，单位为角度，北方为 0，东方为 90，范围为 [0, 360)。
        /// </summary>
        float Param4 { get; set; }

        /// <summary>
        /// 获取或设置序号。
        /// </summary>
        ushort Sequence { get; set; }
    }
}
