private static int NextCard(string cards, ref int index)
{
int rank = 0, suit = 0;
#if DEBUG
if (cards == null) throw new ArgumentNullException("cards");
#endif
// Remove whitespace
while (index < cards.Length && cards[index] == ' ')
index++;
if (index >= cards.Length)
return -1;
// Parse cards
if (index < cards.Length)
{
switch (cards[index++])
{
case '1':
try
{
if (cards[index] == '0')
{
index++;
rank = RankTen;
}
else
{
return -1;
}
}
catch
{
throw new ArgumentException("Bad hand string");
}
break;
case '2':
rank = Rank2;
break;
case '3':
rank = Rank3;
break;
case '4':
rank = Rank4;
break;
case '5':
rank = Rank5;
break;
case '6':
rank = Rank6;
break;
case '7':
rank = Rank7;
break;
case '8':
rank = Rank8;
break;
case '9':
rank = Rank9;
break;
case 'T':
case 't':
rank = RankTen;
break;
case 'J':
case 'j':
rank = RankJack;
break;
case 'Q':
case 'q':
rank = RankQueen;
break;
case 'K':
case 'k':
rank = RankKing;
break;
case 'A':
case 'a':
rank = RankAce;
break;
default:
return -2;
}
}
else
{
return -2;
}
if (index < cards.Length)
{
switch (cards[index++])
{
case 'H':
case 'h':
suit = Hearts;
break;
case 'D':
case 'd':
suit = Diamonds;
break;
case 'C':
case 'c':
suit = Clubs;
break;
case 'S':
case 's':
suit = Spades;
break;
default:
return -2;
}
}
else
{
return -2;
}
return rank + (suit * 13);
}