using System;
using Stary.Evo;
using UnityEngine;
using UnityEngine.Serialization;
namespace Stary.Evo
{
public class TimerController : MonoBehaviour, IController
{
public string TimerName => gameObject.name;
private bool isStart = false;
///
/// 持续时间
///
private float timeDuration;
///
/// 时间到达的事件
///
private Action onArrivalTimeComplete;
///
/// 持续时间最大阈值
///
public float timeDurationMax;
public void StartTimer(float timeDurationMax, Action onArrivalTimeComplete)
{
this.timeDurationMax = timeDurationMax;
this.onArrivalTimeComplete = onArrivalTimeComplete;
timeDuration = 0;
isStart = true;
}
private void Update()
{
if (isStart)
{
timeDuration += Time.deltaTime;
if (timeDuration >= timeDurationMax)
{
onArrivalTimeComplete?.Invoke();
this.GetSystem().RemoveTimer(TimerName);
}
}
}
public IArchitecture GetArchitecture()
{
ITimerSystem system = this.GetSystem();
return system.GetArchitecture();
}
}
}