Skip to content

Instantly share code, notes, and snippets.

@verborghs
Created October 29, 2019 13:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save verborghs/699320b73a7ebde2ad69e60c322eded1 to your computer and use it in GitHub Desktop.
Save verborghs/699320b73a7ebde2ad69e60c322eded1 to your computer and use it in GitHub Desktop.
TimedQueue
public class TimedQueue
{
private float _dequeueTimer;
private readonly float _dequeueDelay;
private float _emptyTimer;
private readonly float _emptyDelay;
private readonly Queue<string> _messageQueue = new Queue<string>();
public TimedQueue( float dequeueDelay = 0.5f, float emptyDelay = 2.0f)
{
_dequeueDelay = dequeueDelay;
_dequeueTimer = dequeueDelay + 0.1f;
_emptyDelay = emptyDelay;
_emptyTimer = _emptyDelay + 0.1f;
}
public void Update(float deltaTime)
{
if (_messageQueue.Count > 0)
{
_emptyTimer = 0;
if (_dequeueTimer > _dequeueDelay)
{
// Notify the user that we have (_messageQueue.Dequeue()) ready
_dequeueTimer = 0;
}
_dequeueTimer += deltaTime;
}
else
{
if (_emptyTimer < _emptyDelay)
{
_emptyTimer += deltaTime;
if (_emptyTimer > _emptyDelay)
{
//Notify the user the queue is empty
}
}
}
}
public void Enqueue(string t)
{
_messageQueue.Enqueue(t);
_emptyTimer = 0.0f;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment