mirror of
https://github.com/Phantop/LADXHD.git
synced 2024-11-01 12:24:16 +00:00
74 lines
1.8 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|