JustBelot.Common.DealManager.PlayCards C# (CSharp) Method

PlayCards() private method

private PlayCards ( JustBelot.Common.Contract contract ) : void
contract JustBelot.Common.Contract
return void
        private void PlayCards(Contract contract)
        {
            var currentPlayer = this.game.GetFirstPlayerForTheDeal();

            for (int trickNumber = 1; trickNumber <= 8; trickNumber++)
            {
                var currentTrick = new Trick(contract, this.game[currentPlayer]);

                for (int i = 4; i > 0; i--)
                {
                    if (trickNumber == 1 && contract.Type != ContractType.NoTrumps)
                    {
                        var combinations = this.AskForCardCombinations(currentPlayer);
                        this.game.GameInfo.InformForCardCombinationsAnnounced(new CardCombinationsAnnouncedEventArgs(this.game[currentPlayer], combinations.Select(x => x.CombinationType)));
                    }

                    var playAction = this.PlayCard(currentPlayer, contract, currentTrick);
                    currentTrick.Add(playAction.Card);

                    this.game.GameInfo.InformForPlayedCard(new CardPlayedEventArgs(this.game[currentPlayer], playAction, currentTrick.ToList()));
                    currentPlayer = this.game.GetNextPlayer(currentPlayer);
                }

                var trickWinner = currentTrick.WinnerPlayer;

                if (trickWinner == PlayerPosition.South || trickWinner == PlayerPosition.North)
                {
                    this.southNorthPlayersCardsTaken.Add(currentTrick);
                }
                else
                {
                    this.eastWestPlayersCardsTaken.Add(currentTrick);
                }

                if (trickNumber == 8)
                {
                    // Last hand
                    if (trickWinner == PlayerPosition.South || trickWinner == PlayerPosition.North)
                    {
                        this.southNorthTeamTakesLastHand = true;
                    }
                    else
                    {
                        this.southNorthTeamTakesLastHand = false;
                    }
                }

                currentPlayer = this.game[trickWinner];
            }
        }