123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- using Cysharp.Threading.Tasks;
- using KYFramework;
- using Model;
- using MongoDB.Bson;
- using Newtonsoft.Json;
- using SimulationServer.Utils;
- using SimulationSingleServer.Utils;
- using Define = SimulationServer.Utils.Define;
- namespace SimulationServer;
- [Event]
- public class ServerStartEventHandler : AEvent<ServerStart>
- {
- protected override UniTask Run(ServerStart a)
- {
- Log.Info("读取配置文件!");
- var taskSys = Game.Scene.GetComponent<TaskComponent>();
- HttpInterface.serverIp = File.ReadAllText("dbIp.txt");
- SimulationCommon.Util.serverIp = HttpInterface.serverIp;
- // 读取任务配置文件
- string ec_path = "Missions/editor_config.json";
- string tc_path = "Missions/task_config.json";
- if (!File.Exists(ec_path))
- {
- Log.Error("editor_config.json文件不存在!");
- return UniTask.CompletedTask;
- }
-
- if (!File.Exists(tc_path))
- {
- Log.Error("task_config.json文件不存在!");
- return UniTask.CompletedTask;
- }
-
- string ec_str = File.ReadAllText("Missions/editor_config.json");
- string tc_str = File.ReadAllText("Missions/task_config.json");
-
- EditorConfig? editorConfig = JsonConvert.DeserializeObject<EditorConfig>(ec_str);
- TaskConfig? taskConfig = JsonConvert.DeserializeObject<TaskConfig>(tc_str);
- if(editorConfig == null || taskConfig == null)
- {
- Log.Error("配置文件解析失败!");
- return UniTask.CompletedTask;
- }
- //Weather weather = Util.GetWeather("内蒙古", "根河", DateTime.Now.ToString("2024-05-10"));
- TaskComponent.Weather = new Weather();
- var temp = TaskComponent.Weather.day_temp.Replace("°C", "");
- Define.TEMPERATURE = double.Parse(temp);
- var wind_temp = TaskComponent.Weather.day_wind_comp.Replace("级", "").Split('-');
- Define.WIND = double.Parse(wind_temp[0]);
- int index = 1;
- foreach (MHTaskConfig mHTaskConfig in taskConfig.mHTaskConfigs)
- {
- MHRescueMission mission = ComponentFactory.Create<MHRescueMission>();
- mission.ExecutionContext = mHTaskConfig.RunTimes;
- mission.AddComponent<TotalTaskPerformanceComponent>();
- mission.AddComponent<TotalEconomicalComponent>();
- mission.AddComponent<EquipmentComponent>();
- taskSys.MHRescueMissions.Add(mission);
- mission.MissionId = $"灭火任务 {mHTaskConfig.TotalMHId}";
- Log.Info($"创建任务 : {mHTaskConfig.TotalMHId}");
- mission.slope = Util.GetSlope(editorConfig.firePoints[mHTaskConfig.FirePointId - 1].FirePointLongitude,
- editorConfig.firePoints[mHTaskConfig.FirePointId - 1].FirePointLatitude, 30);
- FireGround fireGround = ComponentFactory.Create<FireGround>();
- mission.FireGround = fireGround;
- mission.InitArea = editorConfig.firePoints[mHTaskConfig.FirePointId - 1].InitialArea;
- fireGround.FirePoint = new DVector { Latitude = editorConfig.firePoints[mHTaskConfig.FirePointId - 1].FirePointLatitude,
- Longitude = editorConfig.firePoints[mHTaskConfig.FirePointId - 1].FirePointLongitude,Altitude = editorConfig.firePoints[mHTaskConfig.FirePointId - 1].FirePointHeight};
-
-
- foreach (MHTask mhTask in mHTaskConfig.mHTask)
- {
- Log.Info($"创建灭火任务 : {mhTask.missionInformation.MissionName}");
- if(mhTask.missionInformation.AircraftInfos == null) continue;
- for (int i = 0; i < mhTask.missionInformation.AircraftInfos.Length; i++)
- {
- FlightPlanEditor? flightPlanEditor = new FlightPlanEditor();
-
- flightPlanEditor.aircraftparameter = editorConfig.aircraftParameters.Find( a => a.Id == mhTask.missionInformation.AircraftId[i]);
- flightPlanEditor.firepoint = new FirePoint[1];
- flightPlanEditor.firepoint[0] = editorConfig.firePoints[mHTaskConfig.FirePointId - 1];
- flightPlanEditor.missionpoint = mhTask.MissionPoints[0];
- flightPlanEditor.originbase = editorConfig.bases.Find(b => b.BaseId == flightPlanEditor.aircraftparameter.AirportId);
-
- flightPlanEditor.cityweather = editorConfig.cityWeather;
- AircraftMH aircraft = ComponentFactory.Create<AircraftMH, FlightPlanEditor>( flightPlanEditor);
- aircraft.Name = mhTask.missionInformation.AircraftInfos[i];
- aircraft.AircraftId = mhTask.missionInformation.AircraftId[i];
- aircraft.NextMissionId = mhTask.NextTaskId;
- aircraft.fireGround = fireGround;
- aircraft.mhRescueMission = mission;
- aircraft.AircraftIndex = index.ToString();
- mission.aircrafts.Add(aircraft);
- aircraft.Airport = flightPlanEditor.originbase.BaseName;
- aircraft.TaskName = mhTask.missionInformation.MissionName;
- mission.End += aircraft.End;
- aircraft.AddComponent<StaticCapacityComponent>();
- aircraft.AddComponent<TaskPerformanceComponent>();
- aircraft.AddComponent<EconomicalComponent>();
- aircraft.TaskReadyTime = mhTask.missionInformation.TakeoffPreparationTime;
- Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
- index++;
- }
- }
- foreach (DMMHTask dmmhTask in mHTaskConfig.dMMHTask)
- {
- Log.Info($"创建地面灭火任务 : {dmmhTask.missionInformation.MissionName}");
- if(dmmhTask.missionInformation.AircraftInfos == null) continue;
- for (int i = 0; i < dmmhTask.missionInformation.AircraftInfos.Length; i++)
- {
- FlightPlanEditor? flightPlanEditor = new FlightPlanEditor();
-
- flightPlanEditor.aircraftparameter = editorConfig.aircraftParameters.Find( a => a.Id == dmmhTask.missionInformation.AircraftId[i]);
- flightPlanEditor.firepoint = new FirePoint[1];
- flightPlanEditor.firepoint[0] = editorConfig.firePoints[mHTaskConfig.FirePointId - 1];
- flightPlanEditor.missionpoint = dmmhTask.MissionPoints[0];
- flightPlanEditor.originbase = editorConfig.bases.Find(b => b.BaseId == flightPlanEditor.aircraftparameter.AirportId);
- flightPlanEditor.cityweather = editorConfig.cityWeather;
-
- AircraftMHWithPersion aircraftWithPerson = ComponentFactory.Create<AircraftMHWithPersion, FlightPlanEditor>( flightPlanEditor);
- mission.End += aircraftWithPerson.End;
- aircraftWithPerson.Name = dmmhTask.missionInformation.AircraftInfos[i];
- aircraftWithPerson.fireGround = fireGround;
- aircraftWithPerson.mhRescueMission = mission;
- aircraftWithPerson.AircraftIndex = index.ToString();
- aircraftWithPerson.GroundPersonnel = (int)dmmhTask.GroundPersonnel;
- aircraftWithPerson.LandingPersonnel = (int)dmmhTask.LandingPersonnel;
- aircraftWithPerson.NextMissionId = dmmhTask.NextTaskId;
- aircraftWithPerson.TaskName = dmmhTask.missionInformation.MissionName;
- aircraftWithPerson.TaskReadyTime = dmmhTask.missionInformation.TakeoffPreparationTime;
- aircraftWithPerson.AircraftId = dmmhTask.missionInformation.AircraftId[i];
-
- mission.aircrafts.Add(aircraftWithPerson);
- Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
- index++;
- }
- }
- 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++)
- {
- FlightPlanEditor? flightPlanEditor = new FlightPlanEditor();
- flightPlanEditor.aircraftparameter = editorConfig.aircraftParameters.Find(a =>
- a.Id == shjTask.missionInformation.AircraftId[i]);
- flightPlanEditor.firepoint = new FirePoint[1];
- flightPlanEditor.firepoint[0] = editorConfig.firePoints[mHTaskConfig.FirePointId - 1];
- flightPlanEditor.missionpoint = shjTask.MissionPoints[0];
- flightPlanEditor.originbase =
- editorConfig.bases.Find(b => b.BaseId == flightPlanEditor.aircraftparameter.AirportId);
- flightPlanEditor.cityweather = editorConfig.cityWeather;
- AircraftSHJ aircraftSHJ = ComponentFactory.Create<AircraftSHJ, FlightPlanEditor,SHJTask>( flightPlanEditor, shjTask);
- mission.End += aircraftSHJ.End;
- aircraftSHJ.AircraftIndex = index.ToString();
- mission.aircrafts.Add(aircraftSHJ);
- Log.Info($"创建机型 : {flightPlanEditor.aircraftparameter.AircraftID}");
- index++;
- }
- }
- }
- 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}";
- FireGround fireGround = ComponentFactory.Create<FireGround>();
- fireGround.countArea.burnarea = editorConfig.firePoints[zcTask.FirePointId - 1].InitialArea;
- fireGround.FirePoint = new DVector
- {
- Latitude = editorConfig.firePoints[zcTask.FirePointId - 1].FirePointLatitude,
- Longitude = editorConfig.firePoints[zcTask.FirePointId - 1].FirePointLongitude,
- Altitude = editorConfig.firePoints[zcTask.FirePointId - 1].FirePointHeight
- };
- mission.InitArea = editorConfig.firePoints[zcTask.FirePointId - 1].InitialArea;
- if(zcTask.missionInformation.AircraftInfos == null) continue;
- for (int i = 0; i < zcTask.missionInformation.AircraftInfos.Length; i++)
- {
- FlightPlanEditor? flightPlanEditor = new FlightPlanEditor();
-
- flightPlanEditor.aircraftparameter =
- editorConfig.aircraftParameters.Find(
- a => a.AircraftID == zcTask.missionInformation.AircraftInfos[i]);
- flightPlanEditor.firepoint = new FirePoint[1];
- flightPlanEditor.firepoint[0] = editorConfig.firePoints[zcTask.FirePointId - 1];
- flightPlanEditor.missionpoint = zcTask.MissionPoints[0];
- flightPlanEditor.originbase =
- editorConfig.bases.Find(b => b.BaseId == flightPlanEditor.aircraftparameter.AirportId);
- flightPlanEditor.cityweather = editorConfig.cityWeather;
-
- AircraftZC aircraft = ComponentFactory.Create<AircraftZC, FlightPlanEditor,ZCTask>( flightPlanEditor, zcTask);
- //aircraft.Name = zcTask.missionInformation.AircraftInfos[i];
- //aircraft.NextMissionId = zcTask.NextTaskId;
- aircraft.AircraftId = zcTask.missionInformation.AircraftId[i];
- aircraft.TaskReadyTime = zcTask.missionInformation.TakeoffPreparationTime;
- 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>();
- mission.AddComponent<EquipmentComponent>();
-
- mission.MissionId = $"巡护任务 {xhTask.missionInformation.MissionId}";
- taskSys.XHRescueMissions.Add(mission);
- FireGround fireGround = ComponentFactory.Create<FireGround>();
- mission.FireGround = fireGround;
- fireGround.FirePoint = new DVector
- {
- Latitude = editorConfig.firePoints[xhTask.FirePointId - 1].FirePointLatitude,
- Longitude = editorConfig.firePoints[xhTask.FirePointId - 1].FirePointLongitude,
- Altitude = editorConfig.firePoints[xhTask.FirePointId - 1].FirePointHeight
- };
- if(xhTask.missionInformation.AircraftInfos == null) continue;
- for (int i = 0; i < xhTask.missionInformation.AircraftInfos.Length; i++)
- {
-
- FlightPlanEditor? flightPlanEditor = new FlightPlanEditor();
- flightPlanEditor.aircraftparameter = editorConfig.aircraftParameters.Find(a =>
- a.Id == xhTask.missionInformation.AircraftId[i]);
- flightPlanEditor.firepoint = new FirePoint[1];
- flightPlanEditor.firepoint[0] = editorConfig.firePoints[xhTask.FirePointId - 1];
- flightPlanEditor.airroute = xhTask.airroute;
- //flightPlanEditor.missionpoint = xhTask.MissionPoints[0];
- flightPlanEditor.originbase =
- editorConfig.bases.Find(b => b.BaseId == flightPlanEditor.aircraftparameter.AirportId);
- flightPlanEditor.cityweather = editorConfig.cityWeather;
-
- 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();
- return UniTask.CompletedTask;
- }
-
- }
|