using SQLite;

namespace CounterDrone.Core.Models
{
    /// <summary>步骤4：云团抛撒配置</summary>
    [Table("CloudDispersal")]
    public class CloudDispersal
    {
        [PrimaryKey]
        public string TaskId { get; set; } = string.Empty;

        public int AerosolType { get; set; } = (int)Models.AerosolType.InertGas;

        public double DisperseHeight { get; set; } = 300.0;

        public int TriggerMode { get; set; } = (int)Models.TriggerMode.Time;

        public double SpreadAngle { get; set; } = 0.0;

        public int ReleaseMode { get; set; } = (int)Models.ReleaseMode.Single;

        public double InitialScale { get; set; } = 1000.0;

        public double Duration { get; set; } = 60.0;

        public double ReleaseInterval { get; set; } = 5.0;

        public double TotalAmount { get; set; } = 50.0;

        public double PositionX { get; set; }
        public double PositionY { get; set; }
        public double PositionZ { get; set; }

        public int PositionMode { get; set; } = (int)Models.PositionMode.ManualInput;

        public string Source { get; set; } = "Manual";

        // 算法推荐结果
        public double? RecommendedPosX { get; set; }
        public double? RecommendedPosY { get; set; }
        public double? RecommendedPosZ { get; set; }
        public double? RecommendedTiming { get; set; }

        public double? CriticalPosX { get; set; }
        public double? CriticalPosY { get; set; }
        public double? CriticalPosZ { get; set; }
        public double? CriticalTiming { get; set; }

        /// <summary>推荐弹药数（算法填充）</summary>
        public int SalvoRounds { get; set; }
        /// <summary>云团展开间距（m）（算法填充）</summary>
        public double SalvoSpacing { get; set; }
        /// <summary>算法估计拦截概率（算法填充）</summary>
        public double? EstimatedProbability { get; set; }
    }
}
