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); } } }