CreateTaskEventHandler.cs 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799
  1. using Cysharp.Threading.Tasks;
  2. using KYFramework;
  3. using Model;
  4. using SimulationServer.Utils;
  5. using SimulationSingleServer.Utils;
  6. using Unity.Mathematics;
  7. namespace SimulationServer;
  8. [Event]
  9. public class CreateMHTaskEventHandler : AEvent<CreateMHTask>
  10. {
  11. protected override UniTask Run(CreateMHTask config)
  12. {
  13. // TODO 创建灭火任务
  14. var taskSys = Game.Scene.GetComponent<TaskComponent>();
  15. FirePoint point = config.EditorConfig.firePoints.Find(fire => fire.FirePointId == config.MHTaskConfig.FirePointId);
  16. // 创建火点
  17. var fireGround = ComponentFactory.Create<FireGround, FirePoint>(point);
  18. fireGround.FirePointName = point.FirePointId;
  19. // 创建灭火任务
  20. var mission = ComponentFactory.Create<MHRescueMission, FireGround, double>(fireGround, point.InitialArea);
  21. mission.AddComponent<TotalEconomicalComponent>();
  22. mission.AddComponent<TotalTaskPerformanceComponent>();
  23. mission.AddComponent<EquipmentComponent>();
  24. mission.MissionId = "灭火任务 " + config.MHTaskConfig.TotalMHId;
  25. taskSys.MHRescueMissions.Add(mission);
  26. //查询坡度
  27. mission.slope = Util.GetSlope(point.FirePointLongitude,
  28. point.FirePointLatitude, 30);
  29. Log.Info($"创建任务 : {config.MHTaskConfig.TotalMHId}");
  30. //创建吊桶灭火任务
  31. foreach (MHTask mhTask in config.MHTaskConfig.mHTask)
  32. {
  33. Log.Info($"创建灭火任务 : {mhTask.missionInformation.MissionName}");
  34. if (mhTask.aircraftInfos == null) continue;
  35. for (int i = 0; i < mhTask.aircraftInfos.Length; i++)
  36. {
  37. //飞机参数
  38. var aircraftParameter = config.EditorConfig.aircraftParameters.Find(
  39. a => a.AircraftID == mhTask.aircraftInfos[i].AircraftType);
  40. //基地
  41. var originBase = config.EditorConfig.bases.Find(b => b.BaseId == aircraftParameter.AirportId);
  42. //创建飞行计划编辑器
  43. var flightPlanEditor = FlightPlanEditor.Create(aircraftParameter, config.EditorConfig.cityWeather, originBase, mhTask.MissionPoints[0], new[] { point });
  44. AircraftMH aircraft = ComponentFactory.Create<AircraftMH, FlightPlanEditor>(flightPlanEditor);
  45. aircraft.Name = mhTask.aircraftInfos[i].AircraftType;
  46. aircraft.AircraftId = mhTask.aircraftInfos[i].AircraftId;
  47. aircraft.fireGround = fireGround;
  48. aircraft.mhRescueMission = mission;
  49. mission.aircrafts.Add(aircraft);
  50. aircraft.Airport = flightPlanEditor.originbase.BaseName;
  51. aircraft.TaskName = mhTask.missionInformation.MissionName;
  52. mission.End += aircraft.End;
  53. aircraft.AddComponent<StaticCapacityComponent>();
  54. aircraft.AddComponent<TaskPerformanceComponent>();
  55. aircraft.AddComponent<EconomicalComponent>();
  56. aircraft.TaskReadyTime = mhTask.missionInformation.TakeoffPreparationTime;
  57. Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
  58. }
  59. }
  60. //创建机降灭火任务
  61. foreach (DMMHTask dmmhTask in config.MHTaskConfig.dMMHTask)
  62. {
  63. Log.Info($"创建地面灭火任务 : {dmmhTask.missionInformation.MissionName}");
  64. if (dmmhTask.aircraftInfos == null) continue;
  65. for (int i = 0; i < dmmhTask.aircraftInfos.Length; i++)
  66. {
  67. //飞机参数
  68. var aircraftParameter = config.EditorConfig.aircraftParameters.Find(
  69. a => a.AircraftID == dmmhTask.aircraftInfos[i].AircraftType);
  70. //基地
  71. var originBase = config.EditorConfig.bases.Find(b => b.BaseId == aircraftParameter.AirportId);
  72. //创建飞行计划编辑器
  73. var flightPlanEditor = FlightPlanEditor.Create(aircraftParameter, config.EditorConfig.cityWeather, originBase, dmmhTask.MissionPoints[0], new[] { point });
  74. AircraftMHWithPersion aircraftWithPerson = ComponentFactory.Create<AircraftMHWithPersion, FlightPlanEditor>(flightPlanEditor);
  75. mission.End += aircraftWithPerson.End;
  76. aircraftWithPerson.Name = dmmhTask.aircraftInfos[i].AircraftType;
  77. aircraftWithPerson.fireGround = fireGround;
  78. aircraftWithPerson.mhRescueMission = mission;
  79. aircraftWithPerson.GroundPersonnel = (int)dmmhTask.GroundPersonnel;
  80. aircraftWithPerson.LandingPersonnel = (int)dmmhTask.LandingPersonnel;
  81. aircraftWithPerson.NextMissionId = dmmhTask.NextTaskId;
  82. aircraftWithPerson.TaskName = dmmhTask.missionInformation.MissionName;
  83. aircraftWithPerson.TaskReadyTime = dmmhTask.missionInformation.TakeoffPreparationTime;
  84. aircraftWithPerson.AircraftId = dmmhTask.aircraftInfos[i].AircraftId;
  85. mission.aircrafts.Add(aircraftWithPerson);
  86. Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
  87. }
  88. }
  89. //创建索滑降任务
  90. foreach (SHJTask shjTask in config.MHTaskConfig.sHJTask)
  91. {
  92. Log.Info($"创建索滑降任务 : {shjTask.missionInformation.MissionName}");
  93. if (shjTask.aircraftInfos == null) continue;
  94. for (int i = 0; i < shjTask.aircraftInfos.Length; i++)
  95. {
  96. //飞机参数
  97. var aircraftParameter = config.EditorConfig.aircraftParameters.Find(
  98. a => a.AircraftID == shjTask.aircraftInfos[i].AircraftType);
  99. //基地
  100. var originBase = config.EditorConfig.bases.Find(b => b.BaseId == aircraftParameter.AirportId);
  101. MissionPoint missionPoint = null;
  102. foreach (var item in shjTask.SHJParameters)
  103. {
  104. if (aircraftParameter.Id == item.AircraftId)
  105. missionPoint = item.MissionPoints_SHJ[0];
  106. }
  107. //创建飞行计划编辑器
  108. var flightPlanEditor = FlightPlanEditor.Create(aircraftParameter, config.EditorConfig.cityWeather, originBase, missionPoint, new[] { point });
  109. AircraftSHJ aircraftSHJ = ComponentFactory.Create<AircraftSHJ, FlightPlanEditor, SHJTask>(flightPlanEditor, shjTask);
  110. mission.End += aircraftSHJ.End;
  111. aircraftSHJ.AircraftId = shjTask.aircraftInfos[i].AircraftId;
  112. aircraftSHJ.TaskReadyTime = shjTask.missionInformation.TakeoffPreparationTime;
  113. foreach (var item in config.MHTaskConfig.sHJTask)
  114. {
  115. foreach (var item1 in item.SHJParameters)
  116. {
  117. if (aircraftSHJ.AircraftId == item1.AircraftId)
  118. {
  119. aircraftSHJ.SHJParameter = item1;
  120. }
  121. }
  122. }
  123. mission.aircrafts.Add(aircraftSHJ);
  124. Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
  125. }
  126. }
  127. return UniTask.CompletedTask;
  128. }
  129. }
  130. [Event]
  131. public class CreateZCTaskEventHandler : AEvent<CreateZCTask>
  132. {
  133. protected override UniTask Run(CreateZCTask config)
  134. {
  135. var taskSys = Game.Scene.GetComponent<TaskComponent>();
  136. ZCRescueMission mission = ComponentFactory.Create<ZCRescueMission>();
  137. taskSys.ZCRescueMissions.Add(mission);
  138. mission.MissionId = $"侦擦任务 {config.ZCTask.missionInformation.MissionName}";
  139. FirePoint point = config.EditorConfig.firePoints.Find(f => f.FirePointId == config.ZCTask.FirePointId);
  140. for (int i = 0; i < config.ZCTask.aircraftInfos.Length; i++)
  141. {
  142. //飞机参数
  143. var aircraftParameter = config.EditorConfig.aircraftParameters.Find(
  144. a => a.AircraftID == config.ZCTask.aircraftInfos[i].AircraftType);
  145. //基地
  146. var originBase = config.EditorConfig.bases.Find(b => b.BaseId == aircraftParameter.AirportId);
  147. //创建飞行计划编辑器
  148. var flightPlanEditor = FlightPlanEditor.Create(aircraftParameter, config.EditorConfig.cityWeather, originBase, config.ZCTask.MissionPoints[0], new[] { point });
  149. //创建飞机
  150. int index = i;
  151. AircraftZC aircraft = ComponentFactory.Create<AircraftZC, FlightPlanEditor, ZCTask, int>(flightPlanEditor, config.ZCTask, index);
  152. aircraft.AddComponent<StaticCapacityComponent>();
  153. aircraft.AddComponent<TaskPerformanceComponent>();
  154. aircraft.AddComponent<EconomicalComponent>();
  155. aircraft.TaskReadyTime = config.ZCTask.missionInformation.TakeoffPreparationTime;
  156. aircraft.AircraftId = config.ZCTask.aircraftInfos[i].AircraftId;
  157. foreach (var item in config.ZCTask.ZCMethods)
  158. {
  159. if (aircraft.AircraftId == item.AircraftId)
  160. {
  161. aircraft.ZCMethod = item;
  162. }
  163. }
  164. Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
  165. mission.AircraftZCs.Add(aircraft);
  166. }
  167. return UniTask.CompletedTask;
  168. }
  169. }
  170. [Event]
  171. public class CreateXHTaskEventHandler : AEvent<CreateXHTask>
  172. {
  173. protected override UniTask Run(CreateXHTask config)
  174. {
  175. // TODO 创建巡护任务
  176. var taskSys = Game.Scene.GetComponent<TaskComponent>();
  177. XHRescueMission mission = ComponentFactory.Create<XHRescueMission>();
  178. mission.AddComponent<XHTotalTaskPerformanceComponent>();
  179. mission.AddComponent<EquipmentComponent>();
  180. mission.MissionId = $"巡护任务 {config.XHTask.missionInformation.MissionId}";
  181. taskSys.XHRescueMissions.Add(mission);
  182. FirePoint point = config.EditorConfig.firePoints.Find(f => f.FirePointId == config.XHTask.FirePointId);
  183. mission.FireGround = ComponentFactory.Create<FireGround, FirePoint>(point);
  184. for (int i = 0; i < config.XHTask.aircraftInfos.Length; i++)
  185. {
  186. //飞机参数
  187. var aircraftParameter = config.EditorConfig.aircraftParameters.Find(
  188. a => a.AircraftID == config.XHTask.aircraftInfos[i].AircraftType);
  189. //基地
  190. var originBase = config.EditorConfig.bases.Find(b => b.BaseId == aircraftParameter.AirportId);
  191. string content = HttpManager.Get(HttpInterface.routes, new List<string>
  192. {
  193. "fName"
  194. }, new List<string>
  195. {
  196. config.XHTask.airroute[0].AirRouteName
  197. });
  198. var routes = JsonHelper.FromJson<RouteDB>(content);
  199. //routes.data.lstPoints => AirRoute[]
  200. AirRoute[] airRoutes = new AirRoute[routes.data[0].lstPoints.Count];
  201. for (int j = 0; j < routes.data[0].lstPoints.Count; j++)
  202. {
  203. airRoutes[j] = new AirRoute
  204. {
  205. AirRouteLongitude = routes.data[0].lstPoints[j].lon,
  206. AirRouteLatitude = routes.data[0].lstPoints[j].lat,
  207. AirRouteHeight = routes.data[0].lstPoints[j].dem
  208. };
  209. }
  210. //创建飞行计划编辑器
  211. var flightPlanEditor = FlightPlanEditor.Create(aircraftParameter, config.EditorConfig.cityWeather, originBase, airRoutes, config.XHTask.MissionPoints[0], new[] { point });
  212. AircraftXH aircraft = ComponentFactory.Create<AircraftXH, FlightPlanEditor, string, string>(flightPlanEditor,
  213. config.XHTask.aircraftInfos[i].AircraftType, config.XHTask.aircraftInfos[i].AircraftId);
  214. aircraft.TaskReadyTime = config.XHTask.missionInformation.TakeoffPreparationTime;
  215. Log.Info($"Name:{config.XHTask.missionInformation.MissionName} AircraftId:{config.XHTask.aircraftInfos[i].AircraftId}");
  216. mission.AircraftXHs.Add(aircraft);
  217. mission.End += aircraft.End;
  218. aircraft.AddComponent<XHStaticCapacityComponent>();
  219. aircraft.AddComponent<XHEconomicalComponent>();
  220. Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
  221. }
  222. return UniTask.CompletedTask;
  223. }
  224. }
  225. [Event]
  226. public class CreateSeaSJEventHandler : AEvent<CreateSeaSJTask>
  227. {
  228. protected override UniTask Run(CreateSeaSJTask config)
  229. {
  230. var taskSys = Game.Scene.GetComponent<TaskComponent>();
  231. SeaSJRescueMission mission = ComponentFactory.Create<SeaSJRescueMission>();
  232. mission.date = taskSys.date;
  233. taskSys.SeaSJRescueMissions.Add(mission);
  234. mission.MissionId = $"海上搜索救援任务 {config.SeaSJTask.missionInformation.MissionName}";
  235. mission.ExecutionContext = config.EditorConfig.runCounts;
  236. mission.AddComponent<SJTotalTaskPerformanceComponent>();
  237. for (int i = 0; i < config.SeaSJTask.aircraftInfos.Length; i++)
  238. {
  239. //飞机参数
  240. var aircraftParameter = config.EditorConfig.aircraftParameters.Find(
  241. a => a.AircraftID == config.SeaSJTask.aircraftInfos[i].AircraftType);
  242. //基地
  243. var originBase = config.EditorConfig.bases.Find(b => b.BaseId == aircraftParameter.AirportId);
  244. TargetPoint targetPoint = config.EditorConfig.targetPoints.Find(t => t.TargetPointId == config.SeaSJTask.missionInformation.TargetPointId);
  245. //创建飞行计划编辑器
  246. var flightPlanEditor = FlightPlanEditor.Create(aircraftParameter, config.EditorConfig.cityWeather, originBase, new TargetPoint[] { targetPoint });
  247. AircraftSJ aircraft = ComponentFactory.Create<AircraftSJ, FlightPlanEditor>(flightPlanEditor);
  248. aircraft.Name = config.SeaSJTask.aircraftInfos[i].AircraftType;
  249. aircraft.TaskReadyTime = config.SeaSJTask.missionInformation.TakeoffPreparationTime;
  250. mission.aircrafts.Add(aircraft);
  251. aircraft.taskContent = config.SeaSJTask;
  252. aircraft.AircraftId = config.SeaSJTask.aircraftInfos[i].AircraftId;
  253. foreach (var item in config.SeaSJTask.SearchModes)
  254. {
  255. if (aircraft.AircraftId == item.AircraftId)
  256. aircraft.SearchMode = item;
  257. }
  258. foreach (var item in config.SeaSJTask.missionSearchPayloads)
  259. {
  260. if (aircraft.AircraftId == item.AircraftId)
  261. aircraft.searchMissionPayload = item;
  262. }
  263. aircraft.AddComponent<SJStaticCapacityComponent>();
  264. Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
  265. }
  266. return UniTask.CompletedTask;
  267. }
  268. }
  269. [Event]
  270. public class CreateLandSJEventHandler : AEvent<CreateLandSXTask>
  271. {
  272. protected override UniTask Run(CreateLandSXTask config)
  273. {
  274. var taskSys = Game.Scene.GetComponent<TaskComponent>();
  275. LandSJRescueMission mission = ComponentFactory.Create<LandSJRescueMission>();
  276. mission.date = taskSys.date;
  277. taskSys.LandSJRescueMissions.Add(mission);
  278. mission.MissionId = $"陆上搜寻救援任务 {config.LandSXTask.missionInformation.MissionName}";
  279. mission.ExecutionContext = config.EditorConfig.runCounts;
  280. //mission.AddComponent<SJTotalTaskPerformanceComponent>();
  281. for (int i = 0; i < config.LandSXTask.aircraftInfos.Length; i++)
  282. {
  283. //飞机参数
  284. var aircraftParameter = config.EditorConfig.aircraftParameters.Find(
  285. a => a.AircraftID == config.LandSXTask.aircraftInfos[i].AircraftType);
  286. //基地
  287. var originBase = config.EditorConfig.bases.Find(b => b.BaseId == aircraftParameter.AirportId);
  288. TargetPoint targetPoint = config.EditorConfig.targetPoints.Find(t => t.TargetPointId == config.LandSXTask.missionInformation.TargetPointId);
  289. //创建飞行计划编辑器
  290. var flightPlanEditor = FlightPlanEditor.Create(aircraftParameter, config.EditorConfig.cityWeather, originBase, new TargetPoint[] { targetPoint });
  291. AircraftLandSJ aircraft = ComponentFactory.Create<AircraftLandSJ, FlightPlanEditor>(flightPlanEditor);
  292. aircraft.Name = config.LandSXTask.aircraftInfos[i].AircraftType;
  293. aircraft.TaskReadyTime = config.LandSXTask.missionInformation.TakeoffPreparationTime;
  294. mission.aircrafts.Add(aircraft);
  295. aircraft.taskContent = config.LandSXTask;
  296. aircraft.AircraftId = config.LandSXTask.aircraftInfos[i].AircraftId;
  297. aircraft.MissionEndPoint = new MissionEndPoint
  298. {
  299. MissionEndPointLongitude = targetPoint.TargetPointLongitude,
  300. MissionEndPointLatitude = targetPoint.TargetPointLatitude,
  301. MissionEndPointHeight = targetPoint.TargetPointHeight
  302. };
  303. foreach (var item in config.LandSXTask.SearchModes)
  304. {
  305. if (item.AircraftId == aircraft.AircraftId)
  306. aircraft.SearchMissionMode = item;
  307. }
  308. foreach (var item in config.LandSXTask.missionSearchPayloads)
  309. {
  310. if (aircraft.AircraftId == item.AircraftId)
  311. aircraft.searchMissionPayload = item;
  312. }
  313. aircraft.AddComponent<SJStaticCapacityComponent>();
  314. Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
  315. }
  316. return UniTask.CompletedTask;
  317. }
  318. [Event]
  319. public class CreateKZDYEventHandler : AEvent<CreateKZDYTask>
  320. {
  321. protected override UniTask Run(CreateKZDYTask config)
  322. {
  323. var taskSys = Game.Scene.GetComponent<TaskComponent>();
  324. KZDYMission mission = ComponentFactory.Create<KZDYMission>();
  325. mission.date = taskSys.date;
  326. taskSys.KZDYMissions.Add(mission);
  327. mission.MissionId = $"空中吊运救援任务 {config.KZDYTask.missionInformation.MissionName}";
  328. mission.ExecutionContext = config.EditorConfig.runCounts;
  329. //mission.AddComponent<SJTotalTaskPerformanceComponent>();
  330. for (int i = 0; i < config.KZDYTask.aircraftInfos.Length; i++)
  331. {
  332. //飞机参数
  333. var aircraftParameter = config.EditorConfig.aircraftParameters.Find(
  334. a => a.AircraftID == config.KZDYTask.aircraftInfos[i].AircraftType);
  335. //基地
  336. var originBase = config.EditorConfig.bases.Find(b => b.BaseId == aircraftParameter.AirportId);
  337. TargetPoint targetPoint = config.EditorConfig.targetPoints.Find(t => t.TargetPointId == config.KZDYTask.missionInformation.TargetPointId);
  338. //创建飞行计划编辑器
  339. var flightPlanEditor = FlightPlanEditor.Create(aircraftParameter, config.EditorConfig.cityWeather, originBase, new TargetPoint[] { targetPoint });
  340. AircraftDY aircraft = ComponentFactory.Create<AircraftDY, FlightPlanEditor>(flightPlanEditor);
  341. aircraft.Name = config.KZDYTask.aircraftInfos[i].AircraftType;
  342. aircraft.TaskReadyTime = config.KZDYTask.missionInformation.TakeoffPreparationTime;
  343. mission.aircrafts.Add(aircraft);
  344. aircraft.taskContent = config.KZDYTask;
  345. aircraft.AircraftId = config.KZDYTask.aircraftInfos[i].AircraftId;
  346. aircraft.MissionEndPoint = new MissionEndPoint
  347. {
  348. MissionEndPointLongitude = targetPoint.TargetPointLongitude,
  349. MissionEndPointLatitude = targetPoint.TargetPointLatitude,
  350. MissionEndPointHeight = targetPoint.TargetPointHeight
  351. };
  352. foreach (var item in config.KZDYTask.KZDYParameters)
  353. {
  354. if (item.AircraftId == aircraft.AircraftId)
  355. {
  356. aircraft.taskParameter = item;
  357. }
  358. }
  359. aircraft.AddComponent<SJStaticCapacityComponent>();
  360. Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
  361. }
  362. return UniTask.CompletedTask;
  363. }
  364. }
  365. [Event]
  366. public class CreateKTKSEventHandler : AEvent<CreateKTKSTask>
  367. {
  368. protected override UniTask Run(CreateKTKSTask config)
  369. {
  370. var taskSys = Game.Scene.GetComponent<TaskComponent>();
  371. KTKSMission mission = ComponentFactory.Create<KTKSMission>();
  372. mission.date = taskSys.date;
  373. taskSys.KTKSMissions.Add(mission);
  374. mission.MissionId = $"空投空送任务 {config.KTKSTask.missionInformation.MissionName}";
  375. mission.ExecutionContext = config.EditorConfig.runCounts;
  376. //mission.AddComponent<SJTotalTaskPerformanceComponent>();
  377. for (int i = 0; i < config.KTKSTask.aircraftInfos.Length; i++)
  378. {
  379. //飞机参数
  380. var aircraftParameter = config.EditorConfig.aircraftParameters.Find(
  381. a => a.AircraftID == config.KTKSTask.aircraftInfos[i].AircraftType);
  382. //基地
  383. var originBase = config.EditorConfig.bases.Find(b => b.BaseId == aircraftParameter.AirportId);
  384. TargetPoint targetPoint = config.EditorConfig.targetPoints.Find(t => t.TargetPointId == config.KTKSTask.missionInformation.TargetPointId);
  385. //创建飞行计划编辑器
  386. var flightPlanEditor = FlightPlanEditor.Create(aircraftParameter, config.EditorConfig.cityWeather, originBase, new TargetPoint[] { targetPoint });
  387. AircraftKTKS aircraft = ComponentFactory.Create<AircraftKTKS, FlightPlanEditor>(flightPlanEditor);
  388. aircraft.Name = config.KTKSTask.aircraftInfos[i].AircraftType;
  389. aircraft.TaskReadyTime = config.KTKSTask.missionInformation.TakeoffPreparationTime;
  390. mission.aircrafts.Add(aircraft);
  391. aircraft.taskContent = config.KTKSTask;
  392. aircraft.AircraftId = config.KTKSTask.aircraftInfos[i].AircraftId;
  393. aircraft.rescueDemandInfo = config.EditorConfig.rescueDemandInfos.Find(t => t.DemandPointName == config.KTKSTask.missionInformation.TargetPoint);
  394. //aircraft.MissionEndPoint = new MissionEndPoint
  395. //{
  396. // MissionEndPointLongitude = targetPoint.TargetPointLongitude,
  397. // MissionEndPointLatitude = targetPoint.TargetPointLatitude,
  398. // MissionEndPointHeight = targetPoint.TargetPointHeight
  399. //};
  400. foreach (var item in config.KTKSTask.KTKSParameters)
  401. {
  402. if (item.AircraftId == aircraft.AircraftId)
  403. {
  404. aircraft.taskParameter = item;
  405. }
  406. }
  407. aircraft.AddComponent<SJStaticCapacityComponent>();
  408. Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
  409. }
  410. return UniTask.CompletedTask;
  411. }
  412. }
  413. [Event]
  414. public class CreateZSJYEventHandler : AEvent<CreateZSJYTask>
  415. {
  416. protected override UniTask Run(CreateZSJYTask config)
  417. {
  418. var taskSys = Game.Scene.GetComponent<TaskComponent>();
  419. ZSJYMission mission = ComponentFactory.Create<ZSJYMission>();
  420. mission.date = taskSys.date;
  421. taskSys.ZSJYMissions.Add(mission);
  422. mission.MissionId = $"着水救援任务 {config.ZSJYTask.missionInformation.MissionName}";
  423. mission.ExecutionContext = config.EditorConfig.runCounts;
  424. //mission.AddComponent<SJTotalTaskPerformanceComponent>();
  425. for (int i = 0; i < config.ZSJYTask.aircraftInfos.Length; i++)
  426. {
  427. //飞机参数
  428. var aircraftParameter = config.EditorConfig.aircraftParameters.Find(
  429. a => a.AircraftID == config.ZSJYTask.aircraftInfos[i].AircraftType);
  430. //基地
  431. var originBase = config.EditorConfig.bases.Find(b => b.BaseId == aircraftParameter.AirportId);
  432. TargetPoint targetPoint = config.EditorConfig.targetPoints.Find(t => t.TargetPointId == config.ZSJYTask.missionInformation.TargetPointId);
  433. //创建飞行计划编辑器
  434. var flightPlanEditor = FlightPlanEditor.Create(aircraftParameter, config.EditorConfig.cityWeather, originBase, new TargetPoint[] { targetPoint });
  435. AircraftZS aircraft = ComponentFactory.Create<AircraftZS, FlightPlanEditor>(flightPlanEditor);
  436. aircraft.Name = config.ZSJYTask.aircraftInfos[i].AircraftType;
  437. aircraft.TaskReadyTime = config.ZSJYTask.missionInformation.TakeoffPreparationTime;
  438. mission.aircrafts.Add(aircraft);
  439. aircraft.taskContent = config.ZSJYTask;
  440. aircraft.AircraftId = config.ZSJYTask.aircraftInfos[i].AircraftId;
  441. //aircraft.MissionEndPoint = new MissionEndPoint
  442. //{
  443. // MissionEndPointLongitude = targetPoint.TargetPointLongitude,
  444. // MissionEndPointLatitude = targetPoint.TargetPointLatitude,
  445. // MissionEndPointHeight = targetPoint.TargetPointHeight
  446. //};
  447. foreach (var item in config.ZSJYTask.ZSJYParameters)
  448. {
  449. if (item.AircraftId == aircraft.AircraftId)
  450. {
  451. aircraft.taskParameter = item;
  452. }
  453. }
  454. aircraft.AddComponent<SJStaticCapacityComponent>();
  455. Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
  456. }
  457. return UniTask.CompletedTask;
  458. }
  459. }
  460. [Event]
  461. public class CreateJJJYEventHandler : AEvent<CreateJJJYTask>
  462. {
  463. protected override UniTask Run(CreateJJJYTask config)
  464. {
  465. var taskSys = Game.Scene.GetComponent<TaskComponent>();
  466. JJJYMission mission = ComponentFactory.Create<JJJYMission>();
  467. mission.date = taskSys.date;
  468. taskSys.JJJYMissions.Add(mission);
  469. mission.MissionId = $"机降救援任务 {config.JJJYTask.missionInformation.MissionName}";
  470. mission.ExecutionContext = config.EditorConfig.runCounts;
  471. //mission.AddComponent<SJTotalTaskPerformanceComponent>();
  472. for (int i = 0; i < config.JJJYTask.aircraftInfos.Length; i++)
  473. {
  474. //飞机参数
  475. var aircraftParameter = config.EditorConfig.aircraftParameters.Find(
  476. a => a.AircraftID == config.JJJYTask.aircraftInfos[i].AircraftType);
  477. //基地
  478. var originBase = config.EditorConfig.bases.Find(b => b.BaseId == aircraftParameter.AirportId);
  479. TargetPoint targetPoint = config.EditorConfig.targetPoints.Find(t => t.TargetPointId == config.JJJYTask.missionInformation.TargetPointId);
  480. //创建飞行计划编辑器
  481. var flightPlanEditor = FlightPlanEditor.Create(aircraftParameter, config.EditorConfig.cityWeather, originBase, new TargetPoint[] { targetPoint });
  482. AircraftJJ aircraft = ComponentFactory.Create<AircraftJJ, FlightPlanEditor>(flightPlanEditor);
  483. aircraft.Name = config.JJJYTask.aircraftInfos[i].AircraftType;
  484. aircraft.TaskReadyTime = config.JJJYTask.missionInformation.TakeoffPreparationTime;
  485. mission.aircrafts.Add(aircraft);
  486. aircraft.taskContent = config.JJJYTask;
  487. aircraft.AircraftId = config.JJJYTask.aircraftInfos[i].AircraftId;
  488. aircraft.rescueDemandInfo = config.EditorConfig.rescueDemandInfos.Find(t => t.DemandPointName == config.JJJYTask.missionInformation.TargetPoint);
  489. //aircraft.MissionEndPoint = new MissionEndPoint
  490. //{
  491. // MissionEndPointLongitude = targetPoint.TargetPointLongitude,
  492. // MissionEndPointLatitude = targetPoint.TargetPointLatitude,
  493. // MissionEndPointHeight = targetPoint.TargetPointHeight
  494. //};
  495. foreach (var item in config.JJJYTask.JJJYParameters)
  496. {
  497. if (item.AircraftId == aircraft.AircraftId)
  498. {
  499. aircraft.taskParameter = item;
  500. }
  501. }
  502. aircraft.AddComponent<SJStaticCapacityComponent>();
  503. Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
  504. }
  505. return UniTask.CompletedTask;
  506. }
  507. }
  508. [Event]
  509. public class CreateSHJEventHandler : AEvent<CreateSHJTask>
  510. {
  511. protected override UniTask Run(CreateSHJTask config)
  512. {
  513. var taskSys = Game.Scene.GetComponent<TaskComponent>();
  514. SHJMission mission = ComponentFactory.Create<SHJMission>();
  515. mission.date = taskSys.date;
  516. taskSys.SHJMissions.Add(mission);
  517. mission.MissionId = $"索滑降救援任务 {config.SHJTask.missionInformation.MissionName}";
  518. mission.ExecutionContext = config.EditorConfig.runCounts;
  519. //mission.AddComponent<SJTotalTaskPerformanceComponent>();
  520. for (int i = 0; i < config.SHJTask.aircraftInfos.Length; i++)
  521. {
  522. //飞机参数
  523. var aircraftParameter = config.EditorConfig.aircraftParameters.Find(
  524. a => a.AircraftID == config.SHJTask.aircraftInfos[i].AircraftType);
  525. //基地
  526. var originBase = config.EditorConfig.bases.Find(b => b.BaseId == aircraftParameter.AirportId);
  527. TargetPoint targetPoint = config.EditorConfig.targetPoints.Find(t => t.TargetPointId == config.SHJTask.missionInformation.TargetPointId);
  528. //创建飞行计划编辑器
  529. var flightPlanEditor = FlightPlanEditor.Create(aircraftParameter, config.EditorConfig.cityWeather, originBase, new TargetPoint[] { targetPoint });
  530. AircraftSHJ aircraft = ComponentFactory.Create<AircraftSHJ, FlightPlanEditor>(flightPlanEditor);
  531. aircraft.Name = config.SHJTask.aircraftInfos[i].AircraftType;
  532. aircraft.TaskReadyTime = config.SHJTask.missionInformation.TakeoffPreparationTime;
  533. mission.aircrafts.Add(aircraft);
  534. aircraft.content = config.SHJTask;
  535. aircraft.AircraftId = config.SHJTask.aircraftInfos[i].AircraftId;
  536. aircraft.missionEndPoint = new MissionEndPoint
  537. {
  538. MissionEndPointLongitude = targetPoint.TargetPointLongitude,
  539. MissionEndPointLatitude = targetPoint.TargetPointLatitude,
  540. MissionEndPointHeight = targetPoint.TargetPointHeight
  541. };
  542. foreach (var item in config.SHJTask.SHJParameters)
  543. {
  544. if (item.AircraftId == aircraft.AircraftId)
  545. {
  546. aircraft.SHJParameter = item;
  547. }
  548. }
  549. aircraft.AddComponent<SJStaticCapacityComponent>();
  550. Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
  551. }
  552. return UniTask.CompletedTask;
  553. }
  554. }
  555. [Event]
  556. public class CreateXCJJEventHandler : AEvent<CreateXCJJTask>
  557. {
  558. protected override UniTask Run(CreateXCJJTask config)
  559. {
  560. var taskSys = Game.Scene.GetComponent<TaskComponent>();
  561. XCJJMission mission = ComponentFactory.Create<XCJJMission>();
  562. mission.date = taskSys.date;
  563. taskSys.XCJJMissions.Add(mission);
  564. mission.MissionId = $"现场急救任务 {config.XCJJTask.missionInformation.MissionName}";
  565. mission.ExecutionContext = config.EditorConfig.runCounts;
  566. //mission.AddComponent<SJTotalTaskPerformanceComponent>();
  567. for (int i = 0; i < config.XCJJTask.aircraftInfos.Length; i++)
  568. {
  569. //飞机参数
  570. var aircraftParameter = config.EditorConfig.aircraftParameters.Find(
  571. a => a.Id == config.XCJJTask.aircraftInfos[i].AircraftId);
  572. //基地
  573. var originBase = config.EditorConfig.bases.Find(b => b.BaseId == aircraftParameter.AirportId);
  574. MedicalTargetPoint targetPoint = config.EditorConfig.medicalTargetPoints.Find(t => t.TargetPointId == config.XCJJTask.missionInformation.TargetPointId);
  575. //创建飞行计划编辑器
  576. var flightPlanEditor = FlightPlanEditor.Create(aircraftParameter, config.EditorConfig.cityWeather, originBase, new MedicalTargetPoint[] { targetPoint });
  577. AircraftXCJJ aircraft = ComponentFactory.Create<AircraftXCJJ, FlightPlanEditor>(flightPlanEditor);
  578. aircraft.Name = config.XCJJTask.aircraftInfos[i].AircraftType;
  579. aircraft.TaskReadyTime = config.XCJJTask.missionInformation.TakeoffPreparationTime;
  580. mission.aircrafts.Add(aircraft);
  581. aircraft.taskContent = config.XCJJTask;
  582. aircraft.AircraftId = config.XCJJTask.aircraftInfos[i].AircraftId;
  583. aircraft.Airport = originBase.BaseName;
  584. aircraft.load = aircraftParameter.taskLoad;
  585. aircraft.AircraftType = aircraftParameter.AircraftSubType;
  586. aircraft.hospitalAirport = config.XCJJTask.missionInformation.Hospital;
  587. var hospital = config.EditorConfig.hospitals.Find(t => t.BaseName == config.XCJJTask.missionInformation.Hospital);
  588. aircraft.hospitalPoint = new MissionEndPoint()
  589. {
  590. MissionEndPointLatitude = hospital.BaseLatitude,
  591. MissionEndPointLongitude = hospital.BaseLongitude,
  592. MissionEndPointHeight = hospital.BaseHeight
  593. };
  594. foreach (var item in config.XCJJTask.XCJJParameters)
  595. {
  596. if (item.AircraftId == aircraft.AircraftId)
  597. {
  598. aircraft.taskParameter = item;
  599. }
  600. }
  601. aircraft.AddComponent<SJStaticCapacityComponent>();
  602. Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
  603. }
  604. return UniTask.CompletedTask;
  605. }
  606. }
  607. [Event]
  608. public class CreateYLZYEventHandler : AEvent<CreateYLZYTask>
  609. {
  610. protected override UniTask Run(CreateYLZYTask config)
  611. {
  612. var taskSys = Game.Scene.GetComponent<TaskComponent>();
  613. YLZYMission mission = ComponentFactory.Create<YLZYMission>();
  614. mission.date = taskSys.date;
  615. taskSys.YLZYMissions.Add(mission);
  616. mission.MissionId = $"医疗转运任务 {config.YLZYTask.missionInformation.MissionName}";
  617. mission.ExecutionContext = config.EditorConfig.runCounts;
  618. //mission.AddComponent<SJTotalTaskPerformanceComponent>();
  619. for (int i = 0; i < config.YLZYTask.aircraftInfos.Length; i++)
  620. {
  621. //飞机参数
  622. var aircraftParameter = config.EditorConfig.aircraftParameters.Find(
  623. a => a.Id == config.YLZYTask.aircraftInfos[i].AircraftId);
  624. //基地
  625. var originBase = config.EditorConfig.bases.Find(b => b.BaseId == aircraftParameter.AirportId);
  626. MedicalTargetPoint targetPoint = config.EditorConfig.medicalTargetPoints.Find(t => t.TargetPointId == config.YLZYTask.missionInformation.TargetPointId);
  627. //创建飞行计划编辑器
  628. var flightPlanEditor = FlightPlanEditor.Create(aircraftParameter, config.EditorConfig.cityWeather, originBase, new MedicalTargetPoint[] { targetPoint });
  629. AircraftYLZY aircraft = ComponentFactory.Create<AircraftYLZY, FlightPlanEditor>(flightPlanEditor);
  630. aircraft.Name = config.YLZYTask.aircraftInfos[i].AircraftType;
  631. aircraft.TaskReadyTime = config.YLZYTask.missionInformation.TakeoffPreparationTime;
  632. mission.aircrafts.Add(aircraft);
  633. aircraft.taskContent = config.YLZYTask;
  634. aircraft.AircraftId = config.YLZYTask.aircraftInfos[i].AircraftId;
  635. aircraft.Airport = originBase.BaseName;
  636. aircraft.load = aircraftParameter.taskLoad;
  637. aircraft.AircraftType = aircraftParameter.AircraftSubType;
  638. aircraft.hospitalAirport = config.YLZYTask.missionInformation.Hospital;
  639. var hospital = config.EditorConfig.hospitals.Find(t => t.BaseName == config.YLZYTask.missionInformation.Hospital);
  640. aircraft.hospitalPoint = new MissionEndPoint()
  641. {
  642. MissionEndPointLatitude = hospital.BaseLatitude,
  643. MissionEndPointLongitude = hospital.BaseLongitude,
  644. MissionEndPointHeight = hospital.BaseHeight
  645. };
  646. foreach (var item in config.YLZYTask.YLZYParameters)
  647. {
  648. if (item.AircraftId == aircraft.AircraftId)
  649. {
  650. aircraft.taskParameter = item;
  651. }
  652. }
  653. aircraft.AddComponent<SJStaticCapacityComponent>();
  654. Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
  655. }
  656. return UniTask.CompletedTask;
  657. }
  658. }
  659. [Event]
  660. public class CreateYLWPYSEventHandler : AEvent<CreateYLWPYSTask>
  661. {
  662. protected override UniTask Run(CreateYLWPYSTask config)
  663. {
  664. var taskSys = Game.Scene.GetComponent<TaskComponent>();
  665. YLWPYSMission mission = ComponentFactory.Create<YLWPYSMission>();
  666. mission.date = taskSys.date;
  667. taskSys.YLWPYSMissions.Add(mission);
  668. mission.MissionId = $"医疗物品运送 {config.YLWPYSTask.missionInformation.MissionName}";
  669. mission.ExecutionContext = config.EditorConfig.runCounts;
  670. //mission.AddComponent<SJTotalTaskPerformanceComponent>();
  671. for (int i = 0; i < config.YLWPYSTask.aircraftInfos.Length; i++)
  672. {
  673. //飞机参数
  674. var aircraftParameter = config.EditorConfig.aircraftParameters.Find(
  675. a => a.Id == config.YLWPYSTask.aircraftInfos[i].AircraftId);
  676. //基地
  677. var originBase = config.EditorConfig.bases.Find(b => b.BaseId == aircraftParameter.AirportId);
  678. MedicalSuppliesInfo targetPoint = config.EditorConfig.medicalSuppliesInfos.Find(t => t.TargetPointName == config.YLWPYSTask.missionInformation.TargetPoint);
  679. //创建飞行计划编辑器
  680. var flightPlanEditor = FlightPlanEditor.Create(aircraftParameter, config.EditorConfig.cityWeather, originBase, new MedicalSuppliesInfo[] { targetPoint });
  681. AircraftYLWPYS aircraft = ComponentFactory.Create<AircraftYLWPYS, FlightPlanEditor>(flightPlanEditor);
  682. aircraft.Name = config.YLWPYSTask.aircraftInfos[i].AircraftType;
  683. aircraft.TaskReadyTime = config.YLWPYSTask.missionInformation.TakeoffPreparationTime;
  684. mission.aircrafts.Add(aircraft);
  685. aircraft.taskContent = config.YLWPYSTask;
  686. aircraft.AircraftId = config.YLWPYSTask.aircraftInfos[i].AircraftId;
  687. aircraft.Airport = originBase.BaseName;
  688. aircraft.load = aircraftParameter.taskLoad;
  689. aircraft.AircraftType = aircraftParameter.AircraftSubType;
  690. foreach (var item in config.YLWPYSTask.YLWPYSParameters)
  691. {
  692. if (item.AircraftId == aircraft.AircraftId)
  693. {
  694. aircraft.taskParameter = item;
  695. }
  696. }
  697. aircraft.AddComponent<SJStaticCapacityComponent>();
  698. Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
  699. }
  700. return UniTask.CompletedTask;
  701. }
  702. }
  703. }