Files
elf-game/Assets/Scripts/Core/Systems/TimeAttackSystem.cs

51 lines
1.2 KiB
C#

using System;
namespace Core.Systems
{
public class TimeAttackSystem : IDisposable
{
private float _timeRemaining;
private readonly float _penaltyPerDrop;
public TimeAttackSystem(float initialTime, float penaltyPerDrop = 5f)
{
_timeRemaining = initialTime;
_penaltyPerDrop = penaltyPerDrop;
GameEvents.ReportTimeUpdated(_timeRemaining);
GameEvents.PresentDropped += OnPresentDropped;
}
public void Tick(float deltaTime)
{
if (_timeRemaining <= 0) return;
_timeRemaining -= deltaTime;
if (_timeRemaining <= 0)
{
_timeRemaining = 0;
GameEvents.ReportTimeUpdated(0f);
GameEvents.ReportGameOver();
}
else
{
GameEvents.ReportTimeUpdated(_timeRemaining);
}
}
private void OnPresentDropped()
{
if (_timeRemaining > 0)
{
_timeRemaining -= _penaltyPerDrop;
}
}
public void Dispose()
{
GameEvents.PresentDropped -= OnPresentDropped;
}
}
}