From d8da3811fd742dc147d16d7f4e81252ebb2feefd 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 to HandHistories.Objects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add SixCardOmaha enum, SixCardPotLimitOmaha factory, ForOmaha6 hole card factories, and raise hole card limit to 6. Only pot-limit included since that's the only variant we play. No GameTypeUtils parse cases added yet — parsing is handled by the DriveHud XML parser, and we don't know what the PLO6 identifier strings look like in raw hand histories. Co-Authored-By: Claude Opus 4.6 (1M context) --- HandHistories.Objects/Cards/HoleCards.cs | 14 ++++++++++++-- .../GameDescription/GameTypes.Statics.cs | 8 ++++++++ HandHistories.Objects/GameDescription/GameTypes.cs | 2 ++ 3 files changed, 22 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/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, }