using System; using System.Collections; using Cute; using UnityEngine; public class ConnectionReporter { private const float DEFAULT_INTERVAL = 10f; private Coroutine coroutine; private readonly MonoBehaviour runner; private readonly Action report; private readonly float interval; public ConnectionReporter(MonoBehaviour runner, Action report, float interval = 10f) { this.runner = runner; this.report = report; this.interval = interval; } public void StopReporter() { if (coroutine != null) { runner.StopCoroutine(coroutine); coroutine = null; } } public void StartReporter() { if (coroutine == null && runner != null) { coroutine = runner.StartCoroutine(LoopCoroutine()); } } private IEnumerator LoopCoroutine() { WaitForSeconds secondWait = new WaitForSeconds(interval); while (true) { report.Call(); yield return secondWait; } } }