From 92caff526857c47acc6bfac6d98f3d10d2a943aa Mon Sep 17 00:00:00 2001 From: Tian jianyong <11429339@qq.com> Date: Fri, 25 Apr 2025 18:16:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E6=8E=89=E4=BA=86=20JammerType=20?= =?UTF-8?q?=E6=9E=9A=E4=B8=BE=EF=BC=8C=E7=94=A8=20JammingType=20=E6=9E=9A?= =?UTF-8?q?=E4=B8=BE=E8=A1=A8=E7=A4=BA=E5=B9=B2=E6=89=B0=E7=89=A9=E7=90=86?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=EF=BC=8C=E7=94=A8=20JammingMode=20=E6=9E=9A?= =?UTF-8?q?=E4=B8=BE=E8=A1=A8=E7=A4=BA=E5=B9=B2=E6=89=B0=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ThreatSource.sln | 6 +++ ThreatSource/src/Data/DataModels.cs | 7 +--- ThreatSource/src/Data/ThreatSourceFactory.cs | 12 +++--- .../Guidance/InfraredImagingGuidanceSystem.cs | 6 +-- .../Guidance/LaserSemiActiveGuidanceSystem.cs | 10 ++--- .../Guidance/MillimeterWaveGuidanceSystem.cs | 6 +-- ThreatSource/src/Indicator/BaseIndicator.cs | 4 +- ThreatSource/src/Indicator/InfraredTracker.cs | 2 +- ThreatSource/src/Indicator/LaserBeamRider.cs | 2 +- ThreatSource/src/Indicator/LaserDesignator.cs | 2 +- .../src/Jammable/JammableComponent.cs | 2 +- ThreatSource/src/Jammer/BaseJammer.cs | 12 ++---- ThreatSource/src/Jammer/IJammer.cs | 41 ------------------- ThreatSource/src/Jammer/InfraredJammer.cs | 15 +++---- ThreatSource/src/Jammer/JammingParameters.cs | 9 +--- ThreatSource/src/Jammer/LaserDecoy.cs | 15 +++---- ThreatSource/src/Jammer/LaserJammer.cs | 15 +++---- .../src/Jammer/MillimeterWaveJammer.cs | 15 +++---- ThreatSource/src/Jammer/SmokeGrenade.cs | 15 +++---- tools/ComprehensiveMissileSimulator.cs | 26 ++++++------ 20 files changed, 73 insertions(+), 149 deletions(-) diff --git a/ThreatSource.sln b/ThreatSource.sln index 5492b46..eb9598c 100644 --- a/ThreatSource.sln +++ b/ThreatSource.sln @@ -6,6 +6,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ThreatSource", "ThreatSourc EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThreatSource.Tests", "ThreatSource.Tests\ThreatSource.Tests.csproj", "{973EB84A-AED4-49A3-A12A-C0969F022915}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThreatSource.Tools", "tools\ThreatSource.Tools.csproj", "{31DEBAE2-F5B2-4001-8C08-33A9A0637D35}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -20,6 +22,10 @@ Global {973EB84A-AED4-49A3-A12A-C0969F022915}.Debug|Any CPU.Build.0 = Debug|Any CPU {973EB84A-AED4-49A3-A12A-C0969F022915}.Release|Any CPU.ActiveCfg = Release|Any CPU {973EB84A-AED4-49A3-A12A-C0969F022915}.Release|Any CPU.Build.0 = Release|Any CPU + {31DEBAE2-F5B2-4001-8C08-33A9A0637D35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {31DEBAE2-F5B2-4001-8C08-33A9A0637D35}.Debug|Any CPU.Build.0 = Debug|Any CPU + {31DEBAE2-F5B2-4001-8C08-33A9A0637D35}.Release|Any CPU.ActiveCfg = Release|Any CPU + {31DEBAE2-F5B2-4001-8C08-33A9A0637D35}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/ThreatSource/src/Data/DataModels.cs b/ThreatSource/src/Data/DataModels.cs index 23e6a99..1f1ea5c 100644 --- a/ThreatSource/src/Data/DataModels.cs +++ b/ThreatSource/src/Data/DataModels.cs @@ -361,13 +361,8 @@ namespace ThreatSource.Data /// 获取或设置干扰机的类型 /// /// - /// 可选值: - /// - LaserJammer:激光干扰机 - /// - IRJammer:红外干扰机 - /// - MMWJammer:毫米波干扰机 - /// - SmokeGrenade:烟幕弹 /// - public JammerType Type { get; set; } + public JammingType Type { get; set; } /// /// 获取或设置烟幕弹的配置 diff --git a/ThreatSource/src/Data/ThreatSourceFactory.cs b/ThreatSource/src/Data/ThreatSourceFactory.cs index 4fb3738..05fcbc7 100644 --- a/ThreatSource/src/Data/ThreatSourceFactory.cs +++ b/ThreatSource/src/Data/ThreatSourceFactory.cs @@ -136,7 +136,7 @@ namespace ThreatSource.Data public IIndicator CreateIndicator(string indicatorId, string indicatorModel, string targetId, string missileId, MotionParameters motionParameters) { var data = _dataManager.GetIndicator(indicatorModel); - + return data.Type switch { IndicatorType.LaserDesignator when data.DesignatorConfig != null => new LaserDesignator( @@ -232,32 +232,32 @@ namespace ThreatSource.Data var data = _dataManager.GetJammer(jammerModel); return data.Type switch { - JammerType.SmokeGrenade => new SmokeGrenade( + JammingType.SmokeGrenade => new SmokeGrenade( jammerId, data.SmokeGrenadeConfig, motionParameters, _simulationManager ), - JammerType.LaserDecoy => new LaserDecoy( + JammingType.LaserDecoy => new LaserDecoy( jammerId, data.LaserDecoyConfig, motionParameters, sourceId, _simulationManager ), - JammerType.Laser => new LaserJammer( + JammingType.Laser => new LaserJammer( jammerId, data.LaserJammerConfig, motionParameters, _simulationManager ), - JammerType.Infrared => new InfraredJammer( + JammingType.Infrared => new InfraredJammer( jammerId, data.InfraredJammerConfig, motionParameters, _simulationManager ), - JammerType.MillimeterWave => new MillimeterWaveJammer( + JammingType.MillimeterWave => new MillimeterWaveJammer( jammerId, data.MillimeterWaveJammerConfig, motionParameters, diff --git a/ThreatSource/src/Guidance/InfraredImagingGuidanceSystem.cs b/ThreatSource/src/Guidance/InfraredImagingGuidanceSystem.cs index 28c1561..29ef630 100644 --- a/ThreatSource/src/Guidance/InfraredImagingGuidanceSystem.cs +++ b/ThreatSource/src/Guidance/InfraredImagingGuidanceSystem.cs @@ -135,7 +135,7 @@ namespace ThreatSource.Guidance backgroundIntensity: guidanceConfig.BackgroundIntensity, wavelength: guidanceConfig.WaveLength ); - InitializeJamming(guidanceConfig.JammingResistanceThreshold, [JammingType.Infrared, JammingType.SmokeScreen]); + InitializeJamming(guidanceConfig.JammingResistanceThreshold, [JammingType.Infrared, JammingType.SmokeGrenade]); SwitchToSearchMode(); // 初始化为搜索模式 } @@ -159,7 +159,7 @@ namespace ThreatSource.Guidance // 调用基类处理硬干扰状态 base.HandleJammingApplied(parameters); } - else if (parameters.Type == JammingType.SmokeScreen) + else if (parameters.Type == JammingType.SmokeGrenade) { if (SimulationManager.GetEntityById(parameters.JammerId) is SmokeGrenade smokeGrenade) { @@ -198,7 +198,7 @@ namespace ThreatSource.Guidance Debug.WriteLine("红外引导系统干扰已清除"); // 干扰清除后的恢复逻辑 } - else if (parameters.Type == JammingType.SmokeScreen) + else if (parameters.Type == JammingType.SmokeGrenade) { SmokeAttenuation = 1.0; // Reset smoke attenuation Debug.WriteLine("[烟幕干扰清除 IR]"); diff --git a/ThreatSource/src/Guidance/LaserSemiActiveGuidanceSystem.cs b/ThreatSource/src/Guidance/LaserSemiActiveGuidanceSystem.cs index fdb2cd4..ed2fab6 100644 --- a/ThreatSource/src/Guidance/LaserSemiActiveGuidanceSystem.cs +++ b/ThreatSource/src/Guidance/LaserSemiActiveGuidanceSystem.cs @@ -166,7 +166,7 @@ namespace ThreatSource.Guidance // 初始化加速度平滑处理 PreviousGuidanceAcceleration = Vector3D.Zero; - InitializeJamming(guidanceConfig.JammingResistanceThreshold, [JammingType.Laser, JammingType.SmokeScreen, JammingType.Decoy]); + InitializeJamming(guidanceConfig.JammingResistanceThreshold, [JammingType.Laser, JammingType.SmokeGrenade, JammingType.LaserDecoy]); } /// @@ -292,13 +292,13 @@ namespace ThreatSource.Guidance LaserIlluminationOn = false; // 无法确认照射状态 // 不需要再次设置 HasGuidance = false } - else if (parameters.Type == JammingType.SmokeScreen) + else if (parameters.Type == JammingType.SmokeGrenade) { // 计算并应用烟幕衰减 SmokeAttenuation = CalculateSmokeAttenuation(parameters); Debug.WriteLine($"[LASER_SEMI_ACTIVE] 烟幕干扰应用,衰减因子: {SmokeAttenuation:P2}", "Jamming"); } - else if (parameters.Type == JammingType.Decoy) + else if (parameters.Type == JammingType.LaserDecoy) { if (parameters.JammerId != null && parameters.SourceId != null) { @@ -327,12 +327,12 @@ namespace ThreatSource.Guidance // 不需要设置 HasGuidance = true, 基类可能已处理 // 激光照射状态 LaserIlluminationOn 会在收到下一个有效 Update 事件时恢复 } - else if (parameters.Type == JammingType.SmokeScreen) + else if (parameters.Type == JammingType.SmokeGrenade) { SmokeAttenuation = 1.0; // 重置烟幕衰减 Debug.WriteLine($"[LASER_SEMI_ACTIVE] 烟幕干扰已清除。", "Jamming"); } - else if (parameters.Type == JammingType.Decoy) + else if (parameters.Type == JammingType.LaserDecoy) { if (parameters.JammerId != null) { diff --git a/ThreatSource/src/Guidance/MillimeterWaveGuidanceSystem.cs b/ThreatSource/src/Guidance/MillimeterWaveGuidanceSystem.cs index eea499a..b913338 100644 --- a/ThreatSource/src/Guidance/MillimeterWaveGuidanceSystem.cs +++ b/ThreatSource/src/Guidance/MillimeterWaveGuidanceSystem.cs @@ -146,7 +146,7 @@ namespace ThreatSource.Guidance : base(id, maxAcceleration, guidanceCoefficient, simulationManager) { this.config = config; - InitializeJamming(config.JammingResistanceThreshold, [JammingType.MillimeterWave, JammingType.SmokeScreen]); + InitializeJamming(config.JammingResistanceThreshold, [JammingType.MillimeterWave, JammingType.SmokeGrenade]); SwitchToSearchMode(); // 初始化为搜索模式 } @@ -238,7 +238,7 @@ namespace ThreatSource.Guidance SwitchToSearchMode(); } } - else if (parameters.Type == JammingType.SmokeScreen) + else if (parameters.Type == JammingType.SmokeGrenade) { // 计算烟幕透过率 // TODO: 实现基于 JammingParameters 中烟幕属性 (浓度、厚度等) 的真实透过率计算。 @@ -260,7 +260,7 @@ namespace ThreatSource.Guidance Debug.WriteLine($"[MMW_GUIDANCE] 毫米波干扰已清除。", "Jamming"); // 干扰清除后是否需要切换模式?取决于当前是否有目标。Update 会处理。 } - else if (parameters.Type == JammingType.SmokeScreen) + else if (parameters.Type == JammingType.SmokeGrenade) { _currentSmokeTransmittance = 1.0; // 重置烟幕透过率 Debug.WriteLine($"[MMW_GUIDANCE] 烟幕干扰已清除。", "Jamming"); diff --git a/ThreatSource/src/Indicator/BaseIndicator.cs b/ThreatSource/src/Indicator/BaseIndicator.cs index 66fa929..4facbc2 100644 --- a/ThreatSource/src/Indicator/BaseIndicator.cs +++ b/ThreatSource/src/Indicator/BaseIndicator.cs @@ -144,7 +144,7 @@ namespace ThreatSource.Indicator protected virtual void HandleJammingApplied(JammingParameters parameters) { // 如果是烟幕干扰,重新计算遮挡状态 - if (parameters.Type == JammingType.SmokeScreen) + if (parameters.Type == JammingType.SmokeGrenade) { RecalculateObscurationStatus(); Debug.WriteLine($"[BaseIndicator] 烟幕状态更新,IsTargetObscured: {IsTargetObscured}", "Jamming"); @@ -164,7 +164,7 @@ namespace ThreatSource.Indicator protected virtual void HandleJammingCleared(JammingParameters parameters) { // 如果是烟幕干扰,重新计算遮挡状态 - if (parameters.Type == JammingType.SmokeScreen) + if (parameters.Type == JammingType.SmokeGrenade) { RecalculateObscurationStatus(); Debug.WriteLine($"[BaseIndicator] 烟幕状态更新,IsTargetObscured: {IsTargetObscured}", "Jamming"); diff --git a/ThreatSource/src/Indicator/InfraredTracker.cs b/ThreatSource/src/Indicator/InfraredTracker.cs index e3df858..449de19 100644 --- a/ThreatSource/src/Indicator/InfraredTracker.cs +++ b/ThreatSource/src/Indicator/InfraredTracker.cs @@ -28,7 +28,7 @@ namespace ThreatSource.Indicator /// 红外测角仪支持的干扰类型: /// - 红外干扰 /// - public override IEnumerable SupportedJammingTypes => [JammingType.Infrared, JammingType.SmokeScreen]; + public override IEnumerable SupportedJammingTypes => [JammingType.Infrared, JammingType.SmokeGrenade]; /// /// 红外测角仪配置参数 diff --git a/ThreatSource/src/Indicator/LaserBeamRider.cs b/ThreatSource/src/Indicator/LaserBeamRider.cs index 8d3f832..090ff10 100644 --- a/ThreatSource/src/Indicator/LaserBeamRider.cs +++ b/ThreatSource/src/Indicator/LaserBeamRider.cs @@ -25,7 +25,7 @@ namespace ThreatSource.Indicator /// 激光驾束仪支持的干扰类型: /// - 激光干扰 /// - public override IEnumerable SupportedJammingTypes => [JammingType.Laser, JammingType.SmokeScreen]; + public override IEnumerable SupportedJammingTypes => [JammingType.Laser, JammingType.SmokeGrenade]; /// /// 获取或设置干扰阈值,单位:分贝 diff --git a/ThreatSource/src/Indicator/LaserDesignator.cs b/ThreatSource/src/Indicator/LaserDesignator.cs index 18dd973..1d5e28b 100644 --- a/ThreatSource/src/Indicator/LaserDesignator.cs +++ b/ThreatSource/src/Indicator/LaserDesignator.cs @@ -25,7 +25,7 @@ namespace ThreatSource.Indicator /// 激光目标指示器支持的干扰类型: /// - 激光干扰 /// - public override IEnumerable SupportedJammingTypes => [JammingType.Laser, JammingType.SmokeScreen]; + public override IEnumerable SupportedJammingTypes => [JammingType.Laser, JammingType.SmokeGrenade]; /// /// 获取或设置干扰阈值,单位:分贝 diff --git a/ThreatSource/src/Jammable/JammableComponent.cs b/ThreatSource/src/Jammable/JammableComponent.cs index e90e332..b5ded34 100644 --- a/ThreatSource/src/Jammable/JammableComponent.cs +++ b/ThreatSource/src/Jammable/JammableComponent.cs @@ -159,7 +159,7 @@ namespace ThreatSource.Jammable } // 烟幕干扰总是有效,如果支持的话 - if (parameters.Type == JammingType.SmokeScreen) + if (parameters.Type == JammingType.SmokeGrenade) { Debug.WriteLine($"[干扰有效性检查] 烟幕干扰有效。"); return true; diff --git a/ThreatSource/src/Jammer/BaseJammer.cs b/ThreatSource/src/Jammer/BaseJammer.cs index 9398e70..6181581 100644 --- a/ThreatSource/src/Jammer/BaseJammer.cs +++ b/ThreatSource/src/Jammer/BaseJammer.cs @@ -20,15 +20,10 @@ namespace ThreatSource.Jammer /// protected JammingParameters? CurrentParameters { get; set; } - /// - /// 干扰器类型 - /// - protected abstract JammerType Type { get; } - /// /// 支持的干扰类型 /// - protected abstract JammingType[] SupportedJammingTypes { get; } + protected abstract JammingType JammingType { get; } /// /// 干扰器状态 @@ -89,7 +84,6 @@ namespace ThreatSource.Jammer { return new JammerRunningState { - Type = Type, State = State, CurrentParameters = CurrentParameters, IsJamming = IsJamming @@ -103,7 +97,7 @@ namespace ThreatSource.Jammer public virtual void StartJamming(JammingParameters parameters) { // 检查是否是该类型的干扰 - if (!SupportedJammingTypes.Contains(parameters.Type)) + if (JammingType != parameters.Type) { Console.WriteLine($"干扰器 {Id} 不支持 {parameters.Type} 类型的干扰"); return; @@ -226,7 +220,7 @@ namespace ThreatSource.Jammer /// 干扰器状态信息 public override string GetStatus() { - return base.GetStatus() + $"干扰器状态:{State}, type: {Type}, isJamming: {IsJamming}\n"; + return base.GetStatus() + $"干扰器状态:{State}, type: {JammingType}, isJamming: {IsJamming}\n"; } } } diff --git a/ThreatSource/src/Jammer/IJammer.cs b/ThreatSource/src/Jammer/IJammer.cs index 2ba2602..48b84a6 100644 --- a/ThreatSource/src/Jammer/IJammer.cs +++ b/ThreatSource/src/Jammer/IJammer.cs @@ -46,11 +46,6 @@ namespace ThreatSource.Jammer /// public struct JammerRunningState { - /// - /// 干扰器类型 - /// - public JammerType Type { get; set; } - /// /// 干扰器工作状态 /// @@ -67,42 +62,6 @@ namespace ThreatSource.Jammer public bool IsJamming { get; set; } } - /// - /// 干扰器类型枚举 - /// - public enum JammerType - { - /// - /// 激光干扰器 - /// - Laser, - - /// - /// 激光诱偏目标 - /// - LaserDecoy, - - /// - /// 红外干扰器 - /// - Infrared, - - /// - /// 紫外干扰器 - /// - Ultraviolet, - - /// - /// 毫米波干扰器 - /// - MillimeterWave, - - /// - /// 烟幕弹 - /// - SmokeGrenade - } - /// /// 干扰器工作状态枚举 /// diff --git a/ThreatSource/src/Jammer/InfraredJammer.cs b/ThreatSource/src/Jammer/InfraredJammer.cs index c16156c..5a121cd 100644 --- a/ThreatSource/src/Jammer/InfraredJammer.cs +++ b/ThreatSource/src/Jammer/InfraredJammer.cs @@ -15,15 +15,10 @@ namespace ThreatSource.Jammer /// public readonly InfraredJammerConfig config; - /// - /// 干扰器类型 - /// - protected override JammerType Type => JammerType.Infrared; - /// /// 支持的干扰类型 /// - protected override JammingType[] SupportedJammingTypes => [JammingType.Infrared]; + protected override JammingType JammingType => JammingType.Infrared; /// /// 初始化红外干扰器的新实例 @@ -45,12 +40,12 @@ namespace ThreatSource.Jammer { return new JammingParameters { - Type = JammingType.Infrared, - JammerId = Id, + Type = Jammer.JammingType.Infrared, + JammerId = base.Id, Power = config.Power, Wavelength = config.Wavelength, - Direction = Orientation.ToVector(), - SourcePosition = Position, + Direction = base.Orientation.ToVector(), + SourcePosition = base.Position, AngleRange = config.AngleRange, Mode = config.Mode, Duration = config.Duration, diff --git a/ThreatSource/src/Jammer/JammingParameters.cs b/ThreatSource/src/Jammer/JammingParameters.cs index 3232945..9dc5fd9 100644 --- a/ThreatSource/src/Jammer/JammingParameters.cs +++ b/ThreatSource/src/Jammer/JammingParameters.cs @@ -176,21 +176,16 @@ namespace ThreatSource.Jammer /// 激光干扰 /// Laser, - - /// - /// 射频干扰 - /// - RadioFrequency, /// /// 诱偏干扰 /// - Decoy, + LaserDecoy, /// /// 烟幕干扰 /// - SmokeScreen + SmokeGrenade } /// diff --git a/ThreatSource/src/Jammer/LaserDecoy.cs b/ThreatSource/src/Jammer/LaserDecoy.cs index 7379478..afcca5d 100644 --- a/ThreatSource/src/Jammer/LaserDecoy.cs +++ b/ThreatSource/src/Jammer/LaserDecoy.cs @@ -11,15 +11,10 @@ namespace ThreatSource.Jammer /// public class LaserDecoy : BaseJammer { - /// - /// 获取干扰器类型 - /// - protected override JammerType Type => JammerType.LaserDecoy; - /// /// 支持的干扰类型 /// - protected override JammingType[] SupportedJammingTypes => [JammingType.Decoy]; + protected override JammingType JammingType => JammingType.LaserDecoy; /// /// 激光诱偏目标配置 @@ -56,15 +51,15 @@ namespace ThreatSource.Jammer return new JammingParameters { - Type = JammingType.Decoy, + Type = Jammer.JammingType.LaserDecoy, Mode = config.Mode, - JammerId = Id, + JammerId = base.Id, SourceId = SourceId, Power = config.Power, Wavelength = config.Wavelength, SourcePosition = sourcePosition, - Direction = Orientation.ToVector(), - DecoyPosition = Position, + Direction = base.Orientation.ToVector(), + DecoyPosition = base.Position, AngleRange = config.DivergenceAngle, Duration = config.Duration, ReflectiveArea = config.ReflectiveArea, diff --git a/ThreatSource/src/Jammer/LaserJammer.cs b/ThreatSource/src/Jammer/LaserJammer.cs index 5a598c8..537b1cb 100644 --- a/ThreatSource/src/Jammer/LaserJammer.cs +++ b/ThreatSource/src/Jammer/LaserJammer.cs @@ -10,15 +10,10 @@ namespace ThreatSource.Jammer /// public class LaserJammer : BaseJammer { - /// - /// 干扰器类型 - /// - protected override JammerType Type => JammerType.Laser; - /// /// 支持的干扰类型 /// - protected override JammingType[] SupportedJammingTypes => [JammingType.Laser]; + protected override JammingType JammingType => JammingType.Laser; /// /// 激光干扰器配置 @@ -45,12 +40,12 @@ namespace ThreatSource.Jammer { return new JammingParameters { - Type = JammingType.Laser, - JammerId = Id, + Type = Jammer.JammingType.Laser, + JammerId = base.Id, Power = config.Power, Wavelength = config.Wavelength, - Direction = Orientation.ToVector(), - SourcePosition = Position, + Direction = base.Orientation.ToVector(), + SourcePosition = base.Position, Mode = config.Mode, Duration = config.Duration, StartTime = DateTime.UtcNow diff --git a/ThreatSource/src/Jammer/MillimeterWaveJammer.cs b/ThreatSource/src/Jammer/MillimeterWaveJammer.cs index c191140..0c1ed7a 100644 --- a/ThreatSource/src/Jammer/MillimeterWaveJammer.cs +++ b/ThreatSource/src/Jammer/MillimeterWaveJammer.cs @@ -10,15 +10,10 @@ namespace ThreatSource.Jammer /// public class MillimeterWaveJammer : BaseJammer { - /// - /// 干扰器类型 - /// - protected override JammerType Type => JammerType.MillimeterWave; - /// /// 支持的干扰类型 /// - protected override JammingType[] SupportedJammingTypes => [JammingType.MillimeterWave]; + protected override JammingType JammingType => JammingType.MillimeterWave; /// /// 毫米波干扰器配置 @@ -45,12 +40,12 @@ namespace ThreatSource.Jammer { return new JammingParameters { - Type = JammingType.MillimeterWave, - JammerId = Id, + Type = Jammer.JammingType.MillimeterWave, + JammerId = base.Id, Power = config.Power, Wavelength = config.Wavelength, - Direction = Orientation.ToVector(), - SourcePosition = Position, + Direction = base.Orientation.ToVector(), + SourcePosition = base.Position, Mode = config.Mode, Duration = config.Duration, StartTime = DateTime.UtcNow diff --git a/ThreatSource/src/Jammer/SmokeGrenade.cs b/ThreatSource/src/Jammer/SmokeGrenade.cs index 0ed6a64..5c9ad1b 100644 --- a/ThreatSource/src/Jammer/SmokeGrenade.cs +++ b/ThreatSource/src/Jammer/SmokeGrenade.cs @@ -17,15 +17,10 @@ namespace ThreatSource.Jammer /// public readonly SmokeGrenadeConfig config; - /// - /// 获取干扰器类型 - /// - protected override JammerType Type => JammerType.SmokeGrenade; - /// /// 支持的干扰类型 /// - protected override JammingType[] SupportedJammingTypes => [JammingType.SmokeScreen]; + protected override JammingType JammingType => JammingType.SmokeGrenade; /// /// 初始化烟幕弹实例 @@ -52,12 +47,12 @@ namespace ThreatSource.Jammer { return new JammingParameters { - Type = JammingType.SmokeScreen, + Type = Jammer.JammingType.SmokeGrenade, Mode = config.Mode, - JammerId = Id, + JammerId = base.Id, Power = 0, // 烟幕不需要功率参数 - Direction = Orientation.ToVector(), - SourcePosition = Position, + Direction = base.Orientation.ToVector(), + SourcePosition = base.Position, AngleRange = 2 * Math.PI, // 烟幕为全方位效果 Duration = config.Duration, StartTime = DateTime.UtcNow, diff --git a/tools/ComprehensiveMissileSimulator.cs b/tools/ComprehensiveMissileSimulator.cs index d16ce05..046425b 100644 --- a/tools/ComprehensiveMissileSimulator.cs +++ b/tools/ComprehensiveMissileSimulator.cs @@ -92,7 +92,7 @@ namespace ThreatSource.Tools.MissileSimulation missileJammingMap["LBRM_1"] = new List<(JammingType, string, string, string, string)> { (JammingType.Laser, "激光干扰", "LaserJammer_Designator", "阻塞", "指示器"), - (JammingType.SmokeScreen, "烟幕弹", "SG_1", "遮蔽", "两者") + (JammingType.SmokeGrenade, "烟幕弹", "SG_1", "遮蔽", "两者") }; // 激光半主动制导导弹 @@ -100,29 +100,29 @@ namespace ThreatSource.Tools.MissileSimulation { (JammingType.Laser, "激光干扰(指示器)", "LaserJammer_Designator", "阻塞", "指示器"), (JammingType.Laser, "激光干扰(导弹)", "LaserJammer_Missile", "阻塞", "导弹"), - (JammingType.Decoy, "激光诱偏目标", "LDY_1", "欺骗", "导弹"), - (JammingType.SmokeScreen, "烟幕弹", "SG_1", "遮蔽", "两者") + (JammingType.LaserDecoy, "激光诱偏目标", "LDY_1", "欺骗", "导弹"), + (JammingType.SmokeGrenade, "烟幕弹", "SG_1", "遮蔽", "两者") }; // 红外指令制导导弹 missileJammingMap["ICGM_1"] = new List<(JammingType, string, string, string, string)> { (JammingType.Infrared, "红外干扰", "InfraredJammer_Designator", "阻塞", "指示器"), - (JammingType.SmokeScreen, "烟幕弹", "SG_2", "遮蔽", "指示器") + (JammingType.SmokeGrenade, "烟幕弹", "SG_2", "遮蔽", "指示器") }; // 红外成像末制导导弹 missileJammingMap["ITGM_1"] = new List<(JammingType, string, string, string, string)> { (JammingType.Infrared, "红外干扰", "InfraredJammer_Missile", "阻塞", "导弹"), - (JammingType.SmokeScreen, "红外烟幕弹", "SG_2", "遮蔽", "导弹") + (JammingType.SmokeGrenade, "红外烟幕弹", "SG_2", "遮蔽", "导弹") }; // 毫米波末制导导弹 missileJammingMap["MMWG_1"] = new List<(JammingType, string, string, string, string)> { (JammingType.MillimeterWave, "毫米波干扰", "MillimeterWaveJammer_Missile", "阻塞", "导弹"), - (JammingType.SmokeScreen, "烟幕弹", "SG_1", "遮蔽", "导弹") + (JammingType.SmokeGrenade, "烟幕弹", "SG_1", "遮蔽", "导弹") }; // 末敏子弹药 @@ -132,7 +132,7 @@ namespace ThreatSource.Tools.MissileSimulation (JammingType.Infrared, "红外干扰", "InfraredJammer_Missile", "阻塞", "子弹药"), (JammingType.MillimeterWave, "毫米波干扰", "MillimeterWaveJammer_Submunition", "阻塞", "子弹药"), (JammingType.MillimeterWave, "毫米波假信号", "MillimeterWaveJammer_Submunition", "欺骗", "子弹药"), - (JammingType.SmokeScreen, "烟幕弹", "SG_3", "遮蔽", "子弹药") + (JammingType.SmokeGrenade, "烟幕弹", "SG_3", "遮蔽", "子弹药") }; } @@ -749,7 +749,7 @@ namespace ThreatSource.Tools.MissileSimulation case JammingType.MillimeterWave: jammerId = "MillimeterWaveJammer_Missile"; // 假设这个也可以用于指示器 break; - case JammingType.SmokeScreen: + case JammingType.SmokeGrenade: if (indicator.Id.Contains("LD")) jammerId = "SG_1"; // 激光烟幕 else if (indicator.Id.Contains("IR")) @@ -757,7 +757,7 @@ namespace ThreatSource.Tools.MissileSimulation else jammerId = "SG_3"; // 默认烟幕 break; - case JammingType.Decoy: + case JammingType.LaserDecoy: jammerId = "LDY_1"; break; } @@ -832,7 +832,7 @@ namespace ThreatSource.Tools.MissileSimulation else jammerId = "MillimeterWaveJammer_Missile"; break; - case JammingType.SmokeScreen: + case JammingType.SmokeGrenade: if (missile.Id.Contains("ITGM") || missile.Id.Contains("ICGM")) jammerId = "SG_2"; // 红外烟幕用于红外导弹 else if (missile.Id.Contains("TSM")) @@ -840,7 +840,7 @@ namespace ThreatSource.Tools.MissileSimulation else jammerId = "SG_1"; // 默认烟幕 break; - case JammingType.Decoy: + case JammingType.LaserDecoy: jammerId = "LDY_1"; break; } @@ -917,7 +917,7 @@ namespace ThreatSource.Tools.MissileSimulation { switch (type) { - case JammingType.SmokeScreen: + case JammingType.SmokeGrenade: if (category == "水平烟幕弹") { jammers["SG_1"].Activate(); @@ -931,7 +931,7 @@ namespace ThreatSource.Tools.MissileSimulation jammers["SG_3"].Activate(); } break; - case JammingType.Decoy: + case JammingType.LaserDecoy: jammers["LDY_1"].Activate(); break; }