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
|
else
|
||||||
{
|
{
|
||||||
// .Item1 = map name
|
|
||||||
// .Item2 = force/weapon static arrays
|
|
||||||
var mapStaticContainers =
|
var mapStaticContainers =
|
||||||
_staticContainersProcessor.CreateStaticWeaponsAndForcedContainers(dataDump);
|
_staticContainersProcessor.CreateStaticWeaponsAndForcedContainers(dataDump);
|
||||||
|
|
||||||
var newStaticWeapons = mapStaticContainers.Item2.StaticWeapons.Where(x =>
|
var newStaticWeapons = mapStaticContainers.StaticWeapons.Where(x =>
|
||||||
!mapStaticLoot.StaticWeapons.Exists(y => y.Id == x.Id));
|
!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.StaticForced.Exists(y => y.ContainerId == x.ContainerId));
|
||||||
|
|
||||||
mapStaticLoot.StaticWeapons.AddRange(newStaticWeapons);
|
mapStaticLoot.StaticWeapons.AddRange(newStaticWeapons);
|
||||||
|
@ -6,6 +6,6 @@ namespace LootDumpProcessor.Process.Processor.v2.StaticContainersProcessor;
|
|||||||
|
|
||||||
public interface IStaticContainersProcessor
|
public interface IStaticContainersProcessor
|
||||||
{
|
{
|
||||||
(string, MapStaticLoot) CreateStaticWeaponsAndForcedContainers(RootData rawMapDump);
|
MapStaticLoot CreateStaticWeaponsAndForcedContainers(RootData rawMapDump);
|
||||||
IReadOnlyList<Template> CreateDynamicStaticContainers(RootData rawMapDump);
|
IReadOnlyList<Template> CreateDynamicStaticContainers(RootData rawMapDump);
|
||||||
}
|
}
|
@ -3,15 +3,17 @@ using LootDumpProcessor.Model.Input;
|
|||||||
using LootDumpProcessor.Model.Output.StaticContainer;
|
using LootDumpProcessor.Model.Output.StaticContainer;
|
||||||
using LootDumpProcessor.Utils;
|
using LootDumpProcessor.Utils;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
using LootDumpProcessor;
|
||||||
|
using LootDumpProcessor.Process.Processor.v2.StaticContainersProcessor;
|
||||||
|
|
||||||
namespace LootDumpProcessor.Process.Processor.v2.StaticContainersProcessor;
|
public class StaticContainersProcessor : IStaticContainersProcessor
|
||||||
|
|
||||||
public class StaticContainersProcessor(ILogger<StaticContainersProcessor> logger)
|
|
||||||
: 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 locationLoot = rawMapDump.Data.LocationLoot;
|
||||||
var mapId = locationLoot.Id.ToLower();
|
var mapId = locationLoot.Id.ToLower();
|
||||||
@ -30,10 +32,11 @@ public class StaticContainersProcessor(ILogger<StaticContainersProcessor> logger
|
|||||||
continue;
|
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);
|
var copiedLoot = ProcessorUtil.Copy(lootPosition);
|
||||||
staticWeapons.Add(copiedLoot);
|
staticWeapons.Add(copiedLoot);
|
||||||
_logger.LogDebug("Added static weapon with ID {WeaponId} to Map {MapId}.", copiedLoot.Id, mapId);
|
_logger.LogDebug("Added static weapon with ID {WeaponId} to Map {MapId}.", copiedLoot.Id, mapId);
|
||||||
@ -50,7 +53,7 @@ public class StaticContainersProcessor(ILogger<StaticContainersProcessor> logger
|
|||||||
};
|
};
|
||||||
|
|
||||||
_logger.LogInformation("Created static weapons and forced containers for Map {MapId}.", mapId);
|
_logger.LogInformation("Created static weapons and forced containers for Map {MapId}.", mapId);
|
||||||
return (mapId, mapStaticLoot);
|
return mapStaticLoot;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IReadOnlyList<Template> CreateDynamicStaticContainers(RootData rawMapDump)
|
public IReadOnlyList<Template> CreateDynamicStaticContainers(RootData rawMapDump)
|
||||||
@ -62,14 +65,14 @@ public class StaticContainersProcessor(ILogger<StaticContainersProcessor> logger
|
|||||||
|
|
||||||
foreach (var container in dynamicContainers)
|
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);
|
_logger.LogWarning("Dynamic container with ID {ContainerId} has no items.", container.Id);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var firstItem = container.Items.First();
|
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);
|
_logger.LogDebug("Retained only the first item in dynamic container with ID {ContainerId}.", container.Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user