diff --git a/docs/design/architecture/总体架构设计.md b/docs/design/architecture/总体架构设计.md index 8264fbc..9731286 100644 --- a/docs/design/architecture/总体架构设计.md +++ b/docs/design/architecture/总体架构设计.md @@ -1395,7 +1395,7 @@ interface IScenarioService // 步骤保存 void SaveScene(string scenarioId, CombatScene scene); void SaveControlZones(string scenarioId, List zones); // NEW - void SaveTarget(string scenarioId, DroneProfile target); + void SaveDroneProfile(string scenarioId, DroneProfile target); void SaveDeployment(string scenarioId, List equips); // 重构 void SaveCloudDispersal(string scenarioId, CloudDispersal cloud); void SaveRoute(string scenarioId, RoutePlan route, List wps); diff --git a/docs/对接文档_Unity前端.md b/docs/对接文档_Unity前端.md index 1a94712..6c699fa 100644 --- a/docs/对接文档_Unity前端.md +++ b/docs/对接文档_Unity前端.md @@ -72,7 +72,7 @@ var scenarioId = demos.Items[0].Id; // 方式 B:自定义 var sc = scenario.CreateScenario("我的想定", ""); scenario.SaveScene(sc.Id, new CombatScene { WindSpeed = 5, WindDirection = (int)WindDirection.E }); -scenario.SaveTarget(sc.Id, new DroneProfile { +scenario.SaveDroneProfile(sc.Id, new DroneProfile { WaveId = "w1", Model = "Shahed-136", Description = "活塞巡飞弹", Quantity = 1, DroneType = (int)DroneType.FixedWing, TypicalSpeed = 200, TypicalAltitude = 500 @@ -150,7 +150,7 @@ mgr.DataService.GetAllEnvironments() / GetAllFormations() / GetAllRoutes() // 想定 CRUD mgr.CreateScenario(name, number) / mgr.DeleteScenario(id) mgr.Search(kw, from, to, page, size) -mgr.SaveScene / SaveTarget / SaveDeployment / SaveCloud / SaveRoute / UpdateStep +mgr.SaveScene / SaveDroneProfile / SaveDeployment / SaveCloud / SaveRoute / UpdateStep mgr.GetDetail(id) → ScenarioConfig ``` diff --git a/src/CounterDrone.Core/DefaultScenarios.cs b/src/CounterDrone.Core/DefaultScenarios.cs index 55b503f..42f0529 100644 --- a/src/CounterDrone.Core/DefaultScenarios.cs +++ b/src/CounterDrone.Core/DefaultScenarios.cs @@ -37,7 +37,7 @@ namespace CounterDrone.Core { var t = s.CreateScenario("[Demo] 无防御-无人机抵达目标", ""); s.SaveScene(t.Id, d.Environments.First(w => w.Id == "sunny-calm").ToCombatScene()); - s.SaveTarget(t.Id, d.Drones.First(p => p.Id == "shahed").ToDroneProfile()); + s.SaveDroneProfile(t.Id, d.Drones.First(p => p.Id == "shahed").ToDroneProfile()); s.SaveRoute(t.Id, "default", d.Formations.First(f => f.Id == "single").ToRoutePlan(), R("3km-h400", 600, d)); s.SaveCloudDispersal(t.Id, new CloudDispersal()); s.SaveDeployment(t.Id, new List()); @@ -48,7 +48,7 @@ namespace CounterDrone.Core { var t = s.CreateScenario("[Demo] 管控区域侵入", ""); s.SaveScene(t.Id, d.Environments.First(w => w.Id == "sunny-calm").ToCombatScene()); - s.SaveTarget(t.Id, d.Drones.First(p => p.Id == "electric-scout").ToDroneProfile()); + s.SaveDroneProfile(t.Id, d.Drones.First(p => p.Id == "electric-scout").ToDroneProfile()); s.SaveRoute(t.Id, "default", d.Formations.First(f => f.Id == "single").ToRoutePlan(), R("3km-h300", 300, d)); s.SaveCloudDispersal(t.Id, new CloudDispersal()); s.SaveDeployment(t.Id, new List()); @@ -71,7 +71,7 @@ namespace CounterDrone.Core scene.WindSpeed = 5; scene.WindDirection = (int)WindDirection.W; s.SaveScene(t.Id, scene); - s.SaveTarget(t.Id, d.Drones.First(p => p.Id == "shahed").ToDroneProfile()); + s.SaveDroneProfile(t.Id, d.Drones.First(p => p.Id == "shahed").ToDroneProfile()); s.SaveRoute(t.Id, "default", d.Formations.First(f => f.Id == "single").ToRoutePlan(), new List { new() { PosX = 6600, PosY = 500, PosZ = 0, Speed = 200 }, @@ -89,7 +89,7 @@ namespace CounterDrone.Core { var t = s.CreateScenario("[Demo] 喷气式拦截-活性材料", ""); s.SaveScene(t.Id, d.Environments.First(w => w.Id == "sunny-calm").ToCombatScene()); - s.SaveTarget(t.Id, d.Drones.First(p => p.Id == "cruise-missile").ToDroneProfile()); + s.SaveDroneProfile(t.Id, d.Drones.First(p => p.Id == "cruise-missile").ToDroneProfile()); s.SaveRoute(t.Id, "default", d.Formations.First(f => f.Id == "single").ToRoutePlan(), new List { new() { PosX = 18000, PosY = 500, PosZ = 0, Speed = 200 }, @@ -110,7 +110,7 @@ namespace CounterDrone.Core scene.WindSpeed = 5; scene.WindDirection = (int)WindDirection.E; s.SaveScene(t.Id, scene); - s.SaveTarget(t.Id, d.Drones.First(p => p.Id == "shahed").ToDroneProfile()); + s.SaveDroneProfile(t.Id, d.Drones.First(p => p.Id == "shahed").ToDroneProfile()); s.SaveRoute(t.Id, "default", d.Formations.First(f => f.Id == "single").ToRoutePlan(), new List { new() { PosX = 9500, PosY = 500, PosZ = 0, Speed = 200 }, @@ -133,7 +133,7 @@ namespace CounterDrone.Core s.SaveScene(t.Id, scene); var target = d.Drones.First(p => p.Id == "shahed").ToDroneProfile(); target.Quantity = 3; - s.SaveTarget(t.Id, target); + s.SaveDroneProfile(t.Id, target); s.SaveRoute(t.Id, "default", d.Formations.First(f => f.Id == "line-3").ToRoutePlan(), new List { new() { PosX = 10000, PosY = 500, PosZ = 0, Speed = 200 }, diff --git a/src/CounterDrone.Core/Services/IScenarioService.cs b/src/CounterDrone.Core/Services/IScenarioService.cs index 73b2156..743f871 100644 --- a/src/CounterDrone.Core/Services/IScenarioService.cs +++ b/src/CounterDrone.Core/Services/IScenarioService.cs @@ -13,7 +13,7 @@ namespace CounterDrone.Core.Services void SaveScene(string scenarioId, CombatScene scene); void SaveControlZones(string scenarioId, List zones); - void SaveTarget(string scenarioId, DroneProfile target); + void SaveDroneProfile(string scenarioId, DroneProfile target); void SaveDeployment(string scenarioId, List equips); /// 添加单个探测设备(独立于 SaveDeployment,不覆盖火力单元) diff --git a/src/CounterDrone.Core/Services/ScenarioService.cs b/src/CounterDrone.Core/Services/ScenarioService.cs index 713a8e4..7a759ab 100644 --- a/src/CounterDrone.Core/Services/ScenarioService.cs +++ b/src/CounterDrone.Core/Services/ScenarioService.cs @@ -131,7 +131,7 @@ namespace CounterDrone.Core.Services TouchScenario(scenarioId); } - public void SaveTarget(string scenarioId, DroneProfile target) + public void SaveDroneProfile(string scenarioId, DroneProfile target) { target.ScenarioId = scenarioId; if (string.IsNullOrEmpty(target.Id)) diff --git a/src/Unity/Assets/Plugins/CounterDrone.Core/CounterDrone.Core.dll b/src/Unity/Assets/Plugins/CounterDrone.Core/CounterDrone.Core.dll index 23a37bf..f469d2a 100644 Binary files a/src/Unity/Assets/Plugins/CounterDrone.Core/CounterDrone.Core.dll and b/src/Unity/Assets/Plugins/CounterDrone.Core/CounterDrone.Core.dll differ diff --git a/src/Unity/Assets/Scripts/Managers/ScenarioManager.cs b/src/Unity/Assets/Scripts/Managers/ScenarioManager.cs index 93cb812..4835d16 100644 --- a/src/Unity/Assets/Scripts/Managers/ScenarioManager.cs +++ b/src/Unity/Assets/Scripts/Managers/ScenarioManager.cs @@ -52,7 +52,7 @@ namespace CounterDrone.Unity => _service.SearchScenarios(kw, from, to, page, size); public void SaveScene(string scenarioId, CombatScene s) => _service.SaveScene(scenarioId, s); - public void SaveTarget(string scenarioId, DroneProfile t) => _service.SaveTarget(scenarioId, t); + public void SaveDroneProfile(string scenarioId, DroneProfile t) => _service.SaveDroneProfile(scenarioId, t); public void SaveDeployment(string scenarioId, List e) => _service.SaveDeployment(scenarioId, e); public void SaveCloud(string scenarioId, CloudDispersal c) => _service.SaveCloudDispersal(scenarioId, c); public void SaveRoute(string scenarioId, string waveId, RoutePlan r, List w) => _service.SaveRoute(scenarioId, waveId, r, w); diff --git a/src/Unity/Assets/Scripts/Managers/SimulationBootstrap.cs b/src/Unity/Assets/Scripts/Managers/SimulationBootstrap.cs index 448dacf..5a65f57 100644 --- a/src/Unity/Assets/Scripts/Managers/SimulationBootstrap.cs +++ b/src/Unity/Assets/Scripts/Managers/SimulationBootstrap.cs @@ -70,7 +70,7 @@ namespace CounterDrone.Unity scenarioId = sc.Id; scenario.SaveScene(scenarioId, defaults.Environments.First(w => w.Id == "sunny-calm").ToCombatScene()); - scenario.SaveTarget(scenarioId, defaults.Drones.First(p => p.Id == "shahed").ToDroneProfile()); + scenario.SaveDroneProfile(scenarioId, defaults.Drones.First(p => p.Id == "shahed").ToDroneProfile()); scenario.SaveRoute(scenarioId, "default", defaults.Formations.First(f => f.Id == "single").ToRoutePlan(), defaults.Routes.First(r => _routeLength > 6000 ? r.Id == "10km-h500" : r.Id == "5km-h500") diff --git a/test/unit/CounterDrone.Core.Tests/EdgeCaseTests.cs b/test/unit/CounterDrone.Core.Tests/EdgeCaseTests.cs index 0403865..f20202f 100644 --- a/test/unit/CounterDrone.Core.Tests/EdgeCaseTests.cs +++ b/test/unit/CounterDrone.Core.Tests/EdgeCaseTests.cs @@ -46,7 +46,7 @@ namespace CounterDrone.Core.Tests _scenarioId = scenario.Id; _scenario.SaveScene(_scenarioId, new CombatScene { WindSpeed = 0 }); - _scenario.SaveTarget(_scenarioId, new DroneProfile + _scenario.SaveDroneProfile(_scenarioId, new DroneProfile { WaveId = "default", DroneType = (int)DroneType.FixedWing, @@ -89,7 +89,7 @@ namespace CounterDrone.Core.Tests WindSpeed = 30, // 最大风速 WindDirection = (int)WindDirection.E, }); - _scenario.SaveTarget(_scenarioId, new DroneProfile + _scenario.SaveDroneProfile(_scenarioId, new DroneProfile { WaveId = "default", DroneType = (int)DroneType.FixedWing, @@ -128,7 +128,7 @@ namespace CounterDrone.Core.Tests _scenarioId = scenario.Id; _scenario.SaveScene(_scenarioId, new CombatScene { WindSpeed = 0 }); - _scenario.SaveTarget(_scenarioId, new DroneProfile + _scenario.SaveDroneProfile(_scenarioId, new DroneProfile { WaveId = "default", DroneType = (int)DroneType.HighSpeed, diff --git a/test/unit/CounterDrone.Core.Tests/FullPipelineTests.cs b/test/unit/CounterDrone.Core.Tests/FullPipelineTests.cs index 98dee63..fe72add 100644 --- a/test/unit/CounterDrone.Core.Tests/FullPipelineTests.cs +++ b/test/unit/CounterDrone.Core.Tests/FullPipelineTests.cs @@ -185,7 +185,7 @@ namespace CounterDrone.Core.Tests var scenarioA = _scenario.CreateScenario("无探测远航路", ""); _scenarioId = scenarioA.Id; _scenario.SaveScene(_scenarioId, new CombatScene { WindSpeed = 0, Visibility = 10000 }); - _scenario.SaveTarget(_scenarioId, new DroneProfile + _scenario.SaveDroneProfile(_scenarioId, new DroneProfile { WaveId = "default", DroneType = (int)DroneType.FixedWing, PowerType = (int)PowerType.Piston, Quantity = 1, TypicalSpeed = 200, TypicalAltitude = 500, @@ -210,7 +210,7 @@ namespace CounterDrone.Core.Tests var scenarioB = _scenario.CreateScenario("有探测远航路", ""); _scenarioId = scenarioB.Id; _scenario.SaveScene(_scenarioId, new CombatScene { WindSpeed = 0, Visibility = 10000 }); - _scenario.SaveTarget(_scenarioId, new DroneProfile + _scenario.SaveDroneProfile(_scenarioId, new DroneProfile { WaveId = "default", DroneType = (int)DroneType.FixedWing, PowerType = (int)PowerType.Piston, Quantity = 1, TypicalSpeed = 200, TypicalAltitude = 500, diff --git a/test/unit/CounterDrone.Core.Tests/ScenarioServiceTests.cs b/test/unit/CounterDrone.Core.Tests/ScenarioServiceTests.cs index b334ea1..7fef505 100644 --- a/test/unit/CounterDrone.Core.Tests/ScenarioServiceTests.cs +++ b/test/unit/CounterDrone.Core.Tests/ScenarioServiceTests.cs @@ -101,7 +101,7 @@ namespace CounterDrone.Core.Tests Temperature = 25.0, }); - _service.SaveTarget(scenario.Id, new DroneProfile + _service.SaveDroneProfile(scenario.Id, new DroneProfile { WaveId = "default", DroneType = (int)DroneType.FixedWing, @@ -196,10 +196,10 @@ namespace CounterDrone.Core.Tests } [Fact] - public void SaveTarget_SavesCorrectly() + public void SaveDroneProfile_SavesCorrectly() { var scenario = _service.CreateScenario("Target Test", ""); - _service.SaveTarget(scenario.Id, new DroneProfile + _service.SaveDroneProfile(scenario.Id, new DroneProfile { WaveId = "default", DroneType = (int)DroneType.FixedWing, @@ -392,7 +392,7 @@ namespace CounterDrone.Core.Tests }); // 4. 步骤2:目标配置 - _service.SaveTarget(scenario.Id, new DroneProfile + _service.SaveDroneProfile(scenario.Id, new DroneProfile { WaveId = "default", DroneType = (int)DroneType.HighSpeed, diff --git a/test/unit/CounterDrone.Core.Tests/SimulationEngineTests.cs b/test/unit/CounterDrone.Core.Tests/SimulationEngineTests.cs index 8e8f5be..871aa3a 100644 --- a/test/unit/CounterDrone.Core.Tests/SimulationEngineTests.cs +++ b/test/unit/CounterDrone.Core.Tests/SimulationEngineTests.cs @@ -50,7 +50,7 @@ namespace CounterDrone.Core.Tests var scenario = _scenarioService.CreateScenario("Test", ""); _scenarioId = scenario.Id; _scenarioService.SaveScene(_scenarioId, new CombatScene { WindSpeed = 0 }); - _scenarioService.SaveTarget(_scenarioId, new DroneProfile + _scenarioService.SaveDroneProfile(_scenarioId, new DroneProfile { WaveId = "default", DroneType = (int)DroneType.FixedWing, @@ -151,7 +151,7 @@ namespace CounterDrone.Core.Tests var scenario = _scenarioService.CreateScenario("Detect", ""); _scenarioId = scenario.Id; _scenarioService.SaveScene(_scenarioId, new CombatScene { WindSpeed = 0, Visibility = 10000 }); - _scenarioService.SaveTarget(_scenarioId, new DroneProfile + _scenarioService.SaveDroneProfile(_scenarioId, new DroneProfile { WaveId = "w1", DroneType = (int)DroneType.FixedWing, @@ -224,7 +224,7 @@ namespace CounterDrone.Core.Tests // 探测设备在 X=5000 半径 1000 → 入口 X=4000,出口 X=6000 var scenario = _scenarioService.CreateScenario("Reenter", ""); _scenarioService.SaveScene(scenario.Id, new CombatScene { WindSpeed = 0, Visibility = 10000 }); - _scenarioService.SaveTarget(scenario.Id, new DroneProfile + _scenarioService.SaveDroneProfile(scenario.Id, new DroneProfile { WaveId = "w1", Quantity = 1, TypicalSpeed = 120, PowerType = (int)PowerType.Piston, TypicalAltitude = 300, }); @@ -275,7 +275,7 @@ namespace CounterDrone.Core.Tests // D1 边界 X=1000,D2 边界 X=3000 → D1 更早发现 var scenario = _scenarioService.CreateScenario("Fuse", ""); _scenarioService.SaveScene(scenario.Id, new CombatScene { WindSpeed = 0, Visibility = 10000 }); - _scenarioService.SaveTarget(scenario.Id, new DroneProfile + _scenarioService.SaveDroneProfile(scenario.Id, new DroneProfile { WaveId = "w1", Quantity = 1, TypicalSpeed = 60, PowerType = (int)PowerType.Piston, TypicalAltitude = 300, }); diff --git a/unity_plugins/CounterDrone.Core.dll b/unity_plugins/CounterDrone.Core.dll index 23a37bf..f469d2a 100644 Binary files a/unity_plugins/CounterDrone.Core.dll and b/unity_plugins/CounterDrone.Core.dll differ