using System.Collections.Generic; using System.Linq; using GameMessage; namespace GameFix.Poker { public class CardStyle510KHelper : CardStyleBaseHelper { public override int CardStyle => DataCardConst.CardStyle510K; public override int CardCnt => 3; protected List V_510K = new List(){DataCardConst.CardValue5, DataCardConst.CardValue10, DataCardConst.CardValueK}; internal override bool CheckStyleNormal(CardBaseGroup group, out CardStyleInfo cardStyleInfo) { cardStyleInfo = null; if (group.Cards.Count == CardCnt) { var values = group.Cards.Select(x=>(int)x.Value).ToList(); values.Sort(); if (V_510K.SequenceEqual(values)) { cardStyleInfo = CardStyleHelper.CreateCardStyleInfo(CardStyle, group.Cards); return true; } } return false; } internal override bool CheckStyleWithLZ(CardBaseGroup group, out CardStyleInfo cardStyleInfo) { cardStyleInfo = null; if (group.Cards.Count == CardCnt && group.LZCards.Count == 1) { // 只有一个癞子,不然会被当成三个相同 var values = group.Cards.Select(x=>(int)x.Value).ToList(); var exceptV = values.Except(V_510K).ToList(); if (exceptV.Count == 1) { // 只有一个不同 cardStyleInfo = CardStyleHelper.CreateCardStyleInfo(CardStyle, group.Cards); cardStyleInfo.CardLackValues = new[] { exceptV.First() }; return true; } } return false; } internal override List GetAllEatTipGroup(CardBaseGroup group, CardStyleInfo eatStyleInfo) { var groupList = new List(1); CardGroupList cardGroupList = new CardGroupList(); for (int i = 0; i < V_510K.Count; i++) { if (group.CardGroupList[V_510K[i]].Count > 0) cardGroupList.Add(group.CardGroupList[V_510K[i]].First()); } if (cardGroupList.Count == CardCnt) groupList.Add(cardGroupList); return groupList; } internal override List GetAllEatTipGroupWithLZ(CardBaseGroup group, CardStyleInfo eatStyleInfo) { var groupList = new List(1); CardGroupList cardGroupList = new CardGroupList(); for (int i = 0; i < V_510K.Count; i++) { if (group.CardGroupList[V_510K[i]].Count > 0) cardGroupList.Add(group.CardGroupList[V_510K[i]].First()); } if (cardGroupList.Count == 2) { cardGroupList.Add(group.LZCards.First()); groupList.Add(cardGroupList); } return new List(0); } } }