Summary description for CombinationFinder.
Beispiel #1
0
        private void PlayerHasTurn(Player player)
        {
            #region Announce combinations on first hand

            if (_playingManager.IsFirstHand && _currentAnnouncement.Type != AnnouncementTypeEnum.NoTrumps)
            {
                CombinationFinder finder = new CombinationFinder(player.Cards);
                foreach (CardCombination combination in finder.Combinations)
                {
                    bool isValidCombination = false;

                    if (combination is SequentialCombination)
                    {
                        Player          biggest            = FindBiggestSequentialCombinationHolder();
                        CardCombination biggestCombination = null;

                        foreach (DictionaryEntry de in _mapSequentialCombinationToPlayer)
                        {
                            if (biggest == de.Value as Player)
                            {
                                biggestCombination = de.Key as CardCombination;
                                break;
                            }
                        }

                        if ((biggest == null) ||
                            (combination.Points >= biggestCombination.Points) ||
                            (player.Position == biggest.Position || player.Position == _game.GetTeamPlayer(biggest).Position))
                        {
                            isValidCombination = true;
                        }
                    }
                    else
                    {
                        isValidCombination = true;
                    }

                    if (isValidCombination && player.AnnounceCombination(combination))
                    {
                        if (combination is SequentialCombination)
                        {
                            _mapSequentialCombinationToPlayer.Add(combination, player);
                        }
                        if (combination is FourEqualsCombination)
                        {
                            _mapEqualCombinationToPlayer.Add(combination, player);
                        }
                    }
                }
            }

            #endregion

            foreach (Card card in player.Cards)
            {
                card.IsSelectable = _playingManager.IsValid(player, card);
            }

            player.PlayCard(_playingManager);
        }
Beispiel #2
0
        private void PlayerHasTurn( Player player )
        {
            #region Announce combinations on first hand

            if( _playingManager.IsFirstHand && _currentAnnouncement.Type != AnnouncementTypeEnum.NoTrumps )
            {
                CombinationFinder finder = new CombinationFinder( player.Cards );
                foreach( CardCombination combination in finder.Combinations )
                {
                    bool isValidCombination = false;

                    if( combination is SequentialCombination )
                    {
                        Player biggest = FindBiggestSequentialCombinationHolder();
                        CardCombination biggestCombination = null;

                        foreach( DictionaryEntry de in _mapSequentialCombinationToPlayer )
                        {
                            if( biggest == de.Value as Player )
                            {
                                biggestCombination = de.Key as CardCombination;
                                break;
                            }
                        }

                        if( (biggest == null) ||
                            (combination.Points >= biggestCombination.Points) ||
                            (player.Position == biggest.Position || player.Position == _game.GetTeamPlayer( biggest ).Position) )
                        {
                            isValidCombination = true;
                        }
                    }
                    else
                    {
                        isValidCombination = true;
                    }

                    if( isValidCombination && player.AnnounceCombination( combination ) )
                    {
                        if( combination is SequentialCombination )
                        {
                            _mapSequentialCombinationToPlayer.Add( combination, player );
                        }
                        if( combination is FourEqualsCombination )
                        {
                            _mapEqualCombinationToPlayer.Add( combination, player );
                        }
                    }
                }
            }

            #endregion

            foreach( Card card in player.Cards )
            {
                card.IsSelectable = _playingManager.IsValid( player, card );
            }

            player.PlayCard( _playingManager );
        }