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 );
}