string to mongoId conversion

This commit is contained in:
Chomp
2025-08-07 15:08:37 +01:00
parent efe9472f8b
commit 2f962ef6dc
5 changed files with 14 additions and 13 deletions
@@ -25,7 +25,7 @@ public class AssortHelper(ISptLogger<AssortHelper> logger, ServerLocalisationSer
PmcData pmcProfile,
MongoId traderId,
TraderAssort traderAssorts,
Dictionary<string, Dictionary<MongoId, string>> mergedQuestAssorts,
Dictionary<string, Dictionary<MongoId, MongoId>> mergedQuestAssorts,
bool isFlea = false
)
{
@@ -40,10 +40,10 @@ public class AssortHelper(ISptLogger<AssortHelper> 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<AssortHelper> 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<AssortHelper> logger, ServerLocalisationSer
/// <param name="assortId">Assort to look for linked quest id</param>
/// <returns>quest id + array of quest status the assort should show for</returns>
protected KeyValuePair<MongoId, HashSet<QuestStatusEnum>>? GetQuestIdAndStatusThatShowAssort(
Dictionary<string, Dictionary<MongoId, string>> mergedQuestAssorts,
Dictionary<string, Dictionary<MongoId, MongoId>> mergedQuestAssorts,
MongoId assortId
)
{
@@ -24,8 +24,8 @@ public class TraderAssortHelper(
ICloner cloner
)
{
private Dictionary<string, Dictionary<MongoId, string>>? _mergedQuestAssorts;
protected virtual Dictionary<string, Dictionary<MongoId, string>> MergedQuestAssorts
private Dictionary<string, Dictionary<MongoId, MongoId>>? _mergedQuestAssorts;
protected virtual Dictionary<string, Dictionary<MongoId, MongoId>> 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
/// </summary>
/// <returns>Dictionary</returns>
protected Dictionary<string, Dictionary<MongoId, string>> HydrateMergedQuestAssorts()
protected Dictionary<string, Dictionary<MongoId, MongoId>> HydrateMergedQuestAssorts()
{
var result = new Dictionary<string, Dictionary<MongoId, string>>();
var result = new Dictionary<string, Dictionary<MongoId, MongoId>>();
// 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<MongoId, string>());
result.TryAdd(unlockStatus, new Dictionary<MongoId, MongoId>());
foreach (var (assortId, questId) in assortToQuestDict)
{
@@ -21,7 +21,7 @@ public record Trader
public Dictionary<string, List<string>?> Dialogue { get; set; }
[JsonPropertyName("questassort")]
public Dictionary<string, Dictionary<string, string>>? QuestAssort { get; set; }
public Dictionary<string, Dictionary<MongoId, MongoId>>? QuestAssort { get; set; }
[JsonPropertyName("suits")]
public List<Suit>? Suits { get; set; }
@@ -17,7 +17,7 @@ public abstract record ICustomTrader : ITrader
public abstract TraderAssort? GetAssort();
public abstract Dictionary<string, Dictionary<string, string>>? GetQuestAssort();
public abstract Dictionary<string, Dictionary<MongoId, MongoId>>? GetQuestAssort();
public abstract TraderBase? GetBase();
@@ -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<string, string>();
var mergedQuestAssorts = new Dictionary<MongoId, MongoId>();
mergedQuestAssorts = mergedQuestAssorts
.Concat(traderData.QuestAssort["started"])
.Concat(traderData.QuestAssort["success"])