From 10ad2dfe9a2a8da0f89092ae05a5994d920ad326 Mon Sep 17 00:00:00 2001 From: Chomp Date: Wed, 23 Jul 2025 22:07:56 +0100 Subject: [PATCH] list to ienumerable changes --- .../Generators/LocationLootGenerator.cs | 18 ++++---- .../Helpers/InRaidHelper.cs | 4 +- .../Helpers/ItemHelper.cs | 20 ++++----- .../Models/Eft/Common/Location.cs | 4 +- .../Models/Eft/Common/LocationBase.cs | 44 +++++++++---------- .../Eft/ItemEvent/ItemEventRouterBase.cs | 2 +- .../Services/LocationLifecycleService.cs | 12 +++-- 7 files changed, 51 insertions(+), 53 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Generators/LocationLootGenerator.cs b/Libraries/SPTarkov.Server.Core/Generators/LocationLootGenerator.cs index cb97567c..306cecfc 100644 --- a/Libraries/SPTarkov.Server.Core/Generators/LocationLootGenerator.cs +++ b/Libraries/SPTarkov.Server.Core/Generators/LocationLootGenerator.cs @@ -104,7 +104,7 @@ public class LocationLootGenerator( /// List of container objects public List GenerateStaticContainers( string locationId, - Dictionary> staticAmmoDist + Dictionary> staticAmmoDist ) { var staticLootItemCount = 0; @@ -530,7 +530,7 @@ public class LocationLootGenerator( StaticContainerData staticContainer, IEnumerable? staticForced, Dictionary staticLootDist, - Dictionary> staticAmmoDist, + Dictionary> staticAmmoDist, string locationName ) { @@ -761,7 +761,7 @@ public class LocationLootGenerator( /// Array of spawn points with loot in them public List GenerateDynamicLoot( LooseLoot dynamicLootDist, - Dictionary> staticAmmoDist, + Dictionary> staticAmmoDist, string locationName ) { @@ -1024,7 +1024,7 @@ public class LocationLootGenerator( protected List GetForcedDynamicLoot( IEnumerable forcedSpawnPoints, string locationName, - Dictionary> staticAmmoDist + Dictionary> staticAmmoDist ) { var result = new List(); @@ -1097,7 +1097,7 @@ public class LocationLootGenerator( protected ContainerItem CreateDynamicLootItem( SptLootItem chosenItem, IEnumerable lootItems, - Dictionary> staticAmmoDist + Dictionary> staticAmmoDist ) { var chosenTpl = chosenItem.Template; @@ -1188,8 +1188,8 @@ public class LocationLootGenerator( // TODO: rewrite, BIG yikes protected ContainerItem? CreateStaticLootItem( - string chosenTpl, - Dictionary> staticAmmoDist, + MongoId chosenTpl, + Dictionary> staticAmmoDist, string? parentId = null ) { @@ -1310,7 +1310,7 @@ public class LocationLootGenerator( /// Root Item protected Item? CreateWeaponRootAndChildren( string chosenTpl, - Dictionary> cartridgePool, + Dictionary> cartridgePool, string? parentId, ref List items ) @@ -1427,7 +1427,7 @@ public class LocationLootGenerator( } protected void GenerateStaticMagazineItem( - Dictionary> staticAmmoDist, + Dictionary> staticAmmoDist, Item? rootItem, TemplateItem itemTemplate, List items diff --git a/Libraries/SPTarkov.Server.Core/Helpers/InRaidHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/InRaidHelper.cs index 8c3bf174..a1880386 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/InRaidHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/InRaidHelper.cs @@ -166,7 +166,7 @@ public class InRaidHelper( /// Used post-raid to remove items after death. /// /// Player profile - /// Session id + /// Player/Session id public void DeleteInventory(PmcData pmcData, MongoId sessionId) { // Get inventory item ids to remove from players profile @@ -179,7 +179,7 @@ public class InRaidHelper( } // Remove contents of fast panel - pmcData.Inventory.FastPanel = new Dictionary(); + pmcData.Inventory.FastPanel = new(); } /// diff --git a/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs index 6376d052..2db00564 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs @@ -1462,7 +1462,7 @@ public class ItemHelper( public void FillMagazineWithRandomCartridge( List magazine, TemplateItem magTemplate, - Dictionary> staticAmmoDist, + Dictionary> staticAmmoDist, string? caliber = null, double minSizePercent = 0.25, MongoId? defaultCartridgeTpl = null, @@ -1629,23 +1629,23 @@ public class ItemHelper( /// Tpl of cartridge protected MongoId? DrawAmmoTpl( string caliber, - Dictionary> staticAmmoDist, + Dictionary> staticAmmoDist, MongoId? fallbackCartridgeTpl = null, ICollection? cartridgeWhitelist = null ) { var ammos = staticAmmoDist.GetValueOrDefault(caliber, []); - if (ammos.Count == 0 && fallbackCartridgeTpl is not null) + if (!ammos.Any()) { - logger.Warning( - $"Unable to pick a cartridge for caliber: {caliber}, staticAmmoDist has no data. using fallback value of {fallbackCartridgeTpl}" - ); + if (fallbackCartridgeTpl is not null) + { + logger.Warning( + $"Unable to pick a cartridge for caliber: {caliber}, staticAmmoDist has no data. using fallback value of {fallbackCartridgeTpl}" + ); - return fallbackCartridgeTpl; - } + return fallbackCartridgeTpl; + } - if (ammos.Count == 0 && fallbackCartridgeTpl is null) - { logger.Warning( $"Unable to pick a cartridge for caliber: {caliber}, staticAmmoDist has no data. No fallback value provided" ); diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Location.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Location.cs index 877d3e1b..3000109e 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Location.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Location.cs @@ -34,7 +34,7 @@ public record Location public LazyLoad? StaticContainers { get; set; } [JsonPropertyName("staticAmmo")] - public Dictionary> StaticAmmo { get; set; } + public Dictionary> StaticAmmo { get; set; } /// /// All possible static containers on map + their assign groupings @@ -130,7 +130,7 @@ public record StaticContainerDetails public Dictionary? ExtensionData { get; set; } [JsonPropertyName("staticWeapons")] - public List StaticWeapons { get; set; } + public IEnumerable StaticWeapons { get; set; } [JsonPropertyName("staticContainers")] public IEnumerable StaticContainers { get; set; } diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/LocationBase.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/LocationBase.cs index 9f1c1dc4..3e8daf81 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/LocationBase.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/LocationBase.cs @@ -11,10 +11,10 @@ public record LocationBase public Dictionary? ExtensionData { get; set; } [JsonPropertyName("AccessKeys")] - public List? AccessKeys { get; set; } + public IEnumerable? AccessKeys { get; set; } [JsonPropertyName("AccessKeysPvE")] - public List? AccessKeysPvE { get; set; } + public IEnumerable? AccessKeysPvE { get; set; } [JsonPropertyName("AirdropParameters")] public List? AirdropParameters { get; set; } @@ -197,7 +197,7 @@ public record LocationBase public bool? Locked { get; set; } [JsonPropertyName("Loot")] - public List? Loot { get; set; } + public IEnumerable? Loot { get; set; } [JsonPropertyName("MatchMakerMinPlayersByWaitTime")] public List? MatchMakerMinPlayersByWaitTime { get; set; } @@ -281,7 +281,7 @@ public record LocationBase public bool? NoGroupSpawn { get; set; } [JsonPropertyName("SpawnPointParams")] - public List? SpawnPointParams { get; set; } + public IEnumerable? SpawnPointParams { get; set; } [JsonPropertyName("areas")] public Dictionary? Areas { get; set; } @@ -337,13 +337,13 @@ public record LocationBase public bool? OneTimeSpawn { get; set; } [JsonPropertyName("exits")] - public List Exits { get; set; } + public IEnumerable Exits { get; set; } [JsonPropertyName("filter_ex")] - public List? FilterEx { get; set; } + public IEnumerable? FilterEx { get; set; } [JsonPropertyName("limits")] - public List? Limits { get; set; } + public IEnumerable? Limits { get; set; } [JsonPropertyName("matching_min_seconds")] public int? MatchingMinSeconds { get; set; } @@ -352,7 +352,7 @@ public record LocationBase public bool? GenerateLocalLootCache { get; set; } [JsonPropertyName("maxItemCountInLocation")] - public List? MaxItemCountInLocation { get; set; } + public IEnumerable? MaxItemCountInLocation { get; set; } [JsonPropertyName("sav_summon_seconds")] public int? SavSummonSeconds { get; set; } @@ -361,7 +361,7 @@ public record LocationBase public int? TmpLocationFieldRemoveMe { get; set; } [JsonPropertyName("transits")] - public List? Transits { get; set; } + public IEnumerable? Transits { get; set; } [JsonPropertyName("users_gather_seconds")] public int? UsersGatherSeconds { get; set; } @@ -453,7 +453,7 @@ public record NonWaveGroupScenario public record Limit : MinMax { [JsonPropertyName("items")] - public List? Items { get; set; } + public IEnumerable? Items { get; set; } } public record AirdropParameter @@ -586,13 +586,13 @@ public record BossLocationSpawn [JsonIgnore(Condition = JsonIgnoreCondition.Never)] [JsonPropertyName("Supports")] - public List Supports { get; set; } + public IEnumerable Supports { get; set; } [JsonPropertyName("sptId")] public string? SptId { get; set; } [JsonPropertyName("SpawnMode")] - public List SpawnMode { get; set; } + public IEnumerable SpawnMode { get; set; } } public record BossSupport @@ -619,7 +619,7 @@ public record BotLocationModifier public double? AccuracySpeed { get; set; } [JsonPropertyName("AdditionalHostilitySettings")] - public List AdditionalHostilitySettings { get; set; } + public IEnumerable AdditionalHostilitySettings { get; set; } [JsonPropertyName("DistToActivate")] public double? DistanceToActivate { get; set; } @@ -703,10 +703,10 @@ public record AdditionalHostilitySettings public Dictionary? ExtensionData { get; set; } [JsonPropertyName("AlwaysEnemies")] - public List? AlwaysEnemies { get; set; } + public HashSet? AlwaysEnemies { get; set; } [JsonPropertyName("AlwaysFriends")] - public List? AlwaysFriends { get; set; } + public HashSet? AlwaysFriends { get; set; } [JsonPropertyName("BearEnemyChance")] public double? BearEnemyChance { get; set; } @@ -721,7 +721,7 @@ public record AdditionalHostilitySettings public List? ChancedEnemies { get; set; } [JsonPropertyName("Neutral")] - public List? Neutral { get; set; } + public HashSet? Neutral { get; set; } [JsonPropertyName("SavagePlayerBehaviour")] public string? SavagePlayerBehaviour { get; set; } @@ -736,7 +736,7 @@ public record AdditionalHostilitySettings public string? UsecPlayerBehaviour { get; set; } [JsonPropertyName("Warn")] - public List? Warn { get; set; } + public IEnumerable? Warn { get; set; } } public record ChancedEnemy @@ -802,7 +802,7 @@ public record SpawnPointParam public string? BotZoneName { get; set; } [JsonPropertyName("Categories")] - public List? Categories { get; set; } + public IEnumerable? Categories { get; set; } [JsonPropertyName("ColliderParams")] public ColliderParams? ColliderParams { get; set; } @@ -826,7 +826,7 @@ public record SpawnPointParam public double? Rotation { get; set; } [JsonPropertyName("Sides")] - public List? Sides { get; set; } + public IEnumerable? Sides { get; set; } } public record ColliderParams @@ -1022,7 +1022,7 @@ public record Wave /// 'pve' and/or 'regular' /// [JsonPropertyName("SpawnMode")] - public List? SpawnMode { get; set; } + public HashSet? SpawnMode { get; set; } [JsonPropertyName("OpenZones")] public string? OpenZones { get; set; } @@ -1056,7 +1056,7 @@ public record Halloween2024 public double? CrowdAttackBlockRadius { get; set; } [JsonPropertyName("CrowdAttackSpawnParams")] - public List? CrowdAttackSpawnParams { get; set; } + public IEnumerable? CrowdAttackSpawnParams { get; set; } [JsonPropertyName("CrowdCooldownPerPlayerSec")] public double? CrowdCooldownPerPlayerSec { get; set; } @@ -1130,7 +1130,7 @@ public record Area public XYZ? Position { get; set; } [JsonPropertyName("sides")] - public List? Sides { get; set; } + public HashSet? Sides { get; set; } [JsonPropertyName("size")] public XYZ? Size { get; set; } diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/ItemEvent/ItemEventRouterBase.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/ItemEvent/ItemEventRouterBase.cs index 32f78b92..22f87b0b 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Eft/ItemEvent/ItemEventRouterBase.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Eft/ItemEvent/ItemEventRouterBase.cs @@ -178,7 +178,7 @@ public record DeletedItem public Dictionary? ExtensionData { get; set; } [JsonPropertyName("_id")] - public string Id { get; set; } + public MongoId Id { get; set; } } /// diff --git a/Libraries/SPTarkov.Server.Core/Services/LocationLifecycleService.cs b/Libraries/SPTarkov.Server.Core/Services/LocationLifecycleService.cs index cd4f3296..44fc663a 100644 --- a/Libraries/SPTarkov.Server.Core/Services/LocationLifecycleService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/LocationLifecycleService.cs @@ -167,15 +167,13 @@ public class LocationLifecycleService( } // Find only scav extracts and overwrite existing exits with them - var scavExtracts = mapExtracts - .Where(extract => - string.Equals(extract.Side, "scav", StringComparison.OrdinalIgnoreCase) - ) - .ToList(); - if (scavExtracts.Count > 0) + var scavExtracts = mapExtracts.Where(extract => + string.Equals(extract.Side, "scav", StringComparison.OrdinalIgnoreCase) + ); + if (scavExtracts.Any()) // Scav extracts found, use them { - locationData.Exits.AddRange(scavExtracts); + locationData.Exits = locationData.Exits.Union(scavExtracts); } }