AircraftJJ.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. using KYFramework;
  2. using Model;
  3. using SimulationServer.Utils;
  4. using Define = SimulationServer.Utils.Define;
  5. namespace SimulationServer;
  6. public class AircraftJJ : AircraftEntity
  7. {
  8. public string NextMissionId; // 下一个任务ID
  9. public MissionEndPoint missionEndPoint = new MissionEndPoint();
  10. public int LandingPersonnel; //personCount
  11. public MHRescueMission mhRescueMission;
  12. public int landingPoint = 0; // 任务文件获取
  13. public JJJYTask taskContent;
  14. public TaskParameter taskParameter;
  15. public RescueDemandInfo rescueDemandInfo;
  16. public bool IsOver;
  17. public bool Success;
  18. public override void End()
  19. {
  20. TotalFuelConsumption = TurningPoints[0].RemainingFuel - TurningPoints[^1].RemainingFuel;
  21. }
  22. public override void Reset()
  23. {
  24. base.Reset();
  25. IsOver = false;
  26. Success = false;
  27. TotalTime = 0;
  28. }
  29. public override void Start()
  30. {
  31. FlightPlanEditor.missionpoint.MissionPointLatitude = rescueDemandInfo.TargetPointLatitude;
  32. FlightPlanEditor.missionpoint.MissionPointLongitude = rescueDemandInfo.TargetPointLongitude;
  33. FlightPlanEditor.missionpoint.MissionPointHeight = rescueDemandInfo.TargetPointHeight;
  34. missionEndPoint.MissionEndPointLatitude = FlightPlanEditor.missionpoint.MissionPointLatitude;
  35. missionEndPoint.MissionEndPointLongitude = FlightPlanEditor.missionpoint.MissionPointLongitude;
  36. missionEndPoint.MissionEndPointHeight = FlightPlanEditor.missionpoint.MissionPointHeight;
  37. FXJHGenerate.FromStartToMission(FlightPlanEditor, ref TurningPoints);//生成从起点到任务段起点的航路点
  38. int TransportNumber = (int)Math.Ceiling(taskParameter.LandingPersonnel / FlightPlanEditor.aircraftparameter.MaxPassengerNumber);
  39. int j = 0;
  40. for (int i = 0; i < TransportNumber; i++)
  41. {
  42. if (i == 0)
  43. {
  44. FXJHGenerate.JijiangJiuYuan1(FlightPlanEditor, ref TurningPoints);
  45. }
  46. else
  47. {
  48. FXJHGenerate.JijiangJiuYuan(FlightPlanEditor, ref TurningPoints);
  49. j += 2;
  50. }
  51. }
  52. // FXJHGenerate.InitializeVelocities(FlightPlanEditor, TurningPoints, ref Velocitys);
  53. // FXJHGenerate.InitializeFuelConsumptions(FlightPlanEditor, TurningPoints,ref FuelConsumptions);
  54. FXJHGenerate.FromMissionToEnd(FlightPlanEditor, missionEndPoint, ref TurningPoints);
  55. FXJHGenerate.FXJHTPDiedai(FlightPlanEditor, ref TurningPoints, Velocitys, FuelConsumptions); // 更新了 计算油耗的方法
  56. for (int i = 0; i < TurningPoints.Count; i++) // 总飞行时间
  57. {
  58. TotalTime += TurningPoints[i].SegmentFlightTime; // 总时间 //仿真轮次1 数值1
  59. //Console.WriteLine("TotalTime:" + TotalTime);
  60. }
  61. Console.WriteLine("TotalTime:" + TotalTime);
  62. IsOver = true;
  63. //Success = true; //需要判断
  64. End();
  65. }
  66. //private double GetDistance(double lon1, double lon2, double lat1, double lat2)
  67. //{
  68. // double R = 6371; // 地球的半径(公里)
  69. // double dLat = (lat2 - lat1) * Math.PI / 180.0;
  70. // double dLon = (lon2 - lon1) * Math.PI / 180.0;
  71. // double a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) +
  72. // Math.Cos(lat1 * Math.PI / 180.0) * Math.Cos(lat2 * Math.PI / 180.0) *
  73. // Math.Sin(dLon / 2) * Math.Sin(dLon / 2);
  74. // double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
  75. // double distance = R * c;
  76. // return distance;
  77. //}
  78. public override void Update(double time)
  79. {
  80. }
  81. }
  82. [ObjectSystem]
  83. public class AircraftJJAwakeSystem : AwakeSystem<AircraftJJ, FlightPlanEditor>
  84. {
  85. public override void Awake(AircraftJJ self, FlightPlanEditor flightPlanEditor)
  86. {
  87. self.FlightPlanEditor = flightPlanEditor;
  88. self.Awake();
  89. }
  90. }