From b57ee39d32ab5d97e0bc999a28c4903bbd8c7acc Mon Sep 17 00:00:00 2001 From: Chomp Date: Sun, 23 Feb 2025 13:42:48 +0000 Subject: [PATCH] Reduced duplication between `getCompatibleCartridgesFromWeaponTemplate` and `getCompatibleCartridgesFromMagazineTemplate` --- .../Core/Generators/BotWeaponGenerator.cs | 27 +++++-------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/Libraries/Core/Generators/BotWeaponGenerator.cs b/Libraries/Core/Generators/BotWeaponGenerator.cs index 61d5ca04..94176148 100644 --- a/Libraries/Core/Generators/BotWeaponGenerator.cs +++ b/Libraries/Core/Generators/BotWeaponGenerator.cs @@ -603,7 +603,7 @@ public class BotWeaponGenerator( // Get cartridges the weapons first chamber allow var compatibleCartridgesInTemplate = GetCompatibleCartridgesFromWeaponTemplate(weaponTemplate); - if (compatibleCartridgesInTemplate is null) + if (compatibleCartridgesInTemplate.Count == 0) // No chamber data found in weapon, send default { return weaponTemplate.Properties.DefAmmo; @@ -656,30 +656,17 @@ public class BotWeaponGenerator( /// /// Weapon db template to get cartridges for /// List of cartridge tpls - protected HashSet? GetCompatibleCartridgesFromWeaponTemplate(TemplateItem weaponTemplate) + protected HashSet GetCompatibleCartridgesFromWeaponTemplate(TemplateItem weaponTemplate) { - var cartridges = weaponTemplate.Properties?.Chambers.FirstOrDefault()?.Props?.Filters?[0].Filter; + ArgumentNullException.ThrowIfNull(weaponTemplate); + + var cartridges = weaponTemplate.Properties?.Chambers?.FirstOrDefault()?.Props?.Filters?[0].Filter; if (cartridges is not null) { return cartridges; } - // Fallback to the magazine if possible, e.g. for revolvers - // Grab the magazines template - var firstMagazine = weaponTemplate.Properties.Slots.FirstOrDefault(slot => slot.Name == "mod_magazine"); - var magazineTemplate = _itemHelper.GetItem(firstMagazine.Props.Filters?[0].Filter.FirstOrDefault()); - var magProperties = magazineTemplate.Value.Properties; - - // Get the first slots array of cartridges - cartridges = magProperties.Slots.FirstOrDefault()?.Props.Filters?[0].Filter; - if (cartridges is null) - // Normal magazines - // None found, try the cartridges array - { - cartridges = magProperties.Cartridges.FirstOrDefault()?.Props.Filters[0].Filter; - } - - return cartridges; + return GetCompatibleCartridgesFromMagazineTemplate(weaponTemplate); } /// @@ -708,7 +695,7 @@ public class BotWeaponGenerator( var cartridges = magazineTemplate.Value.Properties.Slots[0]?.Props?.Filters.FirstOrDefault()?.Filter ?? magazineTemplate.Value.Properties.Cartridges[0]?.Props?.Filters.FirstOrDefault()?.Filter; - return cartridges; + return cartridges ?? []; } ///