Example #1
0
        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;
        }
Example #2
0
        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);
        }