删掉了 JammerType 枚举,用 JammingType 枚举表示干扰物理方式,用 JammingMode 枚举表示干扰模式
This commit is contained in:
parent
5e61f357b4
commit
92caff5268
@ -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
|
||||
|
||||
@ -361,13 +361,8 @@ namespace ThreatSource.Data
|
||||
/// 获取或设置干扰机的类型
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// 可选值:
|
||||
/// - LaserJammer:激光干扰机
|
||||
/// - IRJammer:红外干扰机
|
||||
/// - MMWJammer:毫米波干扰机
|
||||
/// - SmokeGrenade:烟幕弹
|
||||
/// </remarks>
|
||||
public JammerType Type { get; set; }
|
||||
public JammingType Type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置烟幕弹的配置
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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]");
|
||||
|
||||
@ -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]);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -28,7 +28,7 @@ namespace ThreatSource.Indicator
|
||||
/// 红外测角仪支持的干扰类型:
|
||||
/// - 红外干扰
|
||||
/// </remarks>
|
||||
public override IEnumerable<JammingType> SupportedJammingTypes => [JammingType.Infrared, JammingType.SmokeScreen];
|
||||
public override IEnumerable<JammingType> SupportedJammingTypes => [JammingType.Infrared, JammingType.SmokeGrenade];
|
||||
|
||||
/// <summary>
|
||||
/// 红外测角仪配置参数
|
||||
|
||||
@ -25,7 +25,7 @@ namespace ThreatSource.Indicator
|
||||
/// 激光驾束仪支持的干扰类型:
|
||||
/// - 激光干扰
|
||||
/// </remarks>
|
||||
public override IEnumerable<JammingType> SupportedJammingTypes => [JammingType.Laser, JammingType.SmokeScreen];
|
||||
public override IEnumerable<JammingType> SupportedJammingTypes => [JammingType.Laser, JammingType.SmokeGrenade];
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置干扰阈值,单位:分贝
|
||||
|
||||
@ -25,7 +25,7 @@ namespace ThreatSource.Indicator
|
||||
/// 激光目标指示器支持的干扰类型:
|
||||
/// - 激光干扰
|
||||
/// </remarks>
|
||||
public override IEnumerable<JammingType> SupportedJammingTypes => [JammingType.Laser, JammingType.SmokeScreen];
|
||||
public override IEnumerable<JammingType> SupportedJammingTypes => [JammingType.Laser, JammingType.SmokeGrenade];
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置干扰阈值,单位:分贝
|
||||
|
||||
@ -159,7 +159,7 @@ namespace ThreatSource.Jammable
|
||||
}
|
||||
|
||||
// 烟幕干扰总是有效,如果支持的话
|
||||
if (parameters.Type == JammingType.SmokeScreen)
|
||||
if (parameters.Type == JammingType.SmokeGrenade)
|
||||
{
|
||||
Debug.WriteLine($"[干扰有效性检查] 烟幕干扰有效。");
|
||||
return true;
|
||||
|
||||
@ -20,15 +20,10 @@ namespace ThreatSource.Jammer
|
||||
/// </summary>
|
||||
protected JammingParameters? CurrentParameters { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 干扰器类型
|
||||
/// </summary>
|
||||
protected abstract JammerType Type { get; }
|
||||
|
||||
/// <summary>
|
||||
/// 支持的干扰类型
|
||||
/// </summary>
|
||||
protected abstract JammingType[] SupportedJammingTypes { get; }
|
||||
protected abstract JammingType JammingType { get; }
|
||||
|
||||
/// <summary>
|
||||
/// 干扰器状态
|
||||
@ -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
|
||||
/// <returns>干扰器状态信息</returns>
|
||||
public override string GetStatus()
|
||||
{
|
||||
return base.GetStatus() + $"干扰器状态:{State}, type: {Type}, isJamming: {IsJamming}\n";
|
||||
return base.GetStatus() + $"干扰器状态:{State}, type: {JammingType}, isJamming: {IsJamming}\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,11 +46,6 @@ namespace ThreatSource.Jammer
|
||||
/// </remarks>
|
||||
public struct JammerRunningState
|
||||
{
|
||||
/// <summary>
|
||||
/// 干扰器类型
|
||||
/// </summary>
|
||||
public JammerType Type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 干扰器工作状态
|
||||
/// </summary>
|
||||
@ -67,42 +62,6 @@ namespace ThreatSource.Jammer
|
||||
public bool IsJamming { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 干扰器类型枚举
|
||||
/// </summary>
|
||||
public enum JammerType
|
||||
{
|
||||
/// <summary>
|
||||
/// 激光干扰器
|
||||
/// </summary>
|
||||
Laser,
|
||||
|
||||
/// <summary>
|
||||
/// 激光诱偏目标
|
||||
/// </summary>
|
||||
LaserDecoy,
|
||||
|
||||
/// <summary>
|
||||
/// 红外干扰器
|
||||
/// </summary>
|
||||
Infrared,
|
||||
|
||||
/// <summary>
|
||||
/// 紫外干扰器
|
||||
/// </summary>
|
||||
Ultraviolet,
|
||||
|
||||
/// <summary>
|
||||
/// 毫米波干扰器
|
||||
/// </summary>
|
||||
MillimeterWave,
|
||||
|
||||
/// <summary>
|
||||
/// 烟幕弹
|
||||
/// </summary>
|
||||
SmokeGrenade
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 干扰器工作状态枚举
|
||||
/// </summary>
|
||||
|
||||
@ -15,15 +15,10 @@ namespace ThreatSource.Jammer
|
||||
/// </summary>
|
||||
public readonly InfraredJammerConfig config;
|
||||
|
||||
/// <summary>
|
||||
/// 干扰器类型
|
||||
/// </summary>
|
||||
protected override JammerType Type => JammerType.Infrared;
|
||||
|
||||
/// <summary>
|
||||
/// 支持的干扰类型
|
||||
/// </summary>
|
||||
protected override JammingType[] SupportedJammingTypes => [JammingType.Infrared];
|
||||
protected override JammingType JammingType => JammingType.Infrared;
|
||||
|
||||
/// <summary>
|
||||
/// 初始化红外干扰器的新实例
|
||||
@ -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,
|
||||
|
||||
@ -176,21 +176,16 @@ namespace ThreatSource.Jammer
|
||||
/// 激光干扰
|
||||
/// </summary>
|
||||
Laser,
|
||||
|
||||
/// <summary>
|
||||
/// 射频干扰
|
||||
/// </summary>
|
||||
RadioFrequency,
|
||||
|
||||
/// <summary>
|
||||
/// 诱偏干扰
|
||||
/// </summary>
|
||||
Decoy,
|
||||
LaserDecoy,
|
||||
|
||||
/// <summary>
|
||||
/// 烟幕干扰
|
||||
/// </summary>
|
||||
SmokeScreen
|
||||
SmokeGrenade
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@ -11,15 +11,10 @@ namespace ThreatSource.Jammer
|
||||
/// </remarks>
|
||||
public class LaserDecoy : BaseJammer
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取干扰器类型
|
||||
/// </summary>
|
||||
protected override JammerType Type => JammerType.LaserDecoy;
|
||||
|
||||
/// <summary>
|
||||
/// 支持的干扰类型
|
||||
/// </summary>
|
||||
protected override JammingType[] SupportedJammingTypes => [JammingType.Decoy];
|
||||
protected override JammingType JammingType => JammingType.LaserDecoy;
|
||||
|
||||
/// <summary>
|
||||
/// 激光诱偏目标配置
|
||||
@ -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,
|
||||
|
||||
@ -10,15 +10,10 @@ namespace ThreatSource.Jammer
|
||||
/// </summary>
|
||||
public class LaserJammer : BaseJammer
|
||||
{
|
||||
/// <summary>
|
||||
/// 干扰器类型
|
||||
/// </summary>
|
||||
protected override JammerType Type => JammerType.Laser;
|
||||
|
||||
/// <summary>
|
||||
/// 支持的干扰类型
|
||||
/// </summary>
|
||||
protected override JammingType[] SupportedJammingTypes => [JammingType.Laser];
|
||||
protected override JammingType JammingType => JammingType.Laser;
|
||||
|
||||
/// <summary>
|
||||
/// 激光干扰器配置
|
||||
@ -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
|
||||
|
||||
@ -10,15 +10,10 @@ namespace ThreatSource.Jammer
|
||||
/// </summary>
|
||||
public class MillimeterWaveJammer : BaseJammer
|
||||
{
|
||||
/// <summary>
|
||||
/// 干扰器类型
|
||||
/// </summary>
|
||||
protected override JammerType Type => JammerType.MillimeterWave;
|
||||
|
||||
/// <summary>
|
||||
/// 支持的干扰类型
|
||||
/// </summary>
|
||||
protected override JammingType[] SupportedJammingTypes => [JammingType.MillimeterWave];
|
||||
protected override JammingType JammingType => JammingType.MillimeterWave;
|
||||
|
||||
/// <summary>
|
||||
/// 毫米波干扰器配置
|
||||
@ -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
|
||||
|
||||
@ -17,15 +17,10 @@ namespace ThreatSource.Jammer
|
||||
/// </summary>
|
||||
public readonly SmokeGrenadeConfig config;
|
||||
|
||||
/// <summary>
|
||||
/// 获取干扰器类型
|
||||
/// </summary>
|
||||
protected override JammerType Type => JammerType.SmokeGrenade;
|
||||
|
||||
/// <summary>
|
||||
/// 支持的干扰类型
|
||||
/// </summary>
|
||||
protected override JammingType[] SupportedJammingTypes => [JammingType.SmokeScreen];
|
||||
protected override JammingType JammingType => JammingType.SmokeGrenade;
|
||||
|
||||
/// <summary>
|
||||
/// 初始化烟幕弹实例
|
||||
@ -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,
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user