From 1fdffd2a415e16bdf56c9afef414200f0240b122 Mon Sep 17 00:00:00 2001 From: tian <11429339@qq.com> Date: Thu, 18 Jun 2026 19:46:34 +0800 Subject: [PATCH] =?UTF-8?q?GetEnums=20API=EF=BC=9A=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E6=89=80=E6=9C=89=E6=9E=9A=E4=B8=BE=E5=AE=9A=E4=B9=89=E4=BE=9B?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E4=B8=8B=E6=8B=89=E6=A1=86=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/IScenarioService.cs | 19 ++++++++++++++ .../Services/ScenarioService.cs | 26 +++++++++++++++++++ .../Scripts/Managers/ScenarioManager.cs | 2 ++ 3 files changed, 47 insertions(+) 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() {