mirror of
https://github.com/ConjureETS/Unity_Utils.git
synced 2026-03-24 04:50:58 +00:00
61 lines
1.4 KiB
C#
61 lines
1.4 KiB
C#
using System;
|
|
|
|
namespace JohnsonUtils.Common
|
|
{
|
|
public class Timer
|
|
{
|
|
public event Action OnTimeOver;
|
|
|
|
public bool IsRunning { get; private set; }
|
|
|
|
public float CurrentTime { get; private set; }
|
|
|
|
private readonly float _startingTime;
|
|
private readonly bool _isCountDown;
|
|
private bool _isEnabled;
|
|
|
|
public Timer(float startTime, bool countDown = true)
|
|
{
|
|
IsRunning = false;
|
|
_isEnabled = true;
|
|
_startingTime = startTime;
|
|
_isCountDown = countDown;
|
|
Init();
|
|
}
|
|
|
|
private void Init()
|
|
{
|
|
CurrentTime = _startingTime;
|
|
}
|
|
|
|
public void Tick(float dt)
|
|
{
|
|
if (!IsRunning || !_isEnabled) return;
|
|
|
|
CurrentTime += _isCountDown ? -dt : dt;
|
|
|
|
if (CurrentTime < 0)
|
|
{
|
|
CurrentTime = 0;
|
|
IsRunning = false;
|
|
_isEnabled = false;
|
|
OnTimeOver?.Invoke();
|
|
}
|
|
}
|
|
|
|
public void Reset()
|
|
{
|
|
_isEnabled = true;
|
|
CurrentTime = _isCountDown ? _startingTime : 0;
|
|
}
|
|
|
|
public void Start() => IsRunning = true;
|
|
public void Pause() => IsRunning = false;
|
|
public void Stop()
|
|
{
|
|
IsRunning = false;
|
|
_isEnabled = false;
|
|
CurrentTime = 0;
|
|
}
|
|
}
|
|
} |