string to mongoId conversion
This commit is contained in:
@@ -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"])
|
||||
|
||||
Reference in New Issue
Block a user