mirror of
https://github.com/sp-tarkov/loot-dump-processor.git
synced 2025-02-13 09:10:45 -05:00
29 lines
1.1 KiB
C#
29 lines
1.1 KiB
C#
using System.Globalization;
|
|
using LootDumpProcessor.Model;
|
|
using LootDumpProcessor.Model.Processing;
|
|
|
|
namespace LootDumpProcessor.Process;
|
|
|
|
public class ComposedKeyGenerator(ITarkovItemsProvider tarkovItemsProvider, IKeyGenerator keyGenerator)
|
|
: IComposedKeyGenerator
|
|
{
|
|
private readonly ITarkovItemsProvider _tarkovItemsProvider =
|
|
tarkovItemsProvider ?? throw new ArgumentNullException(nameof(tarkovItemsProvider));
|
|
|
|
private readonly IKeyGenerator
|
|
_keyGenerator = keyGenerator ?? throw new ArgumentNullException(nameof(keyGenerator));
|
|
|
|
public ComposedKey Generate(IReadOnlyList<Item>? items)
|
|
{
|
|
var key = items?.Select(i => i.Tpl)
|
|
.Where(i => !string.IsNullOrEmpty(i) &&
|
|
!_tarkovItemsProvider.IsBaseClass(i, BaseClasses.Ammo))
|
|
.Cast<string>()
|
|
.Select(i => (double)i.GetHashCode())
|
|
.Sum()
|
|
.ToString(CultureInfo.InvariantCulture) ?? _keyGenerator.Generate();
|
|
var firstItem = items?[0];
|
|
|
|
return new ComposedKey(key, firstItem);
|
|
}
|
|
} |