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