using Model;
using Newtonsoft.Json;

public class Base
{
    [JsonProperty("基地名称")]
    public string BaseName;
    //[JsonProperty("位置信息")]
    //public string BasePositionInfo;
    [JsonProperty("基地编号")]
    public int BaseId;
    [JsonProperty("基地经度")]
    public double BaseLongitude;
    [JsonProperty("基地纬度")]
    public double BaseLatitude;
    [JsonProperty("基地海拔")]
    public double BaseHeight;
}

public struct AircraftParameter
{
    [JsonProperty("机型")]
    public string AircraftID;
    [JsonProperty("飞机编号")]
    public string Id;//如1-2,1表示基地1,2表示基地1中的2号飞机
    [JsonProperty("类型")]
    public string AircraftType;
    [JsonProperty("子类型")]
    public string AircraftSubType;
    [JsonProperty("所属机场ID")]
    public int AirportId;
    //[JsonProperty("状态")]
    //public string AircraftState;
    //[JsonProperty("已连续工作时间")]
    //public double AircraftRunTime;
    [JsonProperty("任务载荷型号")]
    public TaskLoadType taskLoadType;
    [JsonProperty("最大起飞重量")]
    public double MaxTakeoffWeight;
    [JsonProperty("最大载油量")]
    public double MaxFuelCapacity;
    [JsonProperty("最大载客数量")]
    public double MaxPassengerNumber;
}

public class TaskLoadType
{
    [JsonProperty("雷达设备")]
    public string RadarEquipment;
    [JsonProperty("光电探测设备")]
    public string PhotoelectricDetectionEquipment;
}

public class FirePoint
{
    [JsonProperty("火点ID")]
    public int FirePointId;
    [JsonProperty("火点经度")]
    public double FirePointLongitude;
    [JsonProperty("火点纬度")]
    public double FirePointLatitude;
    [JsonProperty("火点海拔")]
    public double FirePointHeight;
    [JsonProperty("初始火场面积")]
    public double InitialArea;
    [JsonProperty("初始火线长度")]
    public double fireLength;

}
public class TargetPoint//搜救目标点初始坐标
{
    [JsonProperty("目标点ID")]
    public int TargetPointId;
    [JsonProperty("目标点经度")]
    public double TargetPointLongitude;
    [JsonProperty("目标点纬度")]
    public double TargetPointLatitude;
    [JsonProperty("目标点海拔")]
    public double TargetPointHeight;
    [JsonProperty("目标气象信息")]
    public TargetQiXiangInfo TargetQiXiangInfo;
    [JsonProperty("目标类型")]
    public TargetType TargetType;
}

public class TargetQiXiangInfo
{
    [JsonProperty("00-08温度")]
    public double Temperature_00_08;
    [JsonProperty("00-08湿度")]
    public double Humidity_00_08;
    [JsonProperty("00-08能见度")]
    public double Visibility_00_08;
    [JsonProperty("00-08风速")]
    public double WindSpeed_00_08;
    [JsonProperty("00-08风向")]
    public double WindDirection_00_08;
    [JsonProperty("00-08天气")]
    public string Weather_00_08;
    [JsonProperty("08-19温度")]
    public double Temperature_08_19;
    [JsonProperty("08-19湿度")]
    public double Humidity_08_19;
    [JsonProperty("08-19能见度")]
    public double Visibility_08_19;
    [JsonProperty("08-19风速")]
    public double WindSpeed_08_19;
    [JsonProperty("08-19风向")]
    public double WindDirection_08_19;
    [JsonProperty("08-19天气")]
    public string Weather_08_19;
    [JsonProperty("19-24温度")]
    public double Temperature_19_24;
    [JsonProperty("19-24湿度")]
    public double Humidity_19_24;
    [JsonProperty("19-24能见度")]
    public double Visibility_19_24;
    [JsonProperty("19-24风速")]
    public double WindSpeed_19_24;
    [JsonProperty("19-24风向")]
    public double WindDirection_19_24;
    [JsonProperty("19-24天气")]
    public string Weather_19_24;
}

public class TargetType
{
    [JsonProperty("类型")]
    public string Type;
    [JsonProperty("人员数量")]
    public int Count;
    [JsonProperty("重量")]
    public double Weight;
    [JsonProperty("载人数")]
    public int LoadCount;
    [JsonProperty("吨位")]
    public double Tonnage;
    [JsonProperty("长度")]
    public double Length;
    [JsonProperty("携带定位设备")]
    public bool GPS;
    [JsonProperty("预计剩余存活时间")]
    public double LiveTime;
    [JsonProperty("雷达截面面积")]
    public double RadarArea;
    [JsonProperty("探测目标面积")]
    public double TargetArea;
    [JsonProperty("探测目标亮度")]
    public double TargetBrightness;
    [JsonProperty("时间窗口")]
    public double Time;
}

public class RescueDemandInfo//救援需求信息
{
    [JsonProperty("需求点名称")]
    public string DemandPointName;
    [JsonProperty("需求点ID")]
    public int DemandPointID;
    [JsonProperty("目标点经度")]
    public double TargetPointLongitude;
    [JsonProperty("目标点纬度")]
    public double TargetPointLatitude;
    [JsonProperty("目标点海拔")]
    public double TargetPointHeight;
    [JsonProperty("目标气象信息")]
    public TargetQiXiangInfo TargetQiXiangInfo;
    [JsonProperty("目标类型")]
    public TargetType TargetType;
}

public class GoodsPersonPoint//物资人员点
{
    [JsonProperty("物资点名称")]
    public string GoodsPointName;
    [JsonProperty("物资点编号")]
    public int GoodsPointID;
    [JsonProperty("取水点经度")]
    public double WaterPointLongitude;
    [JsonProperty("取水点纬度")]
    public double WaterPointLatitude;
    [JsonProperty("取水点海拔")]
    public double WaterPointHeight;
}

public class ClimbSegment
{
    [JsonProperty("爬升段速度")]
    public double ClimbVelocity;
    [JsonProperty("爬升段油耗率")]
    public double ClimbFuelConsumptionRate;
}

public class DescentSegment
{
    [JsonProperty("下降段速度")]
    public double DescentVelocity;
    [JsonProperty("下降段油耗率")]
    public double DescentFuelConsumptionRate;
}

public class CruiseSegment
{
    [JsonProperty("巡航段高度")]
    public double CruiseHeight = 2000;
    [JsonProperty("巡航段速度")]
    public double CruiseVelocity;
    [JsonProperty("巡航段油耗率")]
    public double CruiseFuelConsumptionRate;
}


public struct CityWeather
{
    [JsonProperty("调用方式")]
    public string CallMethod;
    [JsonProperty("温度")]
    public double Temperature;
    //能见度
    [JsonProperty("能见度")]
    public double Visibility;
    //水温
    [JsonProperty("水温")]
    public double WaterTemperature;
}

public struct ScenarioInfo
{
    [JsonProperty("想定日期")]
    public string Data;
    [JsonProperty("想定时间")]
    public string Time;
}

public class EditorConfig
{
    [JsonProperty("仿真次数")]
    public int runCounts;
    [JsonProperty("想定信息")]
    public ScenarioInfo scenarioInfo = new ScenarioInfo();
    [JsonProperty("基地信息")]
    public List<Base> bases = new List<Base>();
    [JsonProperty("飞行器信息")]
    public List<AircraftParameter>aircraftParameters = new List<AircraftParameter>();
    [JsonProperty("火点")]
    public List<FirePoint> firePoints = new List<FirePoint>();
    [JsonProperty("天气信息")]
    public CityWeather cityWeather = new CityWeather();
    [JsonProperty("搜救目标点初始坐标")]
    public List<TargetPoint> targetPoints = new List<TargetPoint>();
    [JsonProperty("救援需求信息")]
    public List<RescueDemandInfo> rescueDemandInfos = new List<RescueDemandInfo>();
    [JsonProperty("物资人员点")]
    public List<GoodsPersonPoint> goodsPersonPoints = new List<GoodsPersonPoint>();
}