public SuitedStatus <BoardRangeGridStatusEnum> TestSuitedGrid(RangeGrid grid) { if (grid.Category != GridCategoryEnum.Suited) { throw new InvalidOperationException($"{grid.Category}"); } var result = new SuitedStatus <BoardRangeGridStatusEnum>(); var suits = new SuitEnum[] { SuitEnum.Heart, SuitEnum.Spade, SuitEnum.Diamond, SuitEnum.Club }; foreach (var suit in suits) { if (!(grid.Card1AvaliableSuits.Contains(suit) && grid.Card2AvaliableSuits.Contains(suit))) { switch (suit) { case SuitEnum.Heart: result.HeartStatus = BoardRangeGridStatusEnum.Unavailable; break; case SuitEnum.Spade: result.SpadeStatus = BoardRangeGridStatusEnum.Unavailable; break; case SuitEnum.Diamond: result.DiamondStatus = BoardRangeGridStatusEnum.Unavailable; break; case SuitEnum.Club: result.ClubStatus = BoardRangeGridStatusEnum.Unavailable; break; } continue; } var hole1 = new Card(suit, grid.HighRank); var hole2 = new Card(suit, grid.LowRank); var outcome = TestGridAgainstBoard(hole1, hole2).Item1; switch (suit) { case SuitEnum.Heart: result.HeartStatus = TranslateOutcomeToGridStatus(outcome); break; case SuitEnum.Spade: result.SpadeStatus = TranslateOutcomeToGridStatus(outcome); break; case SuitEnum.Diamond: result.DiamondStatus = TranslateOutcomeToGridStatus(outcome); break; case SuitEnum.Club: result.ClubStatus = TranslateOutcomeToGridStatus(outcome); break; } } return(result); }
public SuitedStatus <GridHitNewRoundResultEnum> TestSuitedGrid(RangeGrid grid) { if (grid.Category != GridCategoryEnum.Suited) { throw new InvalidOperationException($"{grid.Category}"); } var result = new SuitedStatus <GridHitNewRoundResultEnum>(); var suits = grid.Card1AvaliableSuits.Intersect(grid.Card2AvaliableSuits); foreach (var suit in suits) { if (!(grid.Card1AvaliableSuits.Contains(suit) && grid.Card2AvaliableSuits.Contains(suit))) { switch (suit) { case SuitEnum.Heart: result.HeartStatus = GridHitNewRoundResultEnum.Unavailable; break; case SuitEnum.Spade: result.SpadeStatus = GridHitNewRoundResultEnum.Unavailable; break; case SuitEnum.Diamond: result.DiamondStatus = GridHitNewRoundResultEnum.Unavailable; break; case SuitEnum.Club: result.ClubStatus = GridHitNewRoundResultEnum.Unavailable; break; } continue; } var hole1 = new Card(suit, grid.HighRank); var hole2 = new Card(suit, grid.LowRank); var lastRoundTuple = _previousRoundTest(hole1, hole2); var currentRoundTuple = _currentRoundTest(hole1, hole2); switch (suit) { case SuitEnum.Heart: result.HeartStatus = TranslateOutcomeToGridStatus(currentRoundTuple.Item1, currentRoundTuple.Item2, lastRoundTuple.Item1, lastRoundTuple.Item2); break; case SuitEnum.Spade: result.SpadeStatus = TranslateOutcomeToGridStatus(currentRoundTuple.Item1, currentRoundTuple.Item2, lastRoundTuple.Item1, lastRoundTuple.Item2); break; case SuitEnum.Diamond: result.DiamondStatus = TranslateOutcomeToGridStatus(currentRoundTuple.Item1, currentRoundTuple.Item2, lastRoundTuple.Item1, lastRoundTuple.Item2); break; case SuitEnum.Club: result.ClubStatus = TranslateOutcomeToGridStatus(currentRoundTuple.Item1, currentRoundTuple.Item2, lastRoundTuple.Item1, lastRoundTuple.Item2); break; } } return(result); }