LuaNetworkVariables: idk

This commit is contained in:
NotAKidoS 2024-12-02 20:05:34 -06:00
parent db07d53971
commit fe768029eb
19 changed files with 1680 additions and 0 deletions

View file

@ -0,0 +1,60 @@
namespace NAK.LuaNetVars;
internal class LuaEventTracker
{
private class EventMetadata
{
public DateTime LastInvokeTime { get; set; }
public Dictionary<string, DateTime> LastInvokeTimePerSender { get; } = new();
}
private readonly Dictionary<string, EventMetadata> _eventMetadata = new();
public DateTime GetLastInvokeTime(string eventName)
{
if (!_eventMetadata.TryGetValue(eventName, out var metadata))
{
metadata = new EventMetadata();
_eventMetadata[eventName] = metadata;
}
return metadata.LastInvokeTime;
}
public DateTime GetLastInvokeTimeForSender(string eventName, string senderId)
{
if (!_eventMetadata.TryGetValue(eventName, out var metadata))
{
metadata = new EventMetadata();
_eventMetadata[eventName] = metadata;
}
if (!metadata.LastInvokeTimePerSender.TryGetValue(senderId, out DateTime time))
{
return DateTime.MinValue;
}
return time;
}
public void UpdateInvokeTime(string eventName, string senderId)
{
if (!_eventMetadata.TryGetValue(eventName, out EventMetadata metadata))
{
metadata = new EventMetadata();
_eventMetadata[eventName] = metadata;
}
DateTime now = DateTime.Now;
metadata.LastInvokeTime = now;
metadata.LastInvokeTimePerSender[senderId] = now;
}
public void Clear()
{
_eventMetadata.Clear();
}
public void ClearEvent(string eventName)
{
_eventMetadata.Remove(eventName);
}
}