public void ParseCollectedLine_SidePot() { WinningsAction handAction = GetPokerStarsFastParser().ParseCollectedLine(@"bozzoTHEclow collected $136.82 from side pot", Street.Preflop); Assert.AreEqual(new WinningsAction("bozzoTHEclow", WinningsActionType.WINS_SIDE_POT, 136.82m, 1), handAction); }
private List <HandAction> GetWinningAndShowCardActions(string[] handLines) { int actionNumber = Int32.MaxValue - 100; PlayerList playerList = ParsePlayers(handLines); var winningAndShowCardActions = new List <HandAction>(); foreach (Player player in playerList) { if (player.hasHoleCards) { HandAction showCardsAction = new HandAction(player.PlayerName, HandActionType.SHOW, 0, Street.Showdown, actionNumber++); winningAndShowCardActions.Add(showCardsAction); } } string[] playerLines = GetPlayerLinesFromHandLines(handLines); for (int i = 0; i < playerLines.Length; i++) { string playerLine = playerLines[i]; decimal winnings = GetWinningsFromPlayerLine(playerLine); if (winnings > 0) { string playerName = GetNameFromPlayerLine(playerLine); WinningsAction winningsAction = new WinningsAction(playerName, HandActionType.WINS, winnings, 0, actionNumber++); winningAndShowCardActions.Add(winningsAction); } } return(winningAndShowCardActions); }
public void ParseCollectedLine_SidePot2() { WinningsAction handAction = GetPokerStarsFastParser().ParseCollectedLine(@"CinderellaBD collected $7 from side pot-2", Street.Preflop); Assert.AreEqual(new WinningsAction("CinderellaBD", WinningsActionType.WINS_SIDE_POT, 7m, 2), handAction); }
public void ParseCollectedLine_WithColon_Works() { WinningsAction handAction = GetPokerStarsFastParser().ParseCollectedLine(@"wo_olly :D collected $0.57 from pot", Street.Preflop); Assert.AreEqual(new WinningsAction("wo_olly :D", WinningsActionType.WINS, 0.57m, 0), handAction); }
public void ParseCollectedLine_MainPot_Works() { WinningsAction handAction = GetPokerStarsFastParser().ParseCollectedLine(@"bozzoTHEclow collected $245.23 from main pot", Street.Preflop); Assert.AreEqual(new WinningsAction("bozzoTHEclow", WinningsActionType.WINS, 245.23m, 0), handAction); }
public void ParseCollectedLine_Works() { WinningsAction handAction = GetPokerStarsFastParser().ParseCollectedLine(@"alecc frost collected $1.25 from pot", Street.Preflop); Assert.AreEqual(new WinningsAction("alecc frost", WinningsActionType.WINS, 1.25m, 0), handAction); }
public void ParseCollectedLine_WithSidePot_Works() { WinningsAction handAction = GetPokerStarsFastParser().ParseCollectedLine(@"templargio collected $6.08 from side pot-2", Street.Preflop); Assert.AreEqual(new WinningsAction("templargio", WinningsActionType.WINS_SIDE_POT, 6.08m, 2), handAction); }
protected override List <HandAction> ParseHandActions(string[] handLines, GameType gameType = GameType.Unknown) { List <HandAction> actions = new List <HandAction>(); PlayerList playerList = ParsePlayers(handLines); XDocument document = GetXDocumentFromLines(handLines); XElement gameElement = GetGameElementFromXDocument(document); Street currentStreet = Street.Null; List <XElement> roundElements = gameElement.Elements("round").ToList(); foreach (XElement roundElement in roundElements) { currentStreet = GetStreetFromRoundElement(roundElement); List <XElement> eventElements = roundElement.Elements("event").ToList(); foreach (XElement eventElement in eventElements) { HandAction action = GetHandActionFromEventElement(eventElement, currentStreet, playerList); actions.Add(action); } } List <XElement> winnerElements = gameElement.Elements("round").Elements("winner").ToList(); foreach (XElement winnerElement in winnerElements) { WinningsAction winningsAction = GetWinningsActionFromWinnerElement(winnerElement, playerList); actions.Add(winningsAction); } return(actions); }
public static void AddWinningActions(HandHistory handHistory) { foreach (var winner in handHistory.Players.Where(p => p.Win > 0)) { var winAction = new WinningsAction(winner.PlayerName, HandActionType.WINS, winner.Win, 0); handHistory.HandActions.Add(winAction); } }
private void ProcessNoticeGameSettlement(NoticeGameSettlement noticeGameSettlement, HandHistory handHistory) { if (noticeGameSettlement.Winners == null) { throw new HandBuilderException(handHistory.HandId, $"NoticeGameSettlement.Winners must be not null."); } foreach (var winner in noticeGameSettlement.Winners) { var player = GetPlayer(handHistory, winner.SeatId + 1); var winningAction = new WinningsAction(player.PlayerName, HandActionType.WINS, winner.Amount, 0); handHistory.HandActions.Add(winningAction); player.Win = winner.Amount; } }
private List <HandAction> GetWinningAndShowCardActions(string[] handLines, List <HandAction> actions, List <WinningsAction> winners) { int actionNumber = Int32.MaxValue - 100; PlayerList playerList = ParsePlayers(handLines); List <HandAction> winningAndShowCardActions = new List <HandAction>(); foreach (Player player in playerList) { if (player.hasHoleCards) { var folded = actions.Any(p => p.HandActionType == HandActionType.FOLD); if (folded) { continue; } HandAction showCardsAction = new HandAction(player.PlayerName, HandActionType.SHOW, 0, Street.Showdown, actionNumber++); winningAndShowCardActions.Add(showCardsAction); } } List <string> playerLines = GetPlayerLinesFromHandLines(handLines); for (int i = 0; i < playerLines.Count; i++) { string playerLine = playerLines[i]; decimal winnings = GetWinningsFromPlayerLine(playerLine); if (winnings > 0) { string playerName = GetNameFromPlayerLine(playerLine); WinningsAction winningsAction = new WinningsAction(playerName, WinningsActionType.WINS, winnings, 0); winners.Add(winningsAction); } } return(winningAndShowCardActions); }
private void ProcessWinner(Winner winner, HandHistory handHistory) { if (handHistory == null) { return; } foreach (var playerWinner in winner.WinnerInfo.Winners) { var playerName = playerWinner.PlayerId.ToString(); var winningAction = new WinningsAction(playerName, HandActionType.WINS, playerWinner.Amount, playerWinner.PotId); handHistory.HandActions.Add(winningAction); var player = handHistory.Players.FirstOrDefault(x => x.PlayerName == playerName); if (player == null) { throw new HandBuilderException($"Failed to find player {playerName} for set win."); } player.Win = playerWinner.Amount; } foreach (var playerRank in winner.WinnerInfo.PlayerRanks) { if (playerRank.HoleCards == null || playerRank.HoleCards.HoleCards == null || playerRank.HoleCards.HoleCards.Length == 0) { continue; } var playerName = playerRank.PlayerId.ToString(); var player = handHistory.Players.FirstOrDefault(x => x.PlayerName == playerName); if (player == null) { throw new HandBuilderException($"Failed to find player {playerRank.PlayerId} for set hole cards."); } if (player.hasHoleCards) { continue; } var holeCards = string.Join(string.Empty, playerRank.HoleCards.HoleCards.Where(x => x != null).Select(x => x.ToString())); if (!string.IsNullOrEmpty(holeCards) && (holeCards.Length == 4 || holeCards.Length == 8)) { player.HoleCards = HoleCards.FromCards(holeCards); } else { var possibleHoleCards = new List <string>(); if (playerRank.KickerCards != null && playerRank.KickerCards.Length > 0) { possibleHoleCards.AddRange(playerRank.KickerCards.Where(x => x != null).Select(x => x.ToString())); } if (playerRank.RankCards != null && playerRank.RankCards.Length > 0) { possibleHoleCards.AddRange(playerRank.RankCards.Where(x => x != null).Select(x => x.ToString())); } var playerHoleCards = string.Join(string.Empty, possibleHoleCards .Where(x => !handHistory.CommunityCardsString.ContainsIgnoreCase(x)).Distinct()); if (!string.IsNullOrEmpty(playerHoleCards) && (playerHoleCards.Length == 4 || playerHoleCards.Length == 8)) { player.HoleCards = HoleCards.FromCards(playerHoleCards); } } } }