|
@@ -1,7 +1,6 @@
|
|
|
using Cysharp.Threading.Tasks;
|
|
|
using KYFramework;
|
|
|
using Model;
|
|
|
-using MongoDB.Bson;
|
|
|
using Newtonsoft.Json;
|
|
|
using SimulationServer.Utils;
|
|
|
using SimulationSingleServer.Utils;
|
|
@@ -16,12 +15,12 @@ public class ServerStartEventHandler : AEvent<ServerStart>
|
|
|
{
|
|
|
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文件不存在!");
|
|
@@ -39,6 +38,7 @@ public class ServerStartEventHandler : AEvent<ServerStart>
|
|
|
|
|
|
EditorConfig? editorConfig = JsonConvert.DeserializeObject<EditorConfig>(ec_str);
|
|
|
TaskConfig? taskConfig = JsonConvert.DeserializeObject<TaskConfig>(tc_str);
|
|
|
+
|
|
|
if(editorConfig == null || taskConfig == null)
|
|
|
{
|
|
|
Log.Error("配置文件解析失败!");
|
|
@@ -51,211 +51,28 @@ public class ServerStartEventHandler : AEvent<ServerStart>
|
|
|
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)
|
|
|
+ // 创建灭火
|
|
|
+ foreach (var mhTask in taskConfig.mHTaskConfigs)
|
|
|
{
|
|
|
- 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);
|
|
|
- }
|
|
|
+ Game.EventSystem.Publish(new CreateMHTask
|
|
|
+ { EditorConfig = editorConfig, MHTaskConfig = mhTask });
|
|
|
}
|
|
|
-
|
|
|
- foreach (XHTask xhTask in taskConfig.xHTask)
|
|
|
+
|
|
|
+ // 创建侦察
|
|
|
+ foreach (var zcTask in taskConfig.zCTask)
|
|
|
{
|
|
|
- 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;
|
|
|
+ Game.EventSystem.Publish(new CreateZCTask
|
|
|
+ { EditorConfig = editorConfig, ZCTask = zcTask });
|
|
|
+ }
|
|
|
|
|
|
- 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}");
|
|
|
- }
|
|
|
+ // 创建巡护
|
|
|
+ foreach (var xhTask in taskConfig.xHTask)
|
|
|
+ {
|
|
|
+ Game.EventSystem.Publish(new CreateXHTask
|
|
|
+ { EditorConfig = editorConfig, XHTask = xhTask });
|
|
|
}
|
|
|
+
|
|
|
taskSys.Start();
|
|
|
return UniTask.CompletedTask;
|
|
|
}
|