using UnityEngine; using UnityEngine.Events; namespace Common { public class TimerWrapper : MonoBehaviour { public UnityAction OnTimerOver; [SerializeField, Min(0)] private float startTime; [SerializeField] private bool countDown = true; [SerializeField] private bool startOnAwake; [SerializeField] private bool startOnStart; private Timer timer; public bool IsRunning => timer.IsRunning; public float CurrentTime => timer.CurrentTime; private void Awake() { timer = new Timer(startTime, countDown); timer.OnTimeOver += OnTimeOver; if (startOnAwake) timer.Start(); } private void Start() { if (startOnStart) timer.Start(); } private void Update() { timer.Tick(Time.deltaTime); } public void StartTimer() => timer.Start(); public void PauseTimer() => timer.Pause(); public void StopTimer() => timer.Stop(); public void ResetTimer() => timer.Reset(); private void OnTimeOver() => OnTimerOver?.Invoke(); } }