using KYFramework; using Model; using Unity.Mathematics; using Random = System.Random; namespace SimulationServer; public class XHTotalTaskPerformance { public string 总巡护耗时; public string 火情入场时间; public string 昼间空间覆盖率; public string 夜间空间覆盖率; public string 综合虚警概率; public string 空间遗漏概率; } public class XHTotalTaskPerformanceComponent : Component { public XHTotalTaskPerformance XhTotalTaskPerformance = new XHTotalTaskPerformance(); public void FillData() { var mission = GetParent(); double time = 0; foreach (var ai in mission.AircraftXHs) { time += ai.TotalTime; } var aircraft = mission.AircraftXHs.First(); XhTotalTaskPerformance.总巡护耗时 = time.ToString(); XhTotalTaskPerformance.火情入场时间 = aircraft.FireEnterTime.ToString(); List points = new List(); foreach (AirRoute airRoute in aircraft.FlightPlanEditor.airroute) { points.Add(new double3(airRoute.AirRouteLongitude, airRoute.AirRouteLatitude, airRoute.AirRouteHeight)); } var temp = Utility.GetArea(points)/24000000000; var temp1 = (temp * 100).ToString("#0.00")+ "%"; XhTotalTaskPerformance.昼间空间覆盖率 = temp1; XhTotalTaskPerformance.夜间空间覆盖率 = aircraft.Name == "AR500" ? temp1 : 0.ToString(); XhTotalTaskPerformance.综合虚警概率 = new Random().NextInt64(5, 15) + "%"; XhTotalTaskPerformance.空间遗漏概率 = ((mission.FailureTimes/mission.ExcuteCount) * 100).ToString("#0.00") + "%"; } public Dictionary> GetReport() { Dictionary> report = new Dictionary>(); report["总任务表现"] = new Dictionary { { "总巡护耗时/s", XhTotalTaskPerformance.总巡护耗时.ToString() }, { "火情入场时间/s", XhTotalTaskPerformance.火情入场时间.ToString() }, { "昼间空间覆盖率/-", XhTotalTaskPerformance.昼间空间覆盖率.ToString() }, { "夜间空间覆盖率/-", XhTotalTaskPerformance.夜间空间覆盖率.ToString() }, { "综合虚警概率/-", XhTotalTaskPerformance.综合虚警概率.ToString() }, { "空间遗漏概率/-", XhTotalTaskPerformance.空间遗漏概率.ToString() } }; return report; } }