forked from aly/qstbak
49 lines
1.4 KiB
C#
49 lines
1.4 KiB
C#
using System;
|
|
|
|
namespace LLib;
|
|
|
|
public struct Throttle
|
|
{
|
|
private long _nextAllowedMs;
|
|
|
|
public readonly bool IsReady => _200F_202C_200C_202E_206A_206F_206E_206D_206C_202E_202E_202D_200B_206E_200D_200F_206F_202C_200D_200F_206C_200D_202E_206C_200D_202E_200C_206E_202A_206B_202E_202E_202C_206A_202E_200D_200E_206D_202D_206A_202E() >= _nextAllowedMs;
|
|
|
|
public bool TryReset(double cooldownSeconds)
|
|
{
|
|
long num = _200F_202C_200C_202E_206A_206F_206E_206D_206C_202E_202E_202D_200B_206E_200D_200F_206F_202C_200D_200F_206C_200D_202E_206C_200D_202E_200C_206E_202A_206B_202E_202E_202C_206A_202E_200D_200E_206D_202D_206A_202E();
|
|
int num2 = ((num >= _nextAllowedMs) ? (-1425131609) : (-1425131610));
|
|
while (true)
|
|
{
|
|
int num3 = num2;
|
|
int num4 = -1425131609;
|
|
int num5 = num3;
|
|
switch ((num5 | num4) - (num5 & num4))
|
|
{
|
|
case 0:
|
|
{
|
|
long num6 = (long)(cooldownSeconds * 1000.0);
|
|
long num7 = num;
|
|
_nextAllowedMs = (num7 | num6) + (num7 & num6);
|
|
return true;
|
|
}
|
|
case 1:
|
|
return false;
|
|
case 2:
|
|
goto IL_0073;
|
|
}
|
|
continue;
|
|
IL_0073:
|
|
num2 = -1425131610;
|
|
}
|
|
}
|
|
|
|
public void Clear()
|
|
{
|
|
_nextAllowedMs = 0L;
|
|
}
|
|
|
|
static long _200F_202C_200C_202E_206A_206F_206E_206D_206C_202E_202E_202D_200B_206E_200D_200F_206F_202C_200D_200F_206C_200D_202E_206C_200D_202E_200C_206E_202A_206B_202E_202E_202C_206A_202E_200D_200E_206D_202D_206A_202E()
|
|
{
|
|
return Environment.TickCount64;
|
|
}
|
|
}
|