public override RunItTwice ParseRunItTwice(string[] handLines) { bool isRunItTwiceHand = false; int RITScanIndex = -1; for (int i = handLines.Length - 1; i > 0; i--) { string line = handLines[i]; if (line[0] != '*' ) { continue; } if (line == "*** SUMMARY 2 ***") { RITScanIndex = i; break; } else { //this is not a run it twice hand return null; } } RunItTwice RIT = new RunItTwice(); //Parsing run it twice board for (int i = RITScanIndex; i < handLines.Length; i++) { string line = handLines[i]; if (line[0] == 'B') { RIT.Board = ParseBoard(line); break; } } //Parsing run it twice showdown actions for (int i = RITScanIndex; i > 0; i--) { string line = handLines[i]; if (line == "*** SHOW DOWN 2 ***") { RITScanIndex = i; } } for (int i = RITScanIndex; i < handLines.Length; i++) { string line = handLines[i]; if (line == "*** SUMMARY ***") { break; } int nameEndIndex = line.IndexOf(" wins pot 2 (", StringComparison.Ordinal); if (nameEndIndex != -1) { string playerName = line.Remove(nameEndIndex); int amountStartIndex = line.IndexOf('(', nameEndIndex) + 2; int amountEndString = line.IndexOf(')', amountStartIndex); string amountString = line.Substring(amountStartIndex, amountEndString - amountStartIndex); decimal amount = decimal.Parse(amountString, NumberFormatInfo); RIT.Actions.Add(new WinningsAction(playerName, HandActionType.WINS, amount, 0)); } } return RIT; }
public override RunItTwice ParseRunItTwice(string[] handLines) { RunItTwice rit = null; bool isRunItTwiceHand = false; int secondShowDownIndex = 0; for (int i = handLines.Length - 1; i > 0; i--) { string line = handLines[i]; switch (line[1]) { //*** SUMMARY *** case '*': if (isRunItTwiceHand) { secondShowDownIndex = i - 1; i = 0; break; } //no run it twice hand return null; //SECOND Board [3d Kd 9h 8h Kc] //run it twice hand found case 'E': isRunItTwiceHand = true; rit = new RunItTwice { Board = ParseBoard(line, 14, line.Length - 1) }; break; default: continue; } } for (int i = secondShowDownIndex; i > 0; i--) { string line = handLines[i]; //*** SECOND SHOW DOWN *** if (line[0] == '*' && line[line.Length - 1] == '*') { secondShowDownIndex = i + 1; break; } } ParseShowDown(handLines, ref rit.Actions, secondShowDownIndex, GameType.Unknown); return rit; }