diff --git a/src/CounterDrone.Core/Services/IScenarioService.cs b/src/CounterDrone.Core/Services/IScenarioService.cs index 2a9ed14..95c107e 100644 --- a/src/CounterDrone.Core/Services/IScenarioService.cs +++ b/src/CounterDrone.Core/Services/IScenarioService.cs @@ -56,5 +56,24 @@ namespace CounterDrone.Core.Services // ═══ Misc ═══ void UpdateStep(string scenarioId, int step); + + /// 返回所有枚举定义(供前端下拉框使用) + EnumMetadata GetEnums(); + } + + /// 枚举元数据 + public class EnumMetadata + { + public Dictionary DroneType { get; set; } = new(); + public Dictionary PowerType { get; set; } = new(); + public Dictionary PlatformType { get; set; } = new(); + public Dictionary AerosolType { get; set; } = new(); + public Dictionary WeatherType { get; set; } = new(); + public Dictionary WindDirection { get; set; } = new(); + public Dictionary SceneType { get; set; } = new(); + public Dictionary FormationMode { get; set; } = new(); + public Dictionary TriggerMode { get; set; } = new(); + public Dictionary ReleaseMode { get; set; } = new(); + public Dictionary EquipmentRole { get; set; } = new(); } } diff --git a/src/CounterDrone.Core/Services/ScenarioService.cs b/src/CounterDrone.Core/Services/ScenarioService.cs index e25637d..c1d4963 100644 --- a/src/CounterDrone.Core/Services/ScenarioService.cs +++ b/src/CounterDrone.Core/Services/ScenarioService.cs @@ -230,6 +230,32 @@ namespace CounterDrone.Core.Services _scenarioRepo.Update(scenario); } + public EnumMetadata GetEnums() + { + return new EnumMetadata + { + DroneType = EnumToDict(), + PowerType = EnumToDict(), + PlatformType = EnumToDict(), + AerosolType = EnumToDict(), + WeatherType = EnumToDict(), + WindDirection = EnumToDict(), + SceneType = EnumToDict(), + FormationMode = EnumToDict(), + TriggerMode = EnumToDict(), + ReleaseMode = EnumToDict(), + EquipmentRole = EnumToDict(), + }; + } + + private static Dictionary EnumToDict() where T : Enum + { + var dict = new Dictionary(); + foreach (T v in Enum.GetValues(typeof(T))) + dict[v.ToString()] = Convert.ToInt32(v); + return dict; + } + // ========== Scenario CRUD ========== public Scenario UpdateScenario(Scenario scenario) diff --git a/src/Unity/Assets/Scripts/Managers/ScenarioManager.cs b/src/Unity/Assets/Scripts/Managers/ScenarioManager.cs index 108e7a6..ea3bc4c 100644 --- a/src/Unity/Assets/Scripts/Managers/ScenarioManager.cs +++ b/src/Unity/Assets/Scripts/Managers/ScenarioManager.cs @@ -88,6 +88,8 @@ namespace CounterDrone.Unity public void UpdateStep(string scenarioId, int step) => _service.UpdateStep(scenarioId, step); + public EnumMetadata GetEnums() => _service.GetEnums(); + [ContextMenu("Verify")] void Verify() {