private Turn.Turn GetNextTurn() { if (CurrentTurn == null) { CurrentTurn = new Turn.Turn(Players.First()); _setAsideCards.Add(RemoveTopCard()); foreach (var player in Players) { var drawn = RemoveTopCard(); var newHand = new Hand.Hand(drawn); _hands[player.Id] = newHand; } } else { if (_remainingPlayers.Count <= 1 || _drawCards.Count <= 0) { return(null); } var nextPlayerIndex = Players.ToList().IndexOf(CurrentTurn.CurrentPlayer) + 1; var nextPlayer = Players.Concat(Players).Skip(nextPlayerIndex).First(); var drawn = Draw(); var newHand = _hands[nextPlayer.Id].Append(drawn); _hands[nextPlayer.Id] = newHand; CurrentTurn = new Turn.Turn(nextPlayer); } return(CurrentTurn); }
public PlayContext(Action <Guid> addPlayerProtection, Action <Guid> eliminatePlayer, Turn.Turn currentTurn, Action <Guid, Guid> tradeHands, Func <Guid, CardValue> revealHand, Action <Guid> discardAndDraw, Guid?targetPlayerId, CardValue?guessedCardvalue) { _addPlayerProtection = addPlayerProtection; _eliminatePlayer = eliminatePlayer; CurrentTurn = currentTurn; TargetPlayerId = targetPlayerId; GuessedCardvalue = guessedCardvalue; _tradeHands = tradeHands; _revealHand = revealHand; _discardAndDraw = discardAndDraw; }
public void ResponseToActionRequest(string actionTimer) { Turn.Turn turn = makeTurn(); Console.WriteLine(turn.ToString()); }
public DrawContext(Turn.Turn currentTurn, Func <Hand.Hand> getCurrentPlayerHand) { CurrentTurn = currentTurn; _getCurrentPlayerHand = getCurrentPlayerHand; }