diff --git a/src/CounterDrone.Core/Services/EnumMetadata.cs b/src/CounterDrone.Core/Services/EnumMetadata.cs
index ba9c260..001d93d 100644
--- a/src/CounterDrone.Core/Services/EnumMetadata.cs
+++ b/src/CounterDrone.Core/Services/EnumMetadata.cs
@@ -2,19 +2,27 @@ using System.Collections.Generic;
namespace CounterDrone.Core.Services
{
- /// 枚举元数据(前端下拉框数据源)
+ /// 枚举条目(前端下拉框数据源)
+ public class EnumItem
+ {
+ public string Name { get; set; } = "";
+ public string ChineseName { get; set; } = "";
+ public int Value { get; set; }
+ }
+
+ /// 枚举元数据(中英文对照)
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();
+ public List DroneType { get; set; } = new();
+ public List PowerType { get; set; } = new();
+ public List PlatformType { get; set; } = new();
+ public List AerosolType { get; set; } = new();
+ public List WeatherType { get; set; } = new();
+ public List WindDirection { get; set; } = new();
+ public List SceneType { get; set; } = new();
+ public List FormationMode { get; set; } = new();
+ public List TriggerMode { get; set; } = new();
+ public List ReleaseMode { get; set; } = new();
+ public List EquipmentRole { get; set; } = new();
}
}
diff --git a/src/CounterDrone.Core/Services/ScenarioService.cs b/src/CounterDrone.Core/Services/ScenarioService.cs
index c1d4963..9ecc89e 100644
--- a/src/CounterDrone.Core/Services/ScenarioService.cs
+++ b/src/CounterDrone.Core/Services/ScenarioService.cs
@@ -234,20 +234,28 @@ namespace CounterDrone.Core.Services
{
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(),
+ DroneType = EnumToList(TranslateDrone),
+ PowerType = EnumToList(TranslatePower),
+ PlatformType = EnumToList(TranslatePlatform),
+ AerosolType = EnumToList(TranslateAerosol),
+ WeatherType = EnumToList(TranslateWeather),
+ WindDirection = EnumToList(TranslateWindDirection),
+ SceneType = EnumToList(TranslateScene),
+ FormationMode = EnumToList(TranslateFormation),
+ TriggerMode = EnumToList(TranslateTrigger),
+ ReleaseMode = EnumToList(TranslateRelease),
+ EquipmentRole = EnumToList(TranslateEquipmentRole),
};
}
+ private static List EnumToList(Func translate) where T : Enum
+ {
+ var list = new List();
+ foreach (T v in Enum.GetValues(typeof(T)))
+ list.Add(new EnumItem { Name = v.ToString(), ChineseName = translate(v), Value = Convert.ToInt32(v) });
+ return list;
+ }
+
private static Dictionary EnumToDict() where T : Enum
{
var dict = new Dictionary();
@@ -256,6 +264,91 @@ namespace CounterDrone.Core.Services
return dict;
}
+ // ═══ 中文翻译 ═══
+ private static string TranslateDrone(Models.DroneType t) => t switch
+ {
+ Models.DroneType.Rotor => "旋翼",
+ Models.DroneType.FixedWing => "固定翼",
+ Models.DroneType.HighSpeed => "高速目标",
+ _ => t.ToString(),
+ };
+ private static string TranslatePower(Models.PowerType p) => p switch
+ {
+ Models.PowerType.Electric => "电推",
+ Models.PowerType.Piston => "活塞",
+ Models.PowerType.Jet => "喷气",
+ _ => p.ToString(),
+ };
+ private static string TranslatePlatform(Models.PlatformType p) => p switch
+ {
+ Models.PlatformType.AirBased => "空基",
+ Models.PlatformType.GroundBased => "地基",
+ _ => p.ToString(),
+ };
+ private static string TranslateAerosol(Models.AerosolType t) => t switch
+ {
+ Models.AerosolType.InertGas => "惰性气体(吸入式灭火)",
+ Models.AerosolType.ActiveMaterial => "活性材料(爆燃式)",
+ Models.AerosolType.ActiveFuel => "活性燃料(吸入式爆炸)",
+ _ => t.ToString(),
+ };
+ private static string TranslateWeather(Models.WeatherType w) => w switch
+ {
+ Models.WeatherType.Sunny => "晴天",
+ Models.WeatherType.Overcast => "阴天",
+ Models.WeatherType.Fog => "雾天",
+ Models.WeatherType.Rain => "雨天",
+ Models.WeatherType.Night => "夜间",
+ _ => w.ToString(),
+ };
+ private static string TranslateWindDirection(Models.WindDirection d) => d switch
+ {
+ Models.WindDirection.N => "北 (N)",
+ Models.WindDirection.NE => "东北 (NE)",
+ Models.WindDirection.E => "东 (E)",
+ Models.WindDirection.SE => "东南 (SE)",
+ Models.WindDirection.S => "南 (S)",
+ Models.WindDirection.SW => "西南 (SW)",
+ Models.WindDirection.W => "西 (W)",
+ Models.WindDirection.NW => "西北 (NW)",
+ _ => d.ToString(),
+ };
+ private static string TranslateScene(Models.SceneType s) => s switch
+ {
+ Models.SceneType.Urban => "城市",
+ Models.SceneType.Plain => "平原",
+ Models.SceneType.Mountain => "山区",
+ Models.SceneType.Coast => "海岸",
+ _ => s.ToString(),
+ };
+ private static string TranslateFormation(Models.FormationMode f) => f switch
+ {
+ Models.FormationMode.Single => "单机",
+ Models.FormationMode.Formation => "编队",
+ Models.FormationMode.Swarm => "蜂群",
+ _ => f.ToString(),
+ };
+ private static string TranslateTrigger(Models.TriggerMode t) => t switch
+ {
+ Models.TriggerMode.Time => "时间触发",
+ Models.TriggerMode.Area => "区域触发",
+ Models.TriggerMode.Manual => "手动触发",
+ _ => t.ToString(),
+ };
+ private static string TranslateRelease(Models.ReleaseMode r) => r switch
+ {
+ Models.ReleaseMode.Single => "单次",
+ Models.ReleaseMode.Continuous => "连续",
+ Models.ReleaseMode.Pulse => "脉冲",
+ _ => r.ToString(),
+ };
+ private static string TranslateEquipmentRole(Models.EquipmentRole r) => r switch
+ {
+ Models.EquipmentRole.Detection => "探测设备",
+ Models.EquipmentRole.LaunchPlatform => "发射平台",
+ _ => r.ToString(),
+ };
+
// ========== Scenario CRUD ==========
public Scenario UpdateScenario(Scenario scenario)
diff --git a/src/Unity/Assets/Plugins/CounterDrone.Core/CounterDrone.Core.dll b/src/Unity/Assets/Plugins/CounterDrone.Core/CounterDrone.Core.dll
index d7a9cd6..2aa92bf 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/unity_plugins/CounterDrone.Core.dll b/unity_plugins/CounterDrone.Core.dll
index d7a9cd6..2aa92bf 100644
Binary files a/unity_plugins/CounterDrone.Core.dll and b/unity_plugins/CounterDrone.Core.dll differ