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()
{