
The purpose of this small project is to show my programming skills.
Some code snip
public class TimeManager : ITimeManager
{
public event EventHandler OnTimeUpdate;
public event EventHandler OnTimesUp;
private int _timeToEnd;
private int TimeToEnd
{
get => _timeToEnd;
set
{
_timeToEnd = value;
OnTimeUpdate?.Invoke(this, new OnTimeUpdateEventArgs{ TimeToEnd = _timeToEnd});
}
}
private IDataManager _dataManager;
public TimeManager(IDataManager dataManager)
{
_dataManager = dataManager;
}
private bool _isRunning;
public void StartGame()
{
if (!_isRunning)
{
_isRunning = true;
TimeToEnd = _dataManager.GameplayTimeInSeconds;
Counting().Forget();
}
}
private async UniTask Counting()
{
while (TimeToEnd > 0 && _isRunning)
{
await UniTask.Delay(1000); //wait one second
TimeToEnd -= 1;
}
_isRunning = false;
OnTimesUp?.Invoke(this, EventArgs.Empty);
}
}