Files
SPT-Server-Build/Libraries/SPTarkov.Server.Core/Helpers/CounterTrackerHelper.cs
T
Jesse ebe8f9ded5 Mongoid changes (#440)
* Remove old IsValidMongoId and Regex

* Convert more configs to MongoId, as well as BaseClasses

* Remove HashUtil.Generate(), replaced with new MongoId()
2025-07-03 15:42:16 +01:00

48 lines
1.4 KiB
C#

using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Models.Common;
namespace SPTarkov.Server.Core.Helpers
{
[Injectable]
public class CounterTrackerHelper
{
private Dictionary<MongoId, int> _maxCounts = new();
private readonly Dictionary<MongoId, int> _trackedCounts = new();
/// <summary>
/// Add dictionary of keys and their matching limits to track
/// </summary>
/// <param name="maxCounts">Values to store</param>
public void AddDataToTrack(Dictionary<MongoId, int> maxCounts)
{
_maxCounts = maxCounts;
}
/// <summary>
/// Increment the counter for passed in key, get back value determining if max value passed
/// </summary>
/// <param name="key"></param>
/// <param name="countToIncrementBy"></param>
/// <returns>True = above max count</returns>
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();
}
}
}