public void InitializeParty() { var players = Helper.PartyPlayers; playersPutInAmount = new Dictionary <string, long>(); numberOfPlayers = 0; ante = 0; foreach (var line in hand) { var headerConvereter = new HandHeaderConverter(line, ante); if (headerConvereter.IsMatch()) { tournamentNumber = headerConvereter.tournamentNumber; arabicLevel = headerConvereter.arabicLevel; smallBlind = headerConvereter.smallBlind; bigBlind = headerConvereter.bigBlind; continue; } var seatPreview = new SeatPreviewConverter(line); if (seatPreview.IsMatch()) { playersPutInAmount.Add(seatPreview.playerName, 0);//store how many chips each player put-in on each street numberOfPlayers++; if (SHOULD_CONVERT == false) { if (players.ContainsKey(seatPreview.playerName)) { SHOULD_CONVERT = true; } } continue; } var postAnte = new PostAnteConverter(line); if (postAnte.IsMatch()) { ante = postAnte.ante; break; } } }
public List <string> ToParty() { InitializeParty(); if (SHOULD_CONVERT == false) { return(null); // return null - if not need to convert } var result = new List <string>(); var uncalledBetPlayers = new Dictionary <string, long>(); //need to add uncalled bet to win chips count var seatPreviewCount = 0; // or after seatPreview rows var state = Enums.State.PreFlop; foreach (var line in hand) { var uncalledBetConv = new UncalledBetConverter(line); if (uncalledBetConv.IsMatch()) { uncalledBetPlayers.Add(uncalledBetConv.playerName, uncalledBetConv.uncalledBet); continue; } var collectedPotConv = new CollectedPotConverter(line, sidePotNumber, playersPutInAmount); if (collectedPotConv.IsMatch()) { result.Add(collectedPotConv.ConvertToParty(uncalledBetPlayers)); sidePotNumber = collectedPotConv.sidePotNumber; playersPutInAmount = collectedPotConv.playersPutInAmount; if (uncalledBetPlayers.ContainsKey(collectedPotConv.playerName)) { uncalledBetPlayers.Remove(collectedPotConv.playerName); } continue; } #region FLOP TURN RIVER Converters and reset playersPutInAmount after each street var flopConv = new FlopConverter(line); if (flopConv.IsMatch()) { state = Enums.State.Flop; ResetPlayersPutInCollection(); result.Add(flopConv.ConvertToParty()); continue; } var turnConv = new TurnConverter(line); if (turnConv.IsMatch()) { state = Enums.State.Turn; ResetPlayersPutInCollection(); result.Add(turnConv.ConvertToParty()); continue; } var riverConv = new RiverConverter(line); if (riverConv.IsMatch()) { state = Enums.State.River; ResetPlayersPutInCollection(); result.Add(riverConv.ConvertToParty()); continue; } #endregion var postBBConv = new PostBBConverter(line, playersPutInAmount); if (postBBConv.IsMatch()) { result.Add(postBBConv.ConvertToParty()); playersPutInAmount = postBBConv.playersPutInAmount; continue; } var postSBConv = new PostSBConverter(line, playersPutInAmount); if (postSBConv.IsMatch()) { result.Add(postSBConv.ConvertToParty()); playersPutInAmount = postSBConv.playersPutInAmount; continue; } var betConv = new BetConverter(line, playersPutInAmount); if (betConv.IsMatch()) { result.Add(betConv.ConvertToParty()); playersPutInAmount = betConv.playersPutInAmount; continue; } var callConv = new CallConverter(line, playersPutInAmount); if (callConv.IsMatch()) { result.Add(callConv.ConvertToParty()); playersPutInAmount = callConv.playersPutInAmount; continue; } var raiseConv = new RaiseConverter(line, playersPutInAmount); if (raiseConv.IsMatch()) { result.Add(raiseConv.ConvertToParty()); playersPutInAmount = raiseConv.playersPutInAmount; continue; } //Add two aditional rows befor post ante or after seat preview var seatPrevConv = new SeatPreviewConverter(line); if (seatPrevConv.IsMatch()) { result.Add(seatPrevConv.ConvertToParty()); seatPreviewCount++; if (seatPreviewCount == numberOfPlayers) { result.Add($@"Trny:{tournamentNumber.ToString()} Level:{arabicLevel.ToString()} "); if (ante != 0) { result.Add($@"Blinds-Antes({smallBlind.ToSeparateString().Trim()}/{ bigBlind.ToSeparateString().Trim() } -{ante.ToSeparateString().Trim()})" ); } else { result.Add($@"Blinds-Antes({smallBlind.ToSeparateString().Trim()}/{ bigBlind.ToSeparateString().Trim() })" ); } } continue; } var converters = new List <Converter>() { new CheckConverter(line), new PostAnteConverter(line), new HoleCardsConverter(line), new DealtToPlayerConverter(line), new PlayerShowsConverter(line), new MuckHandConverter(line), new HandHeaderConverter(line, ante), new TableHeaderConverter(line, numberOfPlayers), new FoldConverter(line) }; foreach (var converter in converters) { if (converter.IsMatch()) { result.Add(converter.ConvertToParty()); break; } } } foreach (var pl in uncalledBetPlayers)//in the end add not used uncalled bet players strings { var players = Helper.PartyPlayers; var convertedPlayerName = players.ContainsKey(pl.Key) ? players[pl.Key] : pl.Key.GetHashCode().ToString(); result.Add($"{convertedPlayerName} wins {pl.Value.ToCommaSeparateString()} chips"); } return(result); }