diff --git a/HandHistories.Objects/Cards/CardGroup.cs b/HandHistories.Objects/Cards/CardGroup.cs index fa19a00..b57081e 100644 --- a/HandHistories.Objects/Cards/CardGroup.cs +++ b/HandHistories.Objects/Cards/CardGroup.cs @@ -51,14 +51,16 @@ public void AddCard(Card card) throw new ArgumentException("Card " + card.ToString() + " already exists."); } - if (Cards.Count >= 5) + if (Cards.Count >= GetMaxCardCount()) { - throw new ArgumentException("Board can't consist of more than 5 cards."); + throw new ArgumentException("Cannot add more than " + GetMaxCardCount() + " cards."); } Cards.Add(card); } + protected abstract int GetMaxCardCount(); + public void AddCards(IEnumerable cards) { foreach (var card in cards) diff --git a/HandHistories.Objects/Cards/HoleCards.cs b/HandHistories.Objects/Cards/HoleCards.cs index 221520b..2af3296 100644 --- a/HandHistories.Objects/Cards/HoleCards.cs +++ b/HandHistories.Objects/Cards/HoleCards.cs @@ -44,6 +44,16 @@ public static HoleCards ForOmaha5(string playerName, Card card1, Card card2, Car return new HoleCards(playerName, card1, card2, card3, card4, card5); } + public static HoleCards ForOmaha6(Card card1, Card card2, Card card3, Card card4, Card card5, Card card6) + { + return new HoleCards(string.Empty, card1, card2, card3, card4, card5, card6); + } + + public static HoleCards ForOmaha6(string playerName, Card card1, Card card2, Card card3, Card card4, Card card5, Card card6) + { + return new HoleCards(playerName, card1, card2, card3, card4, card5, card6); + } + public static HoleCards NoHolecards() { return new HoleCards(string.Empty); @@ -74,11 +84,16 @@ public static HoleCards FromCards(string playerName, Card[] cards) { return NoHolecards(); } - if (cards.Length > 5) + if (cards.Length > 6) { - throw new ArgumentException("Hole cards cant contain more than 5 cards."); + throw new ArgumentException("Hole cards cant contain more than 6 cards."); } return new HoleCards(playerName, cards); - } + } + + protected override int GetMaxCardCount() + { + return 6; // Allow up to 6 cards for Six Card Omaha + } } } diff --git a/HandHistories.Objects/GameDescription/GameTypeUtils.cs b/HandHistories.Objects/GameDescription/GameTypeUtils.cs index 3d160d2..be9270c 100644 --- a/HandHistories.Objects/GameDescription/GameTypeUtils.cs +++ b/HandHistories.Objects/GameDescription/GameTypeUtils.cs @@ -58,6 +58,13 @@ public static GameType ParseGameString(string gameString) case "pot limit five card omaha": case "5 card omaha pot limit": return GameType.FiveCardPotLimitOmaha; + case "pot limit six card omaha hi-lo": + case "6 card omaha hi/lo pot limit": + return GameType.SixCardPotLimitOmahaHiLo; + case "omaha6 pot limit": + case "pot limit six card omaha": + case "6 card omaha pot limit": + return GameType.SixCardPotLimitOmaha; default: string match = Enum.GetNames(typeof(GameType)).FirstOrDefault(g => g.ToLower().Equals(gameString.ToLower())); return match == null ? GameType.Unknown : (GameType)Enum.Parse(typeof(GameType), match,true); diff --git a/HandHistories.Objects/GameDescription/GameTypes.Statics.cs b/HandHistories.Objects/GameDescription/GameTypes.Statics.cs index fd54d4d..7993981 100644 --- a/HandHistories.Objects/GameDescription/GameTypes.Statics.cs +++ b/HandHistories.Objects/GameDescription/GameTypes.Statics.cs @@ -87,6 +87,30 @@ public static GameType FiveCardPotLimitOmaha } } + public static GameType SixCardFixedLimitOmaha + { + get + { + return new GameType(GameLimitEnum.FixedLimit, GameEnum.SixCardOmaha); + } + } + + public static GameType SixCardNoLimitOmaha + { + get + { + return new GameType(GameLimitEnum.NoLimit, GameEnum.SixCardOmaha); + } + } + + public static GameType SixCardPotLimitOmaha + { + get + { + return new GameType(GameLimitEnum.PotLimit, GameEnum.SixCardOmaha); + } + } + public static GameType FixedLimitOmahaHiLo { get diff --git a/HandHistories.Objects/GameDescription/GameTypes.cs b/HandHistories.Objects/GameDescription/GameTypes.cs index e64d7af..8df76d8 100644 --- a/HandHistories.Objects/GameDescription/GameTypes.cs +++ b/HandHistories.Objects/GameDescription/GameTypes.cs @@ -25,6 +25,8 @@ public enum GameEnum : byte [EnumMember] FiveCardOmaha, [EnumMember] + SixCardOmaha, + [EnumMember] OmahaHiLo, [EnumMember] FiveCardOmahaHiLo, diff --git a/HandHistories.Parser/Parsers/FastParser/PokerStars/PokerStarsFastParserImpl.cs b/HandHistories.Parser/Parsers/FastParser/PokerStars/PokerStarsFastParserImpl.cs index 34af4fc..044c1b7 100644 --- a/HandHistories.Parser/Parsers/FastParser/PokerStars/PokerStarsFastParserImpl.cs +++ b/HandHistories.Parser/Parsers/FastParser/PokerStars/PokerStarsFastParserImpl.cs @@ -342,6 +342,8 @@ private static GameType GetGameTypeFromLength(int startIndex, string line, int g return GameType.PotLimitOmahaHiLo; case 22: return GameType.FiveCardPotLimitOmaha; + case 23: + return GameType.SixCardPotLimitOmaha; case 20: return GameType.NoLimitOmahaHiLo; case 11: