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;
		}
	}
}
