private void CheckSelfAddCardFunc(List <Int64> list, List <Int64> RevealCardList, Int64 mopai) { Int64 cardID = 0; int num = 3; int canGangCard = CardRules.CheckBySelfAddCardIsCanGang(list, mopai, laizi, GetLaizipi(laizi)); if (canGangCard != 0) { num++; cardID = canGangCard; } if (CardRules.PopEnable(RevealCardList, mopai, GetLaizipi(laizi)) == 3)//检测回头笑的情况 { num++; cardID = mopai; } if (CardRules.IsHupai(list, laizi, mopai, gameRule)) { num += 2;; } if (num != 3) { EventDispatcher.GetInstance().UIFrameWorkEventManager.TriggerEvent <Int64, Int64>(EventId.SelfCanPengOrGang, num, cardID);//自己摸牌判断是否可以用杠 } }
public void Inits(List <Card> cards) { CardsType cardsType = CardsType.None; CardRules.PopEnable(cards.ToArray(), out cardsType); Layout(cardsType, cards); }
/// <summary> /// 检测玩家出牌 /// </summary> bool CheckPlayCards(List <Card> selectedCardsLists, out CardsType type) { bool isCanPlayCard = false; Card[] selectedCardsArray = selectedCardsLists.ToArray(); //检测是否符合出牌规则 //CardsType type; if (CardRules.PopEnable(selectedCardsArray, out type)) { CardsType rule = DeskCardsCache.Instance.Rule; if (OrderController.Instance.BiggestUid == OrderController.Instance.TypeUid) { isCanPlayCard = true; } else if (DeskCardsCache.Instance.Rule == CardsType.None) { isCanPlayCard = true; } else if (type == rule && selectedCardsLists.Count == DeskCardsCache.Instance.CardsCount && LandlordsModel.Instance.GetWeight(selectedCardsArray, type) > DeskCardsCache.Instance.TotalWeight) { isCanPlayCard = true; } //飞机带1 else if (type == rule && type == CardsType.TripleStraightDaiOne) { if (selectedCardsLists.Count == DeskCardsCache.Instance.CardsCount && LandlordsModel.Instance.GetWeight(selectedCardsArray, type) > DeskCardsCache.Instance.TotalWeight) { isCanPlayCard = true; } } //飞机带2 else if (type == rule && type == CardsType.TripleStraightDaiTwo) { if (selectedCardsLists.Count == DeskCardsCache.Instance.CardsCount && LandlordsModel.Instance.GetWeight(selectedCardsArray, type) > DeskCardsCache.Instance.TotalWeight) { isCanPlayCard = true; } } //炸弹 else if (type == CardsType.Boom && rule != CardsType.Boom) { isCanPlayCard = true; } else if (type == CardsType.JokerBoom) { isCanPlayCard = true; } else if (type == CardsType.Boom && rule == CardsType.Boom && LandlordsModel.Instance.GetWeight(selectedCardsArray, type) > DeskCardsCache.Instance.TotalWeight) { isCanPlayCard = true; } } return(isCanPlayCard); }
/// <summary> /// 检测玩家出牌 /// </summary> /// <param name="selectedCardsList"></param> /// <param name="selectedSpriteList"></param> bool CheckPlayCards(List <Card> selectedCardsList, List <CardSprite> selectedSpriteList) { GameController controller = GameObject.Find("GameController").GetComponent <GameController>(); Card[] selectedCardsArray = selectedCardsList.ToArray(); //检测是否符合出牌规则 CardsType type; if (CardRules.PopEnable(selectedCardsArray, out type)) { CardsType rule = DeskCardsCache.Instance.Rule; if (OrderController.Instance.Biggest == OrderController.Instance.Type) { PlayCards(selectedCardsList, selectedSpriteList, type); return(true); } else if (DeskCardsCache.Instance.Rule == CardsType.None) { PlayCards(selectedCardsList, selectedSpriteList, type); return(true); } //炸弹 else if (type == CardsType.Boom && rule != CardsType.Boom) { controller.Multiples = 2; PlayCards(selectedCardsList, selectedSpriteList, type); return(true); } else if (type == CardsType.JokerBoom) { controller.Multiples = 4; PlayCards(selectedCardsList, selectedSpriteList, type); return(true); } else if (type == CardsType.Boom && rule == CardsType.Boom && GameController.GetWeight(selectedCardsArray, type) > DeskCardsCache.Instance.TotalWeight) { controller.Multiples = 2; PlayCards(selectedCardsList, selectedSpriteList, type); return(true); } else if (GameController.GetWeight(selectedCardsArray, type) > DeskCardsCache.Instance.TotalWeight) { PlayCards(selectedCardsList, selectedSpriteList, type); return(true); } } return(false); }
/// <summary> /// 别人出牌后,检测自己是否可以碰或者点杠 /// </summary> public int CheckOtherPlayCard(Int64 cardID, Int64 laizipi) { int temp = 0; int flag = 0;; PlayerData data; data = _infoList[(Int32)selfOrderIndex - 1]; if (CardRules.PopEnable(data.HandCardList, cardID, laizipi) == 2) { flag = 2; } else if (CardRules.PopEnable(data.HandCardList, cardID, laizipi) == 3) { flag = 3; if (cardID == laizipi) { flag = 4; } // EventDispatcher.GetInstance().UIFrameWorkEventManager.TriggerEvent<Int64, Int64>(EventId.SelfCanPengOrGang, 3, cardID); } if (CardRules.IsHupai(data.HandCardList, laizi, cardID, gameRule)) { // temp = 5; if (flag == 2) { flag = 7; } else if (flag == 3) { flag = 8; } else if (flag == 0) { flag = 9; } } // CheckSelfAddCard(cardID, laizi, laizipi); // CheckSelfByAddCard(); return(flag); }
protected void DiscardCards(List <Card> selectedCardsList, List <CardSprite> selectedSpriteList) { Card[] selectedCardsArray = selectedCardsList.ToArray(); //检测是否符合出牌规则 CardsType type; if (CardRules.PopEnable(selectedCardsArray, out type)) { HandCards player = gameObject.GetComponent <HandCards>(); //如果符合将牌从手牌移到出牌缓存区 DeskCardsCache.Instance.Clear(); DeskCardsCache.Instance.Rule = type; for (int i = 0; i < selectedSpriteList.Count; i++) { DeskCardsCache.Instance.AddCard(selectedSpriteList[i].Poker); selectedSpriteList[i].transform.parent = GameObject.Find("Desk").transform.Find("StartPoint"); selectedSpriteList[i].Poker = selectedSpriteList[i].Poker; } DeskCardsCache.Instance.Sort(); GameController.AdjustCardSpritsPosition(CharacterType.Desk); GameController.AdjustCardSpritsPosition(player.cType); GameController.UpdateLeftCardsCount(player.cType, player.CardsCount); if (player.CardsCount == 0) { Debug.Log("Game OVer!"); //GameObject.Find("GameController").GetComponent<GameController>().GameOver(); } else { OrderController.Instance.Biggest = player.cType; OrderController.Instance.Turn(); } } }