Exemple #1
0
        //玩家出牌
        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出牌处理
        }
Exemple #2
0
 //记录出牌信息
 public static void RecordChuCard(this FiveStarRoom fiveStarRoom, Actor_FiveStar_PlayCardResult chuCardResult)
 {
     fiveStarRoom.RecordInfo(FiveStarVideoOpcode.ChuCard, chuCardResult);
 }
 public IEnumerator StarPlay(List <object> datas)
 {
     UIComponent.GetUiView <CardFiveStarVideoPanelComponent>().SetTotalScheduleText(datas.Count - 1); //初始化不算步骤 所有减一
     _ResideNum = 84;                                                                                 //初始化牌数量
     _VideoData = datas;
     for (int i = 0; i < datas.Count; i++)
     {
         UIComponent.GetUiView <CardFiveStarVideoPanelComponent>().SetCurrScheduleText(i);
         object data = datas[i];
         if (data.GetType() == typeof(Video_GameInit))
         {
             Video_GameInit meesage = data as Video_GameInit;
             GameInit(meesage);
         }
         else if (data.GetType() == typeof(Video_Deal))
         {
             Video_Deal meesage = data as Video_Deal;
             Deal(meesage);
             yield return(new WaitForSeconds(2f));
         }
         else if (data.GetType() == typeof(Video_PiaoFen))
         {
             Video_PiaoFen meesage = data as Video_PiaoFen;
             _Coroutines[_Coroutines.Length - 1] = CoroutineMgr.StartCoroutinee(PiaoFen(meesage));
             yield return(new WaitForSeconds(2f));
         }
         else if (data.GetType() == typeof(Actor_FiveStar_PlayCardResult))
         {
             Actor_FiveStar_PlayCardResult meesage = data as Actor_FiveStar_PlayCardResult;
             _PlayerDic[meesage.SeatIndex].Video_ChuCard(meesage.Card);
             CurrEndChuCardSeatIndex = meesage.SeatIndex;
             yield return(new WaitForSeconds(1f));
         }
         else if (data.GetType() == typeof(Actor_FiveStar_MoPai))
         {
             Actor_FiveStar_MoPai meesage = data as Actor_FiveStar_MoPai;
             _PlayerDic[meesage.SeatIndex].Video_MoCard(meesage.Card);
             ReduceCardTotalNum(1);//显示减少一张牌的数量
             yield return(new WaitForSeconds(0.5f));
         }
         else if (data.GetType() == typeof(Actor_FiveStar_OperateResult))
         {
             Actor_FiveStar_OperateResult meesage = data as Actor_FiveStar_OperateResult;
             _PlayerDic[meesage.SeatIndex].Video_PengGangHu(meesage.OperateInfo.OperateType, meesage.OperateInfo.Card, meesage.OperateInfo.PlayCardIndex);
             yield return(new WaitForSeconds(1f));
         }
         else if (data.GetType() == typeof(Actor_FiveStar_LiangDao))
         {
             Actor_FiveStar_LiangDao meesage = data as Actor_FiveStar_LiangDao;
             _PlayerDic[meesage.SeatIndex].Video_LiangDao();
             yield return(new WaitForSeconds(1f));
         }
         else if (data.GetType() == typeof(Actor_FiveStar_MaiMa))
         {
             Actor_FiveStar_MaiMa meesage = data as Actor_FiveStar_MaiMa;
             MaiMa(meesage);
             yield return(new WaitForSeconds(2f));
         }
         else if (data.GetType() == typeof(Actor_FiveStar_SmallResult))
         {
             Actor_FiveStar_SmallResult meesage = data as Actor_FiveStar_SmallResult;
             ShowSmallResult(meesage);
         }
     }
 }