2026-02-06 19:04:39 +05:30
|
|
|
using System;
|
|
|
|
|
|
|
|
|
|
public class TimerSystem
|
|
|
|
|
{
|
|
|
|
|
private float timeRem;
|
|
|
|
|
private float maxTimeAvail;
|
|
|
|
|
|
|
|
|
|
private Action onTimerComplete = null;
|
2026-02-06 19:26:29 +05:30
|
|
|
private Action<float> onTimerInProgress = null;
|
2026-02-06 19:04:39 +05:30
|
|
|
public bool IsTimerComplete
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool IsInitialized
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
private set;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public TimerSystem()
|
|
|
|
|
{
|
|
|
|
|
IsTimerComplete = false;
|
|
|
|
|
}
|
|
|
|
|
|
2026-02-06 19:26:29 +05:30
|
|
|
public void Init(float maxTimeAvail, Action onComplete = null, Action<float> inProgress = null, Action onStart = null)
|
2026-02-06 19:04:39 +05:30
|
|
|
{
|
|
|
|
|
timeRem = 0;
|
|
|
|
|
IsTimerComplete = false;
|
|
|
|
|
IsInitialized = true;
|
|
|
|
|
|
|
|
|
|
this.maxTimeAvail = maxTimeAvail;
|
|
|
|
|
this.onTimerComplete = onComplete;
|
|
|
|
|
this.onTimerInProgress = inProgress;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void UpdateTimer(float deltaTime)
|
|
|
|
|
{
|
|
|
|
|
if (timeRem < maxTimeAvail)
|
|
|
|
|
{
|
|
|
|
|
timeRem += deltaTime;
|
2026-02-06 19:26:29 +05:30
|
|
|
onTimerInProgress?.Invoke(timeRem);
|
2026-02-06 19:04:39 +05:30
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
timeRem = 0;
|
|
|
|
|
onTimerComplete?.Invoke();
|
|
|
|
|
IsTimerComplete = true;
|
|
|
|
|
IsInitialized = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void KillTimer()
|
|
|
|
|
{
|
|
|
|
|
timeRem = 0;
|
|
|
|
|
IsTimerComplete = true;
|
|
|
|
|
IsInitialized = false;
|
|
|
|
|
|
|
|
|
|
onTimerComplete = null;
|
|
|
|
|
onTimerInProgress = null;
|
|
|
|
|
}
|
|
|
|
|
}
|