private async Task ProcessAttack(Card currentDiscard, CardDeck drawPile) { Golab.gameChannel = Context.Guild.GetTextChannel(636288627466436631); PlayerTurn turn = new PlayerTurn(); turn.Result = TurnResult.Attacked; turn.Card = currentDiscard; turn.DeclaredColor = currentDiscard.Color; if (currentDiscard.Value == CardValue.Skip) { await Golab.gameChannel.SendMessageAsync("Player " + discordPlayer.Mention + " was skipped!"); } else if (currentDiscard.Value == CardValue.DrawTwo) { await Golab.gameChannel.SendMessageAsync("Player " + discordPlayer.Mention + " must draw two cards!"); Hand.AddRange(drawPile.Draw(2)); } else if (currentDiscard.Value == CardValue.DrawFour) { await Golab.gameChannel.SendMessageAsync("Player " + discordPlayer.Mention + " must draw four cards!"); Hand.AddRange(drawPile.Draw(4)); } Golab.turn = turn; }
public PlayerTurn DrawCard(PlayerTurn previousTurn, CardDeck drawPile) { PlayerTurn turn = new PlayerTurn(); var drawnCard = drawPile.Draw(1); Hand.AddRange(drawnCard); if (HasMatch(previousTurn.Card)) //If the drawn card matches the discard, play it { turn = PlayMatchingCard(previousTurn.Card); turn.Result = TurnResult.ForceDrawPlay; } else { turn.Result = TurnResult.ForceDraw; turn.Card = previousTurn.Card; turn.DeclaredColor = turn.Card.Color; } return(turn); }