Ejemplo n.º 1
0
    private async Task StartGameLoopUpdateAsync(CancellationToken cancelToken)
    {
        while (!_player.MainPerson.GetModule <ISurvivalModule>().IsDead)
        {
            cancelToken.ThrowIfCancellationRequested();

            try
            {
                await _player.Globe.UpdateAsync();
            }
            catch (Exception exception)
            {
                Debug.LogError(exception);
                return;
            }

            ClearupActionUiState();

            var animationBlockerTask = _commandBlockerService.WaitBlockersAsync();
            var fuseDelayTask        = Task.Delay(10_000);

            await Task.WhenAny(animationBlockerTask, fuseDelayTask);

            _commandBlockerService.DropBlockers();
        }
    }
Ejemplo n.º 2
0
        private async Task StartGameLoopUpdateAsync(CancellationToken cancelToken)
        {
            while (_gameLoopContext.HasNextIteration)
            {
                cancelToken.ThrowIfCancellationRequested();

                try
                {
                    await _gameLoopContext.UpdateAsync(cancelToken);
                }
                catch (Exception exception)
                {
                    ErrorOccured?.Invoke(this, new ErrorOccuredEventArgs(exception));
                }

                var animationBlockerTask = _animationBlockerService.WaitBlockersAsync();
                var fuseDelayTask        = Task.Delay(10_000, cancelToken);

                await Task.WhenAny(animationBlockerTask, fuseDelayTask).ConfigureAwait(false);

                _animationBlockerService.DropBlockers();
            }
        }