< Summary

Information
Class: CounterDrone.Core.Algorithms.InertGasDamageModel
Assembly: CounterDrone.Core
File(s): C:\Users\Tellme\apps\CounterDroneBackend\src\CounterDrone.Core\Algorithms\InertGasDamageModel.cs
Line coverage
100%
Covered lines: 12
Uncovered lines: 0
Coverable lines: 12
Total lines: 31
Line coverage: 100%
Branch coverage
91%
Covered branches: 11
Total branches: 12
Branch coverage: 91.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
CalculateDamage(...)83.33%66100%
GetDamageStage(...)100%66100%

File(s)

C:\Users\Tellme\apps\CounterDroneBackend\src\CounterDrone.Core\Algorithms\InertGasDamageModel.cs

#LineLine coverage
 1using System;
 2using CounterDrone.Core.Models;
 3
 4namespace CounterDrone.Core.Algorithms
 5{
 6    /// <summary>吸入式灭火 — 阈值型:密度达标后线性累积</summary>
 7    public class InertGasDamageModel : IDamageModel
 8    {
 9        private const float EffectiveThreshold = 0.05f;   // 有效浓度阈值
 10        private const float DamageRate = 0.15f;           // 每秒毁伤率
 11
 12        public float CalculateDamage(TargetType droneType, PowerType powerType,
 13            AerosolType aerosolType, float cloudDensity, float exposureTime, float deltaTime)
 2814        {
 2915            if (aerosolType != AerosolType.InertGas) return 0f;
 2816            if (cloudDensity < EffectiveThreshold) return 0f;
 17
 18            // 活塞发动机对惰性气体最敏感
 2619            var sensitivity = powerType == PowerType.Piston ? 1.5f : 1.0f;
 2620            return DamageRate * sensitivity * deltaTime;
 2821        }
 22
 23        public DamageStage GetDamageStage(float accumulatedDamage)
 424        {
 525            if (accumulatedDamage >= 1.0f) return DamageStage.Destroyed;
 426            if (accumulatedDamage >= 0.6f) return DamageStage.AttitudeLoss;
 327            if (accumulatedDamage >= 0.25f) return DamageStage.EngineAnomaly;
 128            return DamageStage.Normal;
 429        }
 30    }
 31}