diff --git a/src/Unity/Assets/Plugins/CounterDrone.Core/CounterDrone.Core.dll b/src/Unity/Assets/Plugins/CounterDrone.Core/CounterDrone.Core.dll index b84f695..3d5f37b 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/ManagerVerification.cs b/src/Unity/Assets/Scripts/Managers/ManagerVerification.cs index 2be6f64..33b225c 100644 --- a/src/Unity/Assets/Scripts/Managers/ManagerVerification.cs +++ b/src/Unity/Assets/Scripts/Managers/ManagerVerification.cs @@ -35,9 +35,7 @@ namespace CounterDrone.Unity scenarioMgr.SaveScene(scenarioId, new CombatScene { WindSpeed = 0 }); scenarioMgr.SaveScenarioDrone(scenarioId, new ScenarioDrone { - WaveId = "default", - DroneType = (int)DroneType.FixedWing, PowerType = (int)PowerType.Piston, - Quantity = 1, TypicalSpeed = 200, TypicalAltitude = 500, + DroneSpecId = "shahed", WaveId = "default", Quantity = 1, }); scenarioMgr.SaveRoute(scenarioId, "default", new RoutePlan { FormationMode = (int)FormationMode.Single }, new List @@ -53,10 +51,12 @@ namespace CounterDrone.Unity var ammoCatalog = db.Table().ToList(); var detail = scenarioMgr.GetDetail(scenarioId); + // 从 DB 加载 DroneSpec,构造 DroneWave + var droneSpec = db.Table().First(d => d.Id == "shahed"); var droneGroup = new DroneWave { WaveId = "default", - Profile = detail.Drones[0], + Profile = droneSpec, Route = detail.Routes[0], Waypoints = detail.WaypointGroups["default"], }; @@ -84,13 +84,11 @@ namespace CounterDrone.Unity foreach (var u in fireUnits) equips.Add(new ScenarioUnit { - EquipmentRole = (int)EquipmentRole.LaunchPlatform, - PlatformType = (int)u.Type, Quantity = 1, + FireUnitSpecId = "ground-light", + EquipmentRole = (int)EquipmentRole.LaunchPlatform, Quantity = 1, PositionX = u.Position.X, PositionY = u.Position.Y, PositionZ = u.Position.Z, AerosolType = (int)u.AmmoTypes[0], - MunitionCount = u.TotalMunitions, Cooldown = u.Cooldown, MuzzleVelocity = u.MuzzleVelocity, - CruiseSpeed = u.CruiseSpeed > 0 ? u.CruiseSpeed : null, - ReleaseAltitude = u.ReleaseAltitude > 0 ? u.ReleaseAltitude : null, + MunitionCount = u.TotalMunitions, }); scenarioMgr.SaveDeployment(scenarioId, equips); SqliteConnectionTracker.Untrack(db); diff --git a/src/Unity/Assets/Scripts/Managers/SimulationBootstrap.cs b/src/Unity/Assets/Scripts/Managers/SimulationBootstrap.cs index a8ee2e2..a798683 100644 --- a/src/Unity/Assets/Scripts/Managers/SimulationBootstrap.cs +++ b/src/Unity/Assets/Scripts/Managers/SimulationBootstrap.cs @@ -82,7 +82,9 @@ namespace CounterDrone.Unity var planner = new DefensePlanner(ammoCatalog, PlannerConfig.Load(paths)); var threats = new List { - new DroneWave { WaveId = "default", Profile = detail.Drones[0], Route = detail.Routes[0], Waypoints = detail.WaypointGroups["default"] } + new DroneWave { WaveId = "default", + Profile = db.Table().First(d => d.Id == "shahed"), + Route = detail.Routes[0], Waypoints = detail.WaypointGroups["default"] } }; var fireUnits = new List(); for (int i = 0; i < 4; i++) @@ -99,7 +101,7 @@ namespace CounterDrone.Unity scenario.SaveCloudDispersal(scenarioId, new CloudDispersal { AerosolType = (int)AerosolType.InertGas, - DisperseHeight = detail.Drones[0].TypicalAltitude, + DisperseHeight = db.Table().First(d => d.Id == "shahed").TypicalAltitude, Source = "Algorithm", }); scenario.SaveDeployment(scenarioId, new List diff --git a/unity_plugins/CounterDrone.Core.dll b/unity_plugins/CounterDrone.Core.dll index b84f695..3d5f37b 100644 Binary files a/unity_plugins/CounterDrone.Core.dll and b/unity_plugins/CounterDrone.Core.dll differ