From 1a4003595a32760a671ef2830a91f616e6d65f1b Mon Sep 17 00:00:00 2001 From: bluextx Date: Sat, 11 Jan 2025 07:41:15 +0300 Subject: [PATCH] Refactored loose loot processor to process single map --- .../MultithreadSteppedDumpProcessor.cs | 18 +- .../LooseLootProcessor/ILooseLootProcessor.cs | 7 +- .../LooseLootProcessor/LooseLootProcessor.cs | 278 +++++++++--------- 3 files changed, 151 insertions(+), 152 deletions(-) diff --git a/source/LootDumpProcessor/Process/Processor/DumpProcessor/MultithreadSteppedDumpProcessor.cs b/source/LootDumpProcessor/Process/Processor/DumpProcessor/MultithreadSteppedDumpProcessor.cs index 277591c..663971a 100644 --- a/source/LootDumpProcessor/Process/Processor/DumpProcessor/MultithreadSteppedDumpProcessor.cs +++ b/source/LootDumpProcessor/Process/Processor/DumpProcessor/MultithreadSteppedDumpProcessor.cs @@ -3,6 +3,7 @@ using LootDumpProcessor.Logger; using LootDumpProcessor.Model; using LootDumpProcessor.Model.Input; using LootDumpProcessor.Model.Output; +using LootDumpProcessor.Model.Output.LooseLoot; using LootDumpProcessor.Model.Output.StaticContainer; using LootDumpProcessor.Model.Processing; using LootDumpProcessor.Process.Processor.v2.AmmoProcessor; @@ -222,17 +223,22 @@ public class MultithreadSteppedDumpProcessor( if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Info)) LoggerFactory.GetInstance().Log("Processing loose loot distribution", LogLevel.Info); + // Loose loot distribution - var looseLootDistribution = _looseLootProcessor.CreateLooseLootDistribution( - dumpProcessData.MapCounts, - dumpProcessData.LooseLootCounts - ); - + var looseLoot = new ConcurrentDictionary(); + Parallel.ForEach(dumpProcessData.MapCounts.Keys, mapId => + { + var mapCount = dumpProcessData.MapCounts[mapId]; + var looseLootCount = dumpProcessData.LooseLootCounts[mapId]; + var looseLootDistribution = + _looseLootProcessor.CreateLooseLootDistribution(mapId, mapCount, looseLootCount); + looseLoot[mapId] = looseLootDistribution; + }); if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Info)) LoggerFactory.GetInstance().Log("Collecting loose loot distribution information", LogLevel.Info); var loot = dumpProcessData.MapCounts .Select(mapCount => mapCount.Key) - .ToDictionary(mi => mi, mi => looseLootDistribution[mi]); + .ToDictionary(mi => mi, mi => looseLoot[mi]); output.Add(OutputFileType.LooseLoot, loot); if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Info)) diff --git a/source/LootDumpProcessor/Process/Processor/v2/LooseLootProcessor/ILooseLootProcessor.cs b/source/LootDumpProcessor/Process/Processor/v2/LooseLootProcessor/ILooseLootProcessor.cs index edb54ee..5a6e637 100644 --- a/source/LootDumpProcessor/Process/Processor/v2/LooseLootProcessor/ILooseLootProcessor.cs +++ b/source/LootDumpProcessor/Process/Processor/v2/LooseLootProcessor/ILooseLootProcessor.cs @@ -9,9 +9,10 @@ namespace LootDumpProcessor.Process.Processor.v2.LooseLootProcessor { PreProcessedLooseLoot PreProcessLooseLoot(List