//玩家出牌 public static void PlayCard(this FiveStarPlayer fiveStarPlayer, int card) { if (!fiveStarPlayer.IsCanPlayCard) { return; //不是这个玩家 出牌 直接return } if (fiveStarPlayer.IsLiangDao && fiveStarPlayer.MoEndHand != card) //如果玩家亮倒 就只能出 最后摸的一张牌 { Log.Error("玩家亮倒后 出的牌 不是 最后摸的牌" + card); card = fiveStarPlayer.MoEndHand;//直接帮他出最后摸到的牌 } if (fiveStarPlayer.IsLiangDao && fiveStarPlayer.MoEndHand == card) { //如果是亮倒 状态下 并且出的是摸的最后一张牌 就不要检测 是不是放炮牌 } else { if (fiveStarPlayer.FiveStarRoom.LiangDaoCanHuCards.Contains(card)) { for (int i = 0; i < fiveStarPlayer.Hands.Count; i++) { if (!fiveStarPlayer.FiveStarRoom.LiangDaoCanHuCards.Contains(fiveStarPlayer.Hands[i])) { Log.Error("玩家打出的牌 有亮倒玩家胡");//在没有亮倒情况 除非手中所有的牌都是放炮的牌 就不会进来 就不会return 才可以打 return; } } } } if (!fiveStarPlayer.Hands.Contains(card)) { Log.Error("玩家出的牌手牌中没有" + card); return; } if (fiveStarPlayer.FiveStarRoom.CanPlayCardPlayerIndex == fiveStarPlayer.SeatIndex) { if (fiveStarPlayer.Hands.Contains(card)) { fiveStarPlayer.Hands.Remove(card); Actor_FiveStar_PlayCardResult actorFiveStarPlayCardResult = new Actor_FiveStar_PlayCardResult() { SeatIndex = fiveStarPlayer.SeatIndex, Card = card }; fiveStarPlayer.FiveStarRoom.RecordChuCard(actorFiveStarPlayCardResult);//记录出牌消息 fiveStarPlayer.FiveStarRoom.BroadcastMssagePlayers(actorFiveStarPlayCardResult); } } fiveStarPlayer.PlayCards.Add(card); fiveStarPlayer.FiveStarRoom.PlayerPlayCard(fiveStarPlayer.SeatIndex, card); fiveStarPlayer.IsCanPlayCard = false; fiveStarPlayer.SendNewestHands(); //发送玩家最新的手牌信息 fiveStarPlayer.AIPlayCardDispose(); //AI出牌处理 }