private int GetDistance( Card card, Card maxCard, Announcement announce )
{
int distance = 0;
if ( card.CardColor != maxCard.CardColor )
{
throw new ArgumentException( "When comparing distance between two cards, they must have same color" );
}
CardColor trumpColor = GetTrumpColor();
switch ( announce.Type )
{
case AnnouncementTypeEnum.AllTrumps:
distance = GetDistanceTrumps( card, maxCard );
break;
case AnnouncementTypeEnum.NoTrumps:
distance = GetDistanceNoTrumps( card, maxCard );
break;
case AnnouncementTypeEnum.Spades:
case AnnouncementTypeEnum.Hearts:
case AnnouncementTypeEnum.Diamonds:
case AnnouncementTypeEnum.Clubs:
if ( card.CardColor == trumpColor )
distance = GetDistanceTrumps( card, maxCard );
else
distance = GetDistanceNoTrumps( card, maxCard );
break;
}
return distance;
}