internal GameQuestion Move(IRollDice dice, int playerId)
        {
            CheckPlayable();
            CheckPlayerTurn(playerId);
            CurrentPlayer.CheckCanMove();

            var          diceRoll      = dice.Roll();
            GameQuestion questionToAsk = null;

            if (CurrentPlayer.CannotGoOutOfPenaltyBox(diceRoll))
            {
                NextPlayerTurn();
            }
            else
            {
                questionToAsk = CurrentPlayer.Move(diceRoll, Categories);
            }
            return(questionToAsk);
        }
        public IEnumerable <IDomainEvent> Move(IRollDice dice, string playerId)
        {
            CheckPlayable();
            CheckPlayerTurn(playerId);
            CurrentPlayer.CheckCanMove();

            var diceRoll = dice.Roll();

            if (CurrentPlayer.CannotGoOutOfPenaltyBox(diceRoll))
            {
                yield return(NextPlayerTurn());
            }
            else
            {
                foreach (var @event in CurrentPlayer.Move(diceRoll, QuestionDeck)) // Meh!! Missing yield! return from F# :/
                {
                    yield return(@event);
                }
            }
        }