Files
BH3/Assets/Scripts/Assembly-CSharp/MoleMole/CanvasTimer.cs
2025-08-13 09:26:42 +08:00

92 lines
1.3 KiB
C#

using System;
using UnityEngine;
namespace MoleMole
{
public class CanvasTimer
{
public float timespan;
public float triggerCD;
public Action timeUpCallback;
public Action timeTriggerCallback;
public bool infiniteTimeSpan;
private float _timer;
private float _triggerTimer;
private bool isRunning;
public bool IsTimeUp { get; private set; }
public CanvasTimer()
{
_triggerTimer = 0f;
_timer = 0f;
IsTimeUp = false;
isRunning = true;
}
public void Destroy()
{
IsTimeUp = true;
timeUpCallback = null;
timeTriggerCallback = null;
}
public void StartRun(bool reset = false)
{
isRunning = true;
if (reset)
{
_triggerTimer = 0f;
_timer = 0f;
IsTimeUp = false;
}
}
public void StopRun()
{
isRunning = false;
}
public void Core()
{
if (IsTimeUp || !isRunning)
{
return;
}
if (!infiniteTimeSpan)
{
_timer += Time.deltaTime;
if (_timer > timespan)
{
_timer = timespan;
IsTimeUp = true;
if (timeUpCallback != null)
{
timeUpCallback();
}
}
}
if (!(triggerCD > 0f))
{
return;
}
if (_triggerTimer > triggerCD)
{
_triggerTimer -= triggerCD;
if (timeTriggerCallback != null)
{
timeTriggerCallback();
}
}
_triggerTimer += Time.deltaTime;
}
}
}