mirror of
https://github.com/sp-tarkov/loot-dump-processor.git
synced 2025-02-13 03:10:46 -05:00
Refactored static containers processor to process single map
This commit is contained in:
parent
0af0c9f9c3
commit
8366915048
@ -105,14 +105,12 @@ public class MultithreadSteppedDumpProcessor(
|
||||
}
|
||||
else
|
||||
{
|
||||
// .Item1 = map name
|
||||
// .Item2 = force/weapon static arrays
|
||||
var mapStaticContainers =
|
||||
_staticContainersProcessor.CreateStaticWeaponsAndForcedContainers(dataDump);
|
||||
|
||||
var newStaticWeapons = mapStaticContainers.Item2.StaticWeapons.Where(x =>
|
||||
var newStaticWeapons = mapStaticContainers.StaticWeapons.Where(x =>
|
||||
!mapStaticLoot.StaticWeapons.Exists(y => y.Id == x.Id));
|
||||
var newStaticForced = mapStaticContainers.Item2.StaticForced.Where(x =>
|
||||
var newStaticForced = mapStaticContainers.StaticForced.Where(x =>
|
||||
!mapStaticLoot.StaticForced.Exists(y => y.ContainerId == x.ContainerId));
|
||||
|
||||
mapStaticLoot.StaticWeapons.AddRange(newStaticWeapons);
|
||||
|
@ -6,6 +6,6 @@ namespace LootDumpProcessor.Process.Processor.v2.StaticContainersProcessor;
|
||||
|
||||
public interface IStaticContainersProcessor
|
||||
{
|
||||
(string, MapStaticLoot) CreateStaticWeaponsAndForcedContainers(RootData rawMapDump);
|
||||
MapStaticLoot CreateStaticWeaponsAndForcedContainers(RootData rawMapDump);
|
||||
IReadOnlyList<Template> CreateDynamicStaticContainers(RootData rawMapDump);
|
||||
}
|
@ -3,15 +3,17 @@ using LootDumpProcessor.Model.Input;
|
||||
using LootDumpProcessor.Model.Output.StaticContainer;
|
||||
using LootDumpProcessor.Utils;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using LootDumpProcessor;
|
||||
using LootDumpProcessor.Process.Processor.v2.StaticContainersProcessor;
|
||||
|
||||
namespace LootDumpProcessor.Process.Processor.v2.StaticContainersProcessor;
|
||||
|
||||
public class StaticContainersProcessor(ILogger<StaticContainersProcessor> logger)
|
||||
: IStaticContainersProcessor
|
||||
public class StaticContainersProcessor : IStaticContainersProcessor
|
||||
{
|
||||
private readonly ILogger<StaticContainersProcessor> _logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
||||
private readonly ILogger<StaticContainersProcessor> _logger;
|
||||
|
||||
public (string, MapStaticLoot) CreateStaticWeaponsAndForcedContainers(RootData rawMapDump)
|
||||
public StaticContainersProcessor(ILogger<StaticContainersProcessor> logger)
|
||||
=> _logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
||||
|
||||
public MapStaticLoot CreateStaticWeaponsAndForcedContainers(RootData rawMapDump)
|
||||
{
|
||||
var locationLoot = rawMapDump.Data.LocationLoot;
|
||||
var mapId = locationLoot.Id.ToLower();
|
||||
@ -30,9 +32,10 @@ public class StaticContainersProcessor(ILogger<StaticContainersProcessor> logger
|
||||
continue;
|
||||
}
|
||||
|
||||
var firstItemTpl = lootPosition.Items[0].Tpl;
|
||||
var firstItemTpl = lootPosition.Items.First().Tpl;
|
||||
|
||||
if (!LootDumpProcessorContext.GetStaticWeaponIds().Contains(firstItemTpl)) continue;
|
||||
if (!LootDumpProcessorContext.GetStaticWeaponIds().Contains(firstItemTpl))
|
||||
continue;
|
||||
|
||||
var copiedLoot = ProcessorUtil.Copy(lootPosition);
|
||||
staticWeapons.Add(copiedLoot);
|
||||
@ -50,7 +53,7 @@ public class StaticContainersProcessor(ILogger<StaticContainersProcessor> logger
|
||||
};
|
||||
|
||||
_logger.LogInformation("Created static weapons and forced containers for Map {MapId}.", mapId);
|
||||
return (mapId, mapStaticLoot);
|
||||
return mapStaticLoot;
|
||||
}
|
||||
|
||||
public IReadOnlyList<Template> CreateDynamicStaticContainers(RootData rawMapDump)
|
||||
@ -62,14 +65,14 @@ public class StaticContainersProcessor(ILogger<StaticContainersProcessor> logger
|
||||
|
||||
foreach (var container in dynamicContainers)
|
||||
{
|
||||
if (container.Items == null || container.Items.Count == 0)
|
||||
if (container.Items == null || !container.Items.Any())
|
||||
{
|
||||
_logger.LogWarning("Dynamic container with ID {ContainerId} has no items.", container.Id);
|
||||
continue;
|
||||
}
|
||||
|
||||
var firstItem = container.Items.First();
|
||||
container.Items = [firstItem];
|
||||
container.Items = new List<Item> { firstItem };
|
||||
_logger.LogDebug("Retained only the first item in dynamic container with ID {ContainerId}.", container.Id);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user