示例#1
0
        public void Execute()
        {
            _timerWasRunning            = _timeService.TimerIsRunning;
            _eventDispatchingWasEnabled = _timeService.EventDispatchingEnabled;
            _previousState = _raceInstance.State;

            _timeService.DisableEventDispatching();
            _timeService.StopGameTimer();
            _raceInstance.ChangeState(new PausedState());
            _raceInstance.Notify();
        }
示例#2
0
        public void HandleInput_SetsErrorState_WhenInRunningStateAndUserInputIsInvalid(char letter)
        {
            _typingRaceState = new RunningState();
            _typingRaceState.SetCommandInvoker(_commandInvoker);
            _typingRaceState.SetTimeService(_timeService);
            _typingRaceState.SetTypingRaceInstance(_raceInstance);
            _typingRaceState.SetRenderer(_gameRenderer);

            _typingRaceState.HandleInput(new ConsoleKeyInfo(letter, ConsoleKey.T, false, false, false));

            _raceInstance.State.GetType().ShouldBe(typeof(ErrorState));
        }
        public void ChangeState(TypingRaceState state)
        {
            if (state == null)
            {
                throw new ArgumentNullException();
            }

            State = state;
            State.SetCommandInvoker(_invoker);
            State.SetTimeService(_timeService);
            State.SetRenderer(_gameRenderer);
            State.SetTypingRaceInstance(this);
        }
示例#4
0
        public void HandleInput_DeletesInput_WhenStateIsErrorAndCharIsSpacebar(char letter)
        {
            _typingRaceState = new ErrorState();
            _typingRaceState.SetCommandInvoker(_commandInvoker);
            _typingRaceState.SetTimeService(_timeService);
            _typingRaceState.SetTypingRaceInstance(_raceInstance);
            _typingRaceState.SetRenderer(_gameRenderer);

            _typingRaceState.HandleInput(new ConsoleKeyInfo(letter, ConsoleKey.T, false, false, false));
            _typingRaceState.HandleInput(new ConsoleKeyInfo('\b', ConsoleKey.Backspace, false, false, false));

            _raceInstance.UserInput.ShouldBe(string.Empty);
        }
 public void Execute()
 {
     _previousState = _typingRaceInstance.State;
     _typingRaceInstance.ChangeState(_state);
 }
 public TypingRaceStateChangeCommand(ITypingRaceInstance typingRaceInstance, TypingRaceState state)
 {
     _typingRaceInstance = typingRaceInstance;
     _state = state;
 }
示例#7
0
 public void Update(TypingRaceState typingRaceState)
 => Console.Clear();