LADXHD/InGame/GameObjects/Base/Components/AI/AiTriggerCountdown.cs
2023-12-14 17:21:22 -05:00

74 lines
1.8 KiB
C#

namespace ProjectZ.InGame.GameObjects.Base.Components.AI
{
class AiTriggerCountdown : AiTrigger
{
public delegate void TriggerFunction(double counter);
public delegate void TriggerEndFunction();
public TriggerFunction TickFunction;
public TriggerEndFunction CountdownEnd;
public double CurrentTime;
public int StartTime;
public bool ResetAfterEnd;
private bool _initRunningState;
private bool _isRunning;
public AiTriggerCountdown(int startTime, TriggerFunction tickFunction, TriggerEndFunction countdownEnd, bool initRunningState = true)
{
StartTime = startTime;
TickFunction = tickFunction;
CountdownEnd = countdownEnd;
_initRunningState = initRunningState;
}
public override void OnInit()
{
CurrentTime = StartTime;
_isRunning = _initRunningState;
}
public override void Update()
{
if (!_isRunning)
return;
CurrentTime -= Game1.DeltaTime;
if (CurrentTime <= 0)
{
_isRunning = false;
CountdownEnd?.Invoke();
if (ResetAfterEnd)
OnInit();
}
else
TickFunction?.Invoke(CurrentTime);
}
public bool IsRunning()
{
return _isRunning;
}
public void Restart()
{
CurrentTime = StartTime;
_isRunning = true;
}
public void Start()
{
_isRunning = true;
}
public void Stop()
{
_isRunning = false;
}
}
}