private void MoveToNextPlayer(Card card)
{
if (CurrentPlayer == null)
CurrentPlayer = Players.First();
if (card != null)
CurrentPlayer.Hand.RemoveCard(card);
var index = Players.IndexOf(CurrentPlayer);
index = UpdateIndex(index);
if (card != null && card.Type == CardType.Skip)
index = UpdateIndex(index);
CurrentPlayer = Players[index];
foreach (var playableCard in CurrentPlayer.Hand.PlayableCards)
{
playableCard.PickedUp = false;
}
if (card != null)
{
if (card.Type == CardType.WildDraw)
{
CurrentPlayer.Hand.PlayableCards.Add(new PlayableCard(PlayedCards.Dequeue(), true));
CurrentPlayer.Hand.PlayableCards.Add(new PlayableCard(PlayedCards.Dequeue(), true));
}
if (card.Type == CardType.Draw || card.Type == CardType.WildDraw)
{
CurrentPlayer.Hand.PlayableCards.Add(new PlayableCard(PlayedCards.Dequeue(), true));
CurrentPlayer.Hand.PlayableCards.Add(new PlayableCard(PlayedCards.Dequeue(), true));
index = UpdateIndex(index);
CurrentPlayer = Players[index];
}
}
PlayableCards.Process(CurrentPlayer.Hand.PlayableCards, CurrentCard);
if (CurrentPlayer.Hand.HasPlayableCard == false)
{
CurrentPlayer.Hand.PlayableCards.Add(new PlayableCard(PlayedCards.Dequeue(), true)
{
Playable = false
});
}
}