/ GUNRPG.ClientModels / WeaponModels.cs
WeaponModels.cs
1 namespace GUNRPG.ClientModels; 2 3 /// <summary> 4 /// Weapon stats returned from GET /weapons. 5 /// </summary> 6 public sealed class WeaponStats 7 { 8 public string Name { get; init; } = string.Empty; 9 10 // Firepower 11 public int RoundsPerMinute { get; init; } 12 public float BulletVelocityMetersPerSecond { get; init; } 13 14 // Magazine 15 public int MagazineSize { get; init; } 16 public int ReloadTimeMs { get; init; } 17 18 // Damage 19 public float BaseDamage { get; init; } 20 public float HeadshotMultiplier { get; init; } 21 public List<WeaponDamageRange> DamageRanges { get; init; } = new(); 22 23 // Accuracy 24 public float HipfireSpreadDegrees { get; init; } 25 public float ADSSpreadDegrees { get; init; } 26 27 // Recoil 28 public float VerticalRecoil { get; init; } 29 public float HorizontalRecoil { get; init; } 30 public float RecoilRecoveryTimeMs { get; init; } 31 32 // Handling 33 public int ADSTimeMs { get; init; } 34 public float FlinchResistance { get; init; } 35 public float SuppressionFactor { get; init; } 36 37 // Mobility 38 public float MovementSpeedMetersPerSecond { get; init; } 39 public float SprintingMovementSpeedMetersPerSecond { get; init; } 40 public float ADSMovementSpeedMetersPerSecond { get; init; } 41 public float SprintToFireTimeMs { get; init; } 42 } 43 44 /// <summary> 45 /// A damage bracket for a weapon (damage varies by distance). 46 /// Null <see cref="MaxMeters"/> means the bracket is unbounded (no maximum distance). 47 /// </summary> 48 public sealed class WeaponDamageRange 49 { 50 public float MinMeters { get; init; } 51 public float? MaxMeters { get; init; } 52 public float Damage { get; init; } 53 public float HeadDamage { get; init; } 54 }