using SPTarkov.DI.Annotations; using SPTarkov.Server.Core.Models.Common; namespace SPTarkov.Server.Core.Helpers; [Injectable] public class CounterTrackerHelper { private Dictionary _maxCounts = new(); private readonly Dictionary _trackedCounts = new(); /// /// Add dictionary of keys and their matching limits to track /// /// Values to store public void AddDataToTrack(Dictionary maxCounts) { _maxCounts = maxCounts; } /// /// Increment the counter for passed in key, get back value determining if max value passed /// /// /// /// True = above max count public bool IncrementCount(MongoId key, int countToIncrementBy = 1) { // Not tracked, skip if (!_maxCounts.Any() || !_maxCounts.ContainsKey(key)) { return false; } _trackedCounts.TryAdd(key, 0); _trackedCounts[key] += countToIncrementBy; return _trackedCounts[key] > _maxCounts[key]; } public void Clear() { _trackedCounts.Clear(); _maxCounts.Clear(); } }