public bool CanDoubleDown(PlayerHand hand)
{
if (hand.Finished)
return false;
if (hand.Cards.Count() != 2)
return false;
if (hand.HasBeenSplit)
{
if (hand.Cards.ElementAt(0).Rank == Ranks.Ace)
{
if (!Settings.DoubleDownSplitAcesAllowed)
return false;
}
else if (!Settings.DoubleDownNonAceSplitsAllowed)
return false;
}
var c1 = hand.Cards.ElementAt(0);
var c2 = hand.Cards.ElementAt(1);
if(!Settings.SoftDoubleDownAllowed && (c1.Rank == Ranks.Ace || c2.Rank == Ranks.Ace))
return false;
int low = c1.LowValue + c2.LowValue;
if (Settings.DoubleDownOnlyTenOrEleven && (low < 10 || low > 11))
return false;
return true;
}