private async void StartTimer() { var now = DateTime.Now; if (_expirationTime < now) { throw new ArgumentException("ExpirationTime has already expired"); } var timeLeft = _expirationTime - now; await Task.Delay(timeLeft); Expired = true; OnTimerExpired?.Invoke(this); }
protected IEnumerator TimeoutTimer(float timeRemaining) { if (timeRemaining == -1) { yield break; // -1 represents indefinite role } TimeRemaining = timeRemaining; while (TimeRemaining > 0) { TimeRemaining -= Time.deltaTime; yield return(WaitFor.EndOfFrame); } if (this is GhostRoleServer && TimeRemaining == -2) // -2 represents role prematurely ended { yield break; // Don't invoke OnTimerExpired for premature endings } OnTimerExpired?.Invoke(); }
public void Initialize() { isTimer = false; OnTimerExpired = new OnTimerExpired(); }