//--------------------------------------------------------------------- Card _getNextOrLastCardTypeCard(MaJiangType card_type, MaJiangSuit card_suit, bool is_same_suit, bool is_next) { Card card = null; MaJiangType need_cardtype = MaJiangType.Two; if (is_next) { int next_cardtype = ((int)card_type) + 1; if (next_cardtype == 15) { need_cardtype = MaJiangType.Two; } else { need_cardtype = (MaJiangType)next_cardtype; } } else { int last_cardtype = ((int)card_type) - 1; if (last_cardtype == 1) { need_cardtype = MaJiangType.Nine; } else { need_cardtype = (MaJiangType)last_cardtype; } } if (is_same_suit) { List <Card> list_same_suitcards = null; if (mapSameSuitCard.TryGetValue(card_suit, out list_same_suitcards)) { byte need_cardtype_bte = (byte)need_cardtype; var list_suit_card = list_same_suitcards.Where(x => x.Type == need_cardtype_bte); if (list_suit_card != null && list_suit_card.Count() > 0) { card = list_suit_card.First(); _removeCard(card); } } } else { card = _getSameTypeCard(need_cardtype); } return(card); }
//--------------------------------------------------------------------- Card _getSameTypeCard(MaJiangType card_type) { Card card = null; List <Card> list_sametypecard = null; mapSameTypeCard.TryGetValue(card_type, out list_sametypecard); if (list_sametypecard != null && list_sametypecard.Count > 0) { int index = RandomEx.Next(0, list_sametypecard.Count); card = list_sametypecard[index]; _removeCard(card); } return(card); }
//--------------------------------------------------------------------- List <Card> _getPairWithType(MaJiangType type) { List <Card> list_sametypecard = null; mapSameTypeCard.TryGetValue(type, out list_sametypecard); if (list_sametypecard == null || list_sametypecard.Count < 2) { return(null); } List <Card> list_cards = list_sametypecard.Take(2).ToList(); foreach (var i in list_cards) { _removeCard(i); } return(list_cards); }
//--------------------------------------------------------------------- public static string GetMaJiangCardResName(CardData card_data) { string card_res_name = ""; MaJiangSuit majiang_suit = (MaJiangSuit)card_data.suit; if (majiang_suit != MaJiangSuit.Wan && majiang_suit != MaJiangSuit.Tong && majiang_suit != MaJiangSuit.Tiao) { card_res_name = majiang_suit.ToString(); } else { MaJiangType majiang_type = (MaJiangType)card_data.type; card_res_name = majiang_type.ToString() + majiang_suit.ToString(); } return(card_res_name); }