From 2f962ef6dc404ae472dfeb5d3bd174fb29b9b7c8 Mon Sep 17 00:00:00 2001 From: Chomp Date: Thu, 7 Aug 2025 15:08:37 +0100 Subject: [PATCH] string to mongoId conversion --- Libraries/SPTarkov.Server.Core/Helpers/AssortHelper.cs | 10 +++++----- .../SPTarkov.Server.Core/Helpers/TraderAssortHelper.cs | 10 +++++----- .../Models/Eft/Common/Tables/Trader.cs | 2 +- .../SPTarkov.Server.Core/Models/Trader/ITrader.cs | 2 +- .../SPTarkov.Server.Core/Services/PostDbLoadService.cs | 3 ++- 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Helpers/AssortHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/AssortHelper.cs index 870fa062..0186744d 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/AssortHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/AssortHelper.cs @@ -25,7 +25,7 @@ public class AssortHelper(ISptLogger logger, ServerLocalisationSer PmcData pmcProfile, MongoId traderId, TraderAssort traderAssorts, - Dictionary> mergedQuestAssorts, + Dictionary> mergedQuestAssorts, bool isFlea = false ) { @@ -40,10 +40,10 @@ public class AssortHelper(ISptLogger logger, ServerLocalisationSer } // Iterate over all assorts, removing items that haven't yet been unlocked by quests (ASSORTMENT_UNLOCK) - foreach (var assortId in traderAssorts.LoyalLevelItems) + foreach (var (assortId, _) in traderAssorts.LoyalLevelItems) { // Get quest id that unlocks assort + statuses quest can be in to show assort - var unlockValues = GetQuestIdAndStatusThatShowAssort(mergedQuestAssorts, assortId.Key); + var unlockValues = GetQuestIdAndStatusThatShowAssort(mergedQuestAssorts, assortId); if (unlockValues is null) { continue; @@ -53,7 +53,7 @@ public class AssortHelper(ISptLogger logger, ServerLocalisationSer var questStatusInProfile = pmcProfile.GetQuestStatus(unlockValues.Value.Key); if (!unlockValues.Value.Value.Contains(questStatusInProfile)) { - strippedTraderAssorts = traderAssorts.RemoveItemFromAssort(assortId.Key, isFlea); + strippedTraderAssorts = traderAssorts.RemoveItemFromAssort(assortId, isFlea); } } @@ -67,7 +67,7 @@ public class AssortHelper(ISptLogger logger, ServerLocalisationSer /// Assort to look for linked quest id /// quest id + array of quest status the assort should show for protected KeyValuePair>? GetQuestIdAndStatusThatShowAssort( - Dictionary> mergedQuestAssorts, + Dictionary> mergedQuestAssorts, MongoId assortId ) { diff --git a/Libraries/SPTarkov.Server.Core/Helpers/TraderAssortHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/TraderAssortHelper.cs index d8ddd1b0..f176c50d 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/TraderAssortHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/TraderAssortHelper.cs @@ -24,8 +24,8 @@ public class TraderAssortHelper( ICloner cloner ) { - private Dictionary>? _mergedQuestAssorts; - protected virtual Dictionary> MergedQuestAssorts + private Dictionary>? _mergedQuestAssorts; + protected virtual Dictionary> MergedQuestAssorts { get { return _mergedQuestAssorts ??= HydrateMergedQuestAssorts(); } } @@ -135,9 +135,9 @@ public class TraderAssortHelper( /// Create a dictionary keyed by quest status (started/success) with every assortId to QuestId from every trader /// /// Dictionary - protected Dictionary> HydrateMergedQuestAssorts() + protected Dictionary> HydrateMergedQuestAssorts() { - var result = new Dictionary>(); + var result = new Dictionary>(); // Loop every trader var traders = databaseService.GetTraders(); @@ -158,7 +158,7 @@ public class TraderAssortHelper( } // Null guard - ensure Started/Success/fail exists - result.TryAdd(unlockStatus, new Dictionary()); + result.TryAdd(unlockStatus, new Dictionary()); foreach (var (assortId, questId) in assortToQuestDict) { diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Trader.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Trader.cs index b70ac800..8e10a4f4 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Trader.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Trader.cs @@ -21,7 +21,7 @@ public record Trader public Dictionary?> Dialogue { get; set; } [JsonPropertyName("questassort")] - public Dictionary>? QuestAssort { get; set; } + public Dictionary>? QuestAssort { get; set; } [JsonPropertyName("suits")] public List? Suits { get; set; } diff --git a/Libraries/SPTarkov.Server.Core/Models/Trader/ITrader.cs b/Libraries/SPTarkov.Server.Core/Models/Trader/ITrader.cs index 5d004f03..4b9e4f53 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Trader/ITrader.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Trader/ITrader.cs @@ -17,7 +17,7 @@ public abstract record ICustomTrader : ITrader public abstract TraderAssort? GetAssort(); - public abstract Dictionary>? GetQuestAssort(); + public abstract Dictionary>? GetQuestAssort(); public abstract TraderBase? GetBase(); diff --git a/Libraries/SPTarkov.Server.Core/Services/PostDbLoadService.cs b/Libraries/SPTarkov.Server.Core/Services/PostDbLoadService.cs index 0134261d..dccebad4 100644 --- a/Libraries/SPTarkov.Server.Core/Services/PostDbLoadService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/PostDbLoadService.cs @@ -1,5 +1,6 @@ using SPTarkov.DI.Annotations; using SPTarkov.Server.Core.Extensions; +using SPTarkov.Server.Core.Models.Common; using SPTarkov.Server.Core.Models.Eft.Common; using SPTarkov.Server.Core.Models.Enums; using SPTarkov.Server.Core.Models.Spt.Config; @@ -630,7 +631,7 @@ public class PostDbLoadService( } // Merge started/success/fail quest assorts into one dictionary - var mergedQuestAssorts = new Dictionary(); + var mergedQuestAssorts = new Dictionary(); mergedQuestAssorts = mergedQuestAssorts .Concat(traderData.QuestAssort["started"]) .Concat(traderData.QuestAssort["success"])