From 9f54624b5b90828d3000fd97c5af2ceee863ab54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=B6ran=20Gratte?= Date: Tue, 31 Mar 2026 06:51:06 +0200 Subject: [PATCH] Add PLO6 support Only pot-limit variant included as that's the only one currently played. Co-Authored-By: Claude Opus 4.6 (1M context) --- HandHistories.Objects/Cards/HoleCards.cs | 14 ++++++++++++-- .../GameDescription/GameTypeUtils.cs | 4 ++++ .../GameDescription/GameTypes.Statics.cs | 8 ++++++++ HandHistories.Objects/GameDescription/GameTypes.cs | 2 ++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/HandHistories.Objects/Cards/HoleCards.cs b/HandHistories.Objects/Cards/HoleCards.cs index 221520b3..30b75f2d 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,9 +84,9 @@ 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); } diff --git a/HandHistories.Objects/GameDescription/GameTypeUtils.cs b/HandHistories.Objects/GameDescription/GameTypeUtils.cs index 3d160d2e..b71fab0a 100644 --- a/HandHistories.Objects/GameDescription/GameTypeUtils.cs +++ b/HandHistories.Objects/GameDescription/GameTypeUtils.cs @@ -58,6 +58,10 @@ public static GameType ParseGameString(string gameString) case "pot limit five card omaha": case "5 card omaha pot limit": return GameType.FiveCardPotLimitOmaha; + 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 fd54d4db..e740f785 100644 --- a/HandHistories.Objects/GameDescription/GameTypes.Statics.cs +++ b/HandHistories.Objects/GameDescription/GameTypes.Statics.cs @@ -134,5 +134,13 @@ public static GameType FiveCardPotLimitOmahaHiLo return new GameType(GameLimitEnum.PotLimit, GameEnum.FiveCardOmahaHiLo); } } + + public static GameType SixCardPotLimitOmaha + { + get + { + return new GameType(GameLimitEnum.PotLimit, GameEnum.SixCardOmaha); + } + } } } diff --git a/HandHistories.Objects/GameDescription/GameTypes.cs b/HandHistories.Objects/GameDescription/GameTypes.cs index e64d7afa..d478e062 100644 --- a/HandHistories.Objects/GameDescription/GameTypes.cs +++ b/HandHistories.Objects/GameDescription/GameTypes.cs @@ -29,6 +29,8 @@ public enum GameEnum : byte [EnumMember] FiveCardOmahaHiLo, [EnumMember] + SixCardOmaha, + [EnumMember] Any = 255, }