Prechádzať zdrojové kódy

添加侦察巡护信息同步

zansimple 9 mesiacov pred
rodič
commit
cbfe55e0a6
23 zmenil súbory, kde vykonal 273 pridanie a 108 odobranie
  1. 2 1
      SimulationServer/Entity/AircraftSHJ.cs
  2. 2 0
      SimulationServer/Entity/AircraftXH.cs
  3. 2 1
      SimulationServer/Entity/AircraftZC.cs
  4. 1 1
      SimulationServer/Entity/MHRescueMission.cs
  5. 13 16
      SimulationServer/Entity/XHRescueMission.cs
  6. 69 0
      SimulationServer/Entity/XHRescueMissionSystem.cs
  7. 69 2
      SimulationServer/Entity/ZCRescueMission.cs
  8. 5 0
      SimulationServer/EventHandler/EventStruct.cs
  9. 1 1
      SimulationServer/EventHandler/MHSimulationOverrEventHandler.cs
  10. 7 0
      SimulationServer/EventHandler/ServerStartEventHandler.cs
  11. 54 0
      SimulationServer/EventHandler/XHSimulationOverrEventHandler.cs
  12. 1 1
      SimulationServer/Init.cs
  13. 1 1
      SimulationServer/MessageHandler/C2S_StmulationStartMessageHandler.cs
  14. BIN
      SimulationServer/bin/Debug/net7.0/KYNetwork.dll
  15. BIN
      SimulationServer/bin/Debug/net7.0/KYNetwork.pdb
  16. 46 84
      SimulationServer/bin/Debug/net7.0/Missions/task_config.json
  17. BIN
      SimulationServer/bin/Debug/net7.0/Reports/MH/2024-07-19/灭火任务 1/1-1灭火任务单机指标报告.xls
  18. BIN
      SimulationServer/bin/Debug/net7.0/Reports/MH/2024-07-19/灭火任务 1/1-2灭火任务单机指标报告.xls
  19. BIN
      SimulationServer/bin/Debug/net7.0/Reports/MH/2024-07-19/灭火任务 1/灭火任务总体指标报告.xls
  20. BIN
      SimulationServer/bin/Debug/net7.0/Reports/MH/2024-07-19/灭火任务 1/装备体系评估报告.xls
  21. BIN
      SimulationServer/bin/Debug/net7.0/SimulationServer.dll
  22. BIN
      SimulationServer/bin/Debug/net7.0/SimulationServer.exe
  23. BIN
      SimulationServer/bin/Debug/net7.0/SimulationServer.pdb

+ 2 - 1
SimulationServer/Entity/AircraftSHJ.cs

@@ -1,5 +1,6 @@
 using KYFramework;
 using Model;
+using MongoDB.Bson;
 
 namespace SimulationServer;
 
@@ -8,7 +9,7 @@ public class AircraftSHJ : AircraftEntity
     public SHJTask content;
     public override void End()
     {
-        TotalFuelConsumption = TurningPoints[0].RemainingFuel - TurningPoints[5].RemainingFuel;
+        TotalFuelConsumption = TurningPoints[0].RemainingFuel - TurningPoints[^1].RemainingFuel;
     }
     
     public override void Start()

+ 2 - 0
SimulationServer/Entity/AircraftXH.cs

@@ -11,6 +11,7 @@ namespace SimulationServer;
 public class AircraftXH : Entity
 {
     public string Name; // 飞机名称
+    public string AircraftId;
     public string NextMissionId; // 下一个任务ID
     public AircraftDB Db;
     public FlightPlanEditor? FlightPlanEditor; // 飞行计划编辑器
@@ -29,6 +30,7 @@ public class AircraftXH : Entity
     private bool isSeeFire = false;
     public bool isOver = false;
     public double TaskReadyTime;
+    public bool SyncOver;
     
     public double[] Velocitys = new double[5]; // 速度
     public double[] FuelConsumptions = new double[5]; // 燃油消耗

+ 2 - 1
SimulationServer/Entity/AircraftZC.cs

@@ -1,5 +1,6 @@
 using KYFramework;
 using Model;
+using MongoDB.Bson;
 using QuYuSaoMiao;
 
 namespace SimulationServer;
@@ -12,6 +13,7 @@ public class AircraftZC : AircraftEntity
     public double[] Velocitys = new double[5]; // 速度
     public double[] FuelConsumptions = new double[5]; // 燃油消耗
     public double time;
+    
     public override void Start()
     {
         FXJHGenerate.FromStartToMission(FlightPlanEditor,ref TurningPoints);//生成从起点到任务段起点的航路点
@@ -27,7 +29,6 @@ public class AircraftZC : AircraftEntity
             time += TurningPoints[i].SegmentFlightTime;
         }
         Log.Info($"{missionId} 任务结束!总飞行时间:{time} 总油耗:{TotalFuelConsumption}");
-        
     }
 }
 

+ 1 - 1
SimulationServer/Entity/MHRescueMission.cs

@@ -68,7 +68,7 @@ public class MHRescueMission : Entity
         SaveMH();
         SaveTotalMH();
         ReportMH();
-        this.StartAsyncMH();
+        //this.StartAsyncMH();
         
 
         // if (currentExecuteCount > ExecutionContext)

+ 13 - 16
SimulationServer/Entity/XHRescueMission.cs

@@ -18,20 +18,17 @@ public class XHRescueMission : Entity
 
     public bool IsRunning;
     public Action End;
-  
+    public double SimulationTime;
    
    // 巡护的 单机能力
    // <机型,<sheet,<指标名,值列表>>>
-   Dictionary<string,Dictionary<string,Dictionary<string,List<string>>>> singleReport =
-       new Dictionary<string, Dictionary<string, Dictionary<string, List<string>>>>();
+   public Dictionary<string,Dictionary<string,Dictionary<string,List<string>>>> singleReport = new ();
     
     
     // 灭火的 整体能力
-    Dictionary<string, Dictionary<string, List<string>>> totalXhReport =
-        new Dictionary<string, Dictionary<string, List<string>>>();
+    public Dictionary<string, Dictionary<string, List<string>>> totalXhReport = new ();
 
-    Dictionary<string, Dictionary<string, List<string>>> equipReport =
-        new Dictionary<string, Dictionary<string, List<string>>>();
+    public Dictionary<string, Dictionary<string, List<string>>> equipReport = new ();
 
     public void Reset()
     {
@@ -50,9 +47,9 @@ public class XHRescueMission : Entity
         Log.Info($"{MissionId} 任务结束!");
         // 灭火完成 任务结束
         End?.Invoke();
-
         SaveXH();
         ReportXH();
+        this.StartAsyncXH();
     }
 
     
@@ -67,9 +64,9 @@ public class XHRescueMission : Entity
             staticCapacity.FillData(aircraftXh.Db);
             economical.FillData(aircraftXh.Db);
 
-            if (!singleReport.ContainsKey(aircraftXh.Name))
+            if (!singleReport.ContainsKey(aircraftXh.AircraftId))
             {
-                singleReport[aircraftXh.Name] = new Dictionary<string, Dictionary<string, List<string>>>();
+                singleReport[aircraftXh.AircraftId] = new Dictionary<string, Dictionary<string, List<string>>>();
             }
 
 
@@ -77,21 +74,21 @@ public class XHRescueMission : Entity
             Dictionary<string, Dictionary<string, string>> staticReport = staticCapacity.GetReport();
             foreach (var kv in staticReport)
             {
-                if(!singleReport[aircraftXh.Name].ContainsKey(kv.Key)) singleReport[aircraftXh.Name][kv.Key] = new Dictionary<string, List<string>>();
+                if(!singleReport[aircraftXh.AircraftId].ContainsKey(kv.Key)) singleReport[aircraftXh.AircraftId][kv.Key] = new Dictionary<string, List<string>>();
                 foreach (var kv2 in kv.Value)
                 {
-                    if (!singleReport[aircraftXh.Name][kv.Key].ContainsKey(kv2.Key)) singleReport[aircraftXh.Name][kv.Key][kv2.Key] = new List<string>();
-                    singleReport[aircraftXh.Name][kv.Key][kv2.Key].Add(kv2.Value);
+                    if (!singleReport[aircraftXh.AircraftId][kv.Key].ContainsKey(kv2.Key)) singleReport[aircraftXh.AircraftId][kv.Key][kv2.Key] = new List<string>();
+                    singleReport[aircraftXh.AircraftId][kv.Key][kv2.Key].Add(kv2.Value);
                 }
             }
             Dictionary<string, Dictionary<string, string>> economicalReport = economical.GetReport();
             foreach (var kv in economicalReport)
             {
-                if(!singleReport[aircraftXh.Name].ContainsKey(kv.Key)) singleReport[aircraftXh.Name][kv.Key] = new Dictionary<string, List<string>>();
+                if(!singleReport[aircraftXh.AircraftId].ContainsKey(kv.Key)) singleReport[aircraftXh.AircraftId][kv.Key] = new Dictionary<string, List<string>>();
                 foreach (var kv2 in kv.Value)
                 {
-                    if (!singleReport[aircraftXh.Name][kv.Key].ContainsKey(kv2.Key)) singleReport[aircraftXh.Name][kv.Key][kv2.Key] = new List<string>();
-                    singleReport[aircraftXh.Name][kv.Key][kv2.Key].Add(kv2.Value);
+                    if (!singleReport[aircraftXh.AircraftId][kv.Key].ContainsKey(kv2.Key)) singleReport[aircraftXh.AircraftId][kv.Key][kv2.Key] = new List<string>();
+                    singleReport[aircraftXh.AircraftId][kv.Key][kv2.Key].Add(kv2.Value);
                 }
             }
         }

+ 69 - 0
SimulationServer/Entity/XHRescueMissionSystem.cs

@@ -0,0 +1,69 @@
+using KYFramework;
+using KYFramework.Network;
+using Model;
+using MongoDB.Bson;
+
+namespace SimulationServer;
+
+public static class XHRescueMissionSystem
+{
+    /// <summary>
+    /// 开始同步信息到客户端
+    /// </summary>
+    /// <param name="self"></param>
+    public static void StartAsyncXH(this XHRescueMission self)
+    {
+        foreach (var aircraft in self.AircraftXHs)
+        {
+            var location = FXJHGenerate.GetAllCurrentLocation(aircraft.turningPoints, self.SimulationTime);
+            
+            
+            // 同步信息到客户端
+            self.SyncLocation(location.Item1, aircraft);
+            
+            if (location.Item2) // 判断飞机飞到终点
+            {
+                aircraft.SyncOver = true;
+            }
+            
+        }
+        
+        // 如果 aircraft.SyncOver 为 true ,从列表一处当前aircraft
+        self.AircraftXHs.RemoveAll(a => a.SyncOver);
+        
+        if (self.AircraftXHs.Count == 0)
+        {
+            // 任务结束
+            Game.EventSystem.Publish(new XHSimulationOver{ Mission = self});
+            return;
+        }
+        
+        self.SimulationTime++;
+        Task.Delay(TimeSpan.FromSeconds(1 / Init.SimulationSpeed)).ContinueWith(t => self.StartAsyncXH());
+    }
+    
+    public static void SyncLocation(this XHRescueMission self,CurrentLocation location,AircraftXH aircraft)
+    {
+        // 同步信息到客户端
+        if (location != null)
+        {
+            // 同步信息到客户端
+            S2C_TurningPointOutput s2CTurningPointOutput = new S2C_TurningPointOutput();
+            s2CTurningPointOutput.AircraftID = aircraft.AircraftId;
+            //s2CTurningPointOutput.TurningPointName = fly.TurningPointName;
+
+            s2CTurningPointOutput.PresentMission = location.PresentMission;
+            
+            s2CTurningPointOutput.PresentLocation = new Point
+            {
+                Altitude = location.CurrentHei,
+                Latitude = location.CurrentLat,
+                Longitude = location.CurrentLon
+            };
+
+            s2CTurningPointOutput.PresentVelocity = location.Currentvelo;
+            SessionComponent.Instance.Session.Send(s2CTurningPointOutput); 
+            Log.Info($"飞机{aircraft.Name} 当前位置: {location.ToJson()}");
+        }
+    }
+}

+ 69 - 2
SimulationServer/Entity/ZCRescueMission.cs

@@ -1,4 +1,7 @@
 using KYFramework;
+using KYFramework.Network;
+using Model;
+using MongoDB.Bson;
 
 namespace SimulationServer;
 
@@ -7,10 +10,74 @@ public class ZCRescueMission : Entity
     public string MissionId; // 任务ID
     public bool Success; // 任务是否成功
     public double InitArea;
-    
+    public double SimulationTime;
     public List<AircraftZC> AircraftZCs = new List<AircraftZC>();
     public void Start()
     {
-       
+        AircraftZCs?.ForEach(a => a.Start());
+        
+        this.StartAsyncZC();
+    }
+}
+
+public static class ZCRescueMissionSystem
+{
+     /// <summary>
+    /// 开始同步信息到客户端
+    /// </summary>
+    /// <param name="self"></param>
+    public static void StartAsyncZC(this ZCRescueMission self)
+    {
+        foreach (var aircraft in self.AircraftZCs)
+        {
+            var location = FXJHGenerate.GetAllCurrentLocation(aircraft.TurningPoints, self.SimulationTime);
+            
+            // 同步信息到客户端
+            self.SyncLocation(location.Item1, aircraft);
+            
+            if (location.Item2) // 判断飞机飞到终点
+            {
+                aircraft.SyncOver = true;
+            }
+        }
+        
+        // 如果 aircraft.SyncOver 为 true ,从列表一处当前aircraft
+        self.AircraftZCs.RemoveAll(a => a.SyncOver);
+        
+        if (self.AircraftZCs.Count == 0)
+        {
+            // 任务结束
+            S2C_StmulationEnd end = new S2C_StmulationEnd();
+            SessionComponent.Instance.Session.Send(end);
+            return;
+        }
+        
+        self.SimulationTime++;
+        Task.Delay(TimeSpan.FromSeconds(1 / Init.SimulationSpeed)).ContinueWith(t => self.StartAsyncZC());
+    }
+    
+    public static void SyncLocation(this ZCRescueMission self,CurrentLocation location,AircraftEntity aircraft)
+    {
+        // 同步信息到客户端
+        if (location != null)
+        {
+            // 同步信息到客户端
+            S2C_TurningPointOutput s2CTurningPointOutput = new S2C_TurningPointOutput();
+            s2CTurningPointOutput.AircraftID = aircraft.AircraftId;
+            //s2CTurningPointOutput.TurningPointName = fly.TurningPointName;
+
+            s2CTurningPointOutput.PresentMission = location.PresentMission;
+            
+            s2CTurningPointOutput.PresentLocation = new Point
+            {
+                Altitude = location.CurrentHei,
+                Latitude = location.CurrentLat,
+                Longitude = location.CurrentLon
+            };
+
+            s2CTurningPointOutput.PresentVelocity = location.Currentvelo;
+            SessionComponent.Instance.Session.Send(s2CTurningPointOutput); 
+            Log.Info($"飞机{aircraft.Name} 当前位置: {location.ToJson()}");
+        }
     }
 }

+ 5 - 0
SimulationServer/EventHandler/EventStruct.cs

@@ -8,4 +8,9 @@ public struct ServerStart
 public struct MHSimulationOver
 {
     public MHRescueMission Mission;
+}
+
+public struct XHSimulationOver
+{
+    public XHRescueMission Mission;
 }

+ 1 - 1
SimulationServer/EventHandler/SimulationOverEventHandler.cs → SimulationServer/EventHandler/MHSimulationOverrEventHandler.cs

@@ -5,7 +5,7 @@ using KYFramework.Network;
 namespace SimulationServer;
 
 [Event]
-public class SimulationOverEventHandler : AEvent<MHSimulationOver>
+public class MHSimulationOverrEventHandler : AEvent<MHSimulationOver>
 {
     protected override UniTask Run(MHSimulationOver mhSimulationOver)
     {

+ 7 - 0
SimulationServer/EventHandler/ServerStartEventHandler.cs

@@ -142,6 +142,7 @@ public class ServerStartEventHandler : AEvent<ServerStart>
 
             foreach (SHJTask shjTask in mHTaskConfig.sHJTask)
             {
+                Log.Info($"创建索滑降任务 : {shjTask.missionInformation.MissionName}");
                 if(shjTask.missionInformation.AircraftInfos == null) continue;
                 for (int i = 0; i < shjTask.missionInformation.AircraftInfos.Length; i++)
                 {
@@ -160,6 +161,7 @@ public class ServerStartEventHandler : AEvent<ServerStart>
                     mission.End += aircraftSHJ.End;
                     aircraftSHJ.AircraftIndex = index.ToString();
                     mission.aircrafts.Add(aircraftSHJ);
+                    Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
                     index++;
                 }
             }
@@ -168,6 +170,7 @@ public class ServerStartEventHandler : AEvent<ServerStart>
 
         foreach (ZCTask zcTask in taskConfig.zCTask)
         {
+            Log.Info($"创建侦察任务 : {zcTask.missionInformation.MissionName}");
             ZCRescueMission mission = ComponentFactory.Create<ZCRescueMission>();
             taskSys.ZCRescueMissions.Add(mission);
             mission.MissionId = $"侦擦任务 {zcTask.missionInformation.MissionName}";
@@ -203,12 +206,14 @@ public class ServerStartEventHandler : AEvent<ServerStart>
                 aircraft.AddComponent<StaticCapacityComponent>();
                 aircraft.AddComponent<TaskPerformanceComponent>();
                 aircraft.AddComponent<EconomicalComponent>();
+                Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
                 mission.AircraftZCs.Add(aircraft);
             }
         }
 
         foreach (XHTask xhTask in taskConfig.xHTask)
         {
+            Log.Info($"创建巡护任务 : {xhTask.missionInformation.MissionName}");
             XHRescueMission mission = ComponentFactory.Create<XHRescueMission>();
             mission.AddComponent<XHEconomicalComponent>();
             mission.AddComponent<XHTotalTaskPerformanceComponent>();
@@ -241,12 +246,14 @@ public class ServerStartEventHandler : AEvent<ServerStart>
         
                 AircraftXH aircraft = ComponentFactory.Create<AircraftXH, FlightPlanEditor>( flightPlanEditor);
                 aircraft.Name = xhTask.missionInformation.AircraftInfos[i];
+                aircraft.AircraftId = xhTask.missionInformation.AircraftId[i];
                 aircraft.TaskReadyTime = xhTask.missionInformation.TakeoffPreparationTime;
                 //aircraft.NextMissionId = zcTask.NextTaskId;
                 mission.AircraftXHs.Add(aircraft);
                 mission.End += aircraft.End;
                 aircraft.AddComponent<XHStaticCapacityComponent>();
                 aircraft.AddComponent<XHEconomicalComponent>();
+                Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
             }
         }
         taskSys.Start();

+ 54 - 0
SimulationServer/EventHandler/XHSimulationOverrEventHandler.cs

@@ -0,0 +1,54 @@
+using Cysharp.Threading.Tasks;
+using KYFramework;
+using KYFramework.Network;
+
+namespace SimulationServer;
+
+[Event]
+public class XHSimulationOverrEventHandler : AEvent<XHSimulationOver>
+{
+    protected override UniTask Run(XHSimulationOver mhSimulationOver)
+    {
+        S2C_StmulationEnd end = new S2C_StmulationEnd();
+        // 所有飞机的数据
+        foreach (var kv in mhSimulationOver.Mission.singleReport)
+        {
+            EntitySheetReportValue aircraftValue = GetSheetReportValue(kv.Key + "-巡护任务单机指标报告", kv.Value);
+            end.EntitySheetReportValueArr.Add(aircraftValue);
+        }
+        
+        // 总体数据
+        EntitySheetReportValue totalValue = GetSheetReportValue("巡护任务总体指标报告", mhSimulationOver.Mission.totalXhReport);
+        end.EntitySheetReportValueArr.Add(totalValue);
+        
+        // 装备数据
+        EntitySheetReportValue equipmentValue = GetSheetReportValue("装备体系评估报告", mhSimulationOver.Mission.equipReport);
+        end.EntitySheetReportValueArr.Add(equipmentValue);
+        
+        SessionComponent.Instance.Session.Send(end);
+        
+        return UniTask.CompletedTask;
+    }
+    
+    public EntitySheetReportValue GetSheetReportValue(string name,Dictionary<string, Dictionary<string, List<string>>> report)
+    {
+        EntitySheetReportValue aircraftValue = new EntitySheetReportValue();
+        aircraftValue.Name = name;
+        //每架飞机的所有sheet
+        foreach (var kv1 in report)
+        {
+            SheetReportValue sheetValue = new SheetReportValue();
+            sheetValue.Name = kv1.Key;
+            aircraftValue.SheetReportValueArr.Add(sheetValue);
+            //每个sheet的所有数据
+            foreach (var kv2 in kv1.Value)
+            {
+                ReportValue reportValue = new ReportValue();
+                reportValue.Name = kv2.Key;
+                reportValue.Value = kv2.Value.First();
+                sheetValue.ValueArr.Add(reportValue);
+            }
+        }
+        return aircraftValue;
+    }
+}

+ 1 - 1
SimulationServer/Init.cs

@@ -35,7 +35,7 @@ public static class Init
 
             // 任务
             Game.Scene.AddComponent<TaskComponent>();
-            
+            Game.EventSystem.Publish(new ServerStart());
             Log.Info("服务器启动完成!");
         }
         catch (Exception e)

+ 1 - 1
SimulationServer/MessageHandler/C2S_StmulationStartMessageHandler.cs

@@ -12,7 +12,7 @@ public class C2S_StmulationStartMessageHandler : AMHandler<C2S_StmulationStart>
         SessionComponent.Instance.Session = session;
         
         // TODO 读取配置文件
-        Game.EventSystem.Publish(new ServerStart());
+        //Game.EventSystem.Publish(new ServerStart());
         
         return UniTask.CompletedTask;
     }

BIN
SimulationServer/bin/Debug/net7.0/KYNetwork.dll


BIN
SimulationServer/bin/Debug/net7.0/KYNetwork.pdb


+ 46 - 84
SimulationServer/bin/Debug/net7.0/Missions/task_config.json

@@ -1,96 +1,58 @@
 {
-  "灭火任务": [
+  
+  "火场侦查任务": [
     {
-      "总灭火任务编号": 1,
+      "任务信息": {
+        "任务名称": "火场侦查任务1",
+        "任务ID": "ZC1",
+        "任务主要类型": "航空灭火",
+        "任务类型": "火场侦查",
+        "开始时间": null,
+        "结束时间": null,
+        "应用机型": [
+          "M-171"
+        ],
+        "应用飞机编号": [
+          "1-3"
+        ]
+      },
+      "矩形侦查区域边界点": [
+        [
+          113.998,
+          39.999
+        ],
+        [
+          114.0,
+          40.0
+        ],
+        [
+          114.002,
+          40.001
+        ],
+        [
+          113.998,
+          40.001
+        ]
+      ],
+      "扫描线间距": 300.0,
+      "侦查飞行真高": 300.0,
+      "是否真实高度": true,
+      "是否环绕模式": true,
+      "环绕圈数": 1,
       "火点ID": 1,
-      "执行次数": 1,
-      "吊桶洒水灭火任务": [
+      "MissionPoints": [
         {
-         
-          "任务信息": {
-            "任务名称": "吊桶洒水灭火任务1-1",
-            "任务ID": "DTMH1-1",
-            "任务主要类型": "航空灭火",
-            "任务类型": "吊桶洒水灭火", 
-            "起飞准备时间": 600.0,
-            "开始时间": null,
-            "结束时间": null,
-            "应用机型": [
-              "Ka-32"
-            ],
-            "应用飞机编号": [
-              "1-1"
-            ]
-          },
-          "取水点": [
-            {
-              "任务点经度": 121.999,
-              "任务点纬度": 51.399,
-              "任务点海拔": 1600.0
-            }
-          ],
-          "下一个任务ID": "DMMH1"
-        },
-        {
-          
-          "任务信息": {
-            "任务名称": "吊桶洒水灭火任务1-2",
-            "任务ID": "DTMH1-2",
-            "任务主要类型": "航空灭火",
-            "任务类型": "吊桶洒水灭火",
-            "开始时间": null,
-            "结束时间": null,
-            "起飞准备时间": 600.0,
-            "应用机型": [
-              "Ka-32"
-            ],
-            "应用飞机编号": [
-              "1-2"
-            ]
-          },
-          "取水点": [
-            {
-              "任务点经度": 121.999,
-              "任务点纬度": 51.399,
-              "任务点海拔": 1600.0
-            }
-          ],
-          "下一个任务ID": ""
+          "任务点经度": 113.998,
+          "任务点纬度": 39.999,
+          "任务点海拔": 1500.0
         }
       ],
-      "机降灭火任务": [
-        {
-         
-          "任务信息": {
-            "任务名称": "机降灭火1-1",
-            "任务ID": "DMMH1-1",
-            "任务主要类型": "航空灭火",
-            "任务类型": "机降灭火",
-            "开始时间": null,
-            "结束时间": null,
-            "起飞准备时间": 600.0,
-            "应用机型": [
-              "M-171"
-            ],
-            "应用飞机编号": [
-              "1-3"
-            ]
-          },
-          "地面部署人数": 10.0,
-          "机降人数": 100.0,
-          "机降点": [
-            {
-              "任务点经度": 121.1,
-              "任务点纬度": 50.3,
-              "任务点海拔": 2000.0
-            }
-          ],
-          "下一个任务ID": ""
-        }
-      ]
+      "下一个任务ID": ""
     }
   
   ]
 
 
+
+
 }

BIN
SimulationServer/bin/Debug/net7.0/Reports/MH/2024-07-19/灭火任务 1/1-1灭火任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/MH/2024-07-19/灭火任务 1/1-2灭火任务单机指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/MH/2024-07-19/灭火任务 1/灭火任务总体指标报告.xls


BIN
SimulationServer/bin/Debug/net7.0/Reports/MH/2024-07-19/灭火任务 1/装备体系评估报告.xls


BIN
SimulationServer/bin/Debug/net7.0/SimulationServer.dll


BIN
SimulationServer/bin/Debug/net7.0/SimulationServer.exe


BIN
SimulationServer/bin/Debug/net7.0/SimulationServer.pdb