Esempio n. 1
0
        public void CallBack(object state)
        {
            var roomInfo = Gongyong.roomlist.Find(w => w.RoomID == roomID);

            if (roomInfo == null)
            {
                return;
            }
            var muInfo = Gongyong.mulist.Find(w => w.Openid.Equals(openID));

            if (muInfo == null)
            {
                return;
            }

            //lock (ThreadUtility.myObject)
            //{ }
            if (roomInfo.QuickCard)//只有快速出牌才会有10秒出牌roomInfo.DQHY== mulist.ZS_Fw
            {
                var info     = new ProtobufRequestInfo();
                var userInfo = Gongyong.userlist.Find(w => w.openid.Equals(muInfo.Openid));
                if (currentOperation.IndexOf("30071") >= 0 && muInfo.Is_tiantX == -1)//天听
                {
                    userInfo.session.Logger.Debug("10秒后自动30071:" + userInfo.openid);
                    info = new ProtobufRequestInfo();
                    // var userInfo = Gongyong.userlist.Find(w => w.openid.Equals(muInfo.Openid));
                    var guo = SendPeng.CreateBuilder()
                              .SetState(2)
                              .SetOpenid(userInfo.openid)
                              .SetRoomid(roomID)
                              .SetTypes(4);
                    info = new ProtobufRequestInfo();

                    guo.SetFW(roomInfo.DQHY);
                    info.Body          = guo.Build().ToByteArray();
                    info.Key           = "14001";
                    info.Messagelength = info.Body.Length;
                    info.MessageNum    = 14001;
                    info.MessageResNum = 0;
                    new Gang().ExecuteCommand(userInfo.session, info);
                }
                else if (currentOperation.IndexOf("3002") >= 0 && muInfo.QYM == 0)
                {
                    userInfo.session.Logger.Debug("10秒后自动3002:" + userInfo.openid);
                    //foreach (var item in Gongyong.mulist.FindAll(w =>w.RoomID==roomID&& w.QYM == 0))
                    //{  }
                    info     = new ProtobufRequestInfo();
                    userInfo = Gongyong.userlist.Find(w => w.openid.Equals(muInfo.Openid));
                    var qym    = muInfo.majiangs.Select(w => new { Tong = (w.PaiHs < 10 ? 1 : 0), Tiao = (w.PaiHs > 10 && w.PaiHs < 20 ? 1 : 0), Wan = (w.PaiHs > 20 ? 1 : 0) });//遍历所有花色
                    var mydata = from r in qym
                                 group r by new { r.Tiao, r.Tong, r.Wan } into g
                        select new { key = g.Key, number = g.Count() };           //统计花色
                    var key = mydata.OrderBy(w => w.number).FirstOrDefault().key; //取出最少的花色
                    info.Body          = SendQYM.CreateBuilder().SetType(key.Tiao == 1 ? 2 : (key.Tong == 1 ? 1 : 3)).SetOpenid(muInfo.Openid).Build().ToByteArray();
                    info.Key           = "15011";
                    info.Messagelength = info.Body.Length;
                    info.MessageNum    = 14001;
                    info.MessageResNum = 0;
                    new QYM().ExecuteCommand(userInfo.session, info);
                }
                else if (roomInfo.DQHY == muInfo.ZS_Fw)
                {
                    // var muInfo = Gongyong.mulist.Find(w => w.ZS_Fw == roomInfo.DQHY && w.RoomID == roomID);

                    info = new ProtobufRequestInfo();
                    if (currentOperation.Equals("30083"))
                    {
                        if (muInfo.ByteData == "13002")//因为摸牌逻辑比较多处理时间长,
                        {
                            return;
                        }
                        if (userInfo != null)
                        {
                            var mp   = SendMP.CreateBuilder().SetMType(0).SetOpenid(muInfo.Openid).SetRoomid(roomID).Build();
                            var data = mp.ToByteArray();
                            info.Body          = data;
                            info.Key           = "13002";
                            info.Messagelength = data.Length;
                            info.MessageNum    = 13002;
                            info.MessageResNum = 0;
                            new MoPai().ExecuteCommand(userInfo.session, info);
                            userInfo.session.Logger.Debug("10秒后自动摸牌" + mp);
                        }
                    }

                    if (currentOperation.IndexOf("30082") >= 0)//杠牌
                    {
                        userInfo.session.Logger.Debug("10秒后自动30082:" + userInfo.openid);
                        var guo = SendPeng.CreateBuilder()
                                  .SetState(2)
                                  .SetMj(MaJiang.CreateBuilder()
                                         .SetPaiHS(roomInfo.PaiHSCZ.PaiHs)
                                         .SetPaiID(roomInfo.PaiHSCZ.PaiId))
                                  .SetOpenid(userInfo.openid)
                                  .SetRoomid(roomID)
                                  .SetTypes(2);
                        info = new ProtobufRequestInfo();
                        var dqcz = currentOperation.Split(',');
                        switch (dqcz[1])
                        {
                        case "1":
                            guo.SetFW(int.Parse(dqcz[2])).SetGtype("M");
                            break;

                        case "2":
                            guo.SetFW(roomInfo.DQHY).SetGtype("Z");
                            break;

                        case "3":
                            guo.SetFW(roomInfo.DQHY).SetGtype("A");
                            break;

                        case "4":
                            guo.SetFW(roomInfo.DQHY).SetGtype("h");
                            break;
                        }
                        info.Body          = guo.Build().ToByteArray();
                        info.Key           = "14001";
                        info.Messagelength = info.Body.Length;
                        info.MessageNum    = 14001;
                        info.MessageResNum = 0;
                        new Gang().ExecuteCommand(userInfo.session, info);
                    }
                    else if (currentOperation.IndexOf("30081") >= 0)//碰
                    {
                        userInfo.session.Logger.Debug("10秒后自动30081:" + userInfo.openid);
                        var guo = SendPeng.CreateBuilder()
                                  .SetState(2)
                                  .SetMj(MaJiang.CreateBuilder()
                                         .SetPaiHS(roomInfo.PaiHSCZ.PaiHs)
                                         .SetPaiID(roomInfo.PaiHSCZ.PaiId))
                                  .SetOpenid(userInfo.openid)
                                  .SetRoomid(roomID)
                                  .SetTypes(1);
                        info = new ProtobufRequestInfo();
                        var dqcz = currentOperation.Split(',');
                        guo.SetFW(int.Parse(dqcz[1]));
                        info.Body          = guo.Build().ToByteArray();
                        info.Key           = "14001";
                        info.Messagelength = info.Body.Length;
                        info.MessageNum    = 14001;
                        info.MessageResNum = 0;
                        new Gang().ExecuteCommand(userInfo.session, info);
                    }

                    else if (currentOperation.IndexOf("30070") >= 0)//天胡
                    {
                        userInfo.session.Logger.Debug("10秒后自动30070:" + userInfo.openid);
                        var guo = SendPeng.CreateBuilder()
                                  .SetState(2)
                                  .SetOpenid(userInfo.openid)
                                  .SetRoomid(roomID)
                                  .SetTypes(5);
                        info = new ProtobufRequestInfo();
                        var dqcz = currentOperation.Split(',');
                        guo.SetFW(roomInfo.DQHY);
                        info.Body          = guo.Build().ToByteArray();
                        info.Key           = "14001";
                        info.Messagelength = info.Body.Length;
                        info.MessageNum    = 14001;
                        info.MessageResNum = 0;
                        new Gang().ExecuteCommand(userInfo.session, info);
                    }
                    else if (currentOperation.IndexOf("30080") >= 0)//胡
                    {
                        userInfo.session.Logger.Debug("30080:" + userInfo.openid);
                        var guo = SendPeng.CreateBuilder()
                                  .SetState(2)
                                  .SetOpenid(userInfo.openid)
                                  .SetRoomid(roomID)
                                  .SetTypes(3).SetMj(MaJiang.CreateBuilder()
                                                     .SetPaiHS(roomInfo.PaiHSCZ.PaiHs)
                                                     .SetPaiID(roomInfo.PaiHSCZ.PaiId));
                        info = new ProtobufRequestInfo();
                        // var dqcz = currentOperation.Split(',');
                        guo.SetFW(roomInfo.DQHY);
                        info.Body          = guo.Build().ToByteArray();
                        info.Key           = "14001";
                        info.Messagelength = info.Body.Length;
                        info.MessageNum    = 14001;
                        info.MessageResNum = 0;
                        new Gang().ExecuteCommand(userInfo.session, info);
                    }
                    else if (currentOperation.IndexOf("3001") >= 0)//出牌
                    {
                        userInfo.session.Logger.Debug("10秒后自动3001:" + userInfo.openid);
                        var chu = SendCP.CreateBuilder()
                                  .SetRoomid(roomID)
                                  .SetOpenid(userInfo.openid)
                                  .SetType(0);
                        switch (muInfo.QYM)
                        {
                        case 1:
                            if (muInfo.majiangs.Any(u => u.PaiHs < 10))
                            {
                                var mj = muInfo.majiangs.Find(u => u.PaiHs < 10);
                                chu.SetMj(MaJiang.CreateBuilder()
                                          .SetPaiHS(mj.PaiHs)
                                          .SetPaiID(mj.PaiId));
                            }
                            else
                            {
                                chu.SetMj(MaJiang.CreateBuilder()
                                          .SetPaiHS(muInfo.majiangs.Last().PaiHs)
                                          .SetPaiID(muInfo.majiangs.Last().PaiId));
                            }
                            break;

                        case 2:
                            if (muInfo.majiangs.Any(u => u.PaiHs > 10 && u.PaiHs < 20))
                            {
                                var mj = muInfo.majiangs.Find(u => u.PaiHs > 10 && u.PaiHs < 20);
                                chu.SetMj(MaJiang.CreateBuilder()
                                          .SetPaiHS(mj.PaiHs)
                                          .SetPaiID(mj.PaiId));
                            }
                            else
                            {
                                chu.SetMj(MaJiang.CreateBuilder()
                                          .SetPaiHS(muInfo.majiangs.Last().PaiHs)
                                          .SetPaiID(muInfo.majiangs.Last().PaiId));
                            }
                            break;

                        case 3:
                            if (muInfo.majiangs.Any(u => u.PaiHs > 20))
                            {
                                var mj = muInfo.majiangs.Find(u => u.PaiHs > 20);
                                chu.SetMj(MaJiang.CreateBuilder()
                                          .SetPaiHS(mj.PaiHs)
                                          .SetPaiID(mj.PaiId));
                            }
                            else
                            {
                                chu.SetMj(MaJiang.CreateBuilder()
                                          .SetPaiHS(muInfo.majiangs.Last().PaiHs)
                                          .SetPaiID(muInfo.majiangs.Last().PaiId));
                            }
                            break;

                        default:
                            chu.SetMj(MaJiang.CreateBuilder()
                                      .SetPaiHS(muInfo.majiangs.Last().PaiHs)
                                      .SetPaiID(muInfo.majiangs.Last().PaiId));
                            break;
                        }

                        info               = new ProtobufRequestInfo();
                        info.Body          = chu.Build().ToByteArray();
                        info.Key           = "13001";
                        info.Messagelength = info.Body.Length;
                        info.MessageNum    = 14001;
                        info.MessageResNum = 0;
                        new ChuPai().ExecuteCommand(userInfo.session, info);
                    }

                    //if (roomInfo.DQHY == muInfo.ZS_Fw)
                    //    this.CallBack(null);
                    if (userInfo.session != null && userInfo.session.Connected)//发送托管请求
                    {
                        var data = ReturnManaged.CreateBuilder().SetState(1).Build().ToByteArray();
                        userInfo.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 2011, data.Length, 0, data)));
                    }
                }
            }
            //  GC.Collect();
            // MyTimer.Dispose();
            // this.Dispose();
        }
Esempio n. 2
0
        private static void AppServerOnNewRequestReceived(ProtobufAppSession session, ProtobufRequestInfo requestInfo)
        {
            switch (requestInfo.Type)
            {
            case DefeatMessage.Types.Type.BackMessage:
                Console.WriteLine("BackMessage:{0}", requestInfo.Body.BackMessage.Content);
                break;

            case DefeatMessage.Types.Type.CallMessage:
                var content     = requestInfo.Body.CallMessage.Content.Split('%');
                var contentBody = content[0];
                var color       = (ConsoleColor)Enum.Parse(typeof(ConsoleColor), content[1]);


                //Console.WriteLine("CallMessage:{0}", requestInfo.Body.CallMessage.Content);
                ColoredConsoleWriteLine(color, contentBody);

                var backMessage = BackMessage.CreateBuilder()
                                  .SetContent("Hello I am form C# server by SuperSocket").Build();
                var message = DefeatMessage.CreateBuilder()
                              .SetType(DefeatMessage.Types.Type.BackMessage)
                              .SetBackMessage(backMessage).Build();

                using (var stream = new MemoryStream())
                {
                    CodedOutputStream os = CodedOutputStream.CreateInstance(stream);

                    os.WriteMessageNoTag(message);

                    os.Flush();

                    byte[] data = stream.ToArray();
                    session.Send(new ArraySegment <byte>(data));
                }

                break;
            }
        }
Esempio n. 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="requestInfo">请求信息</param>
        /// <param name="sendmj">返回开始游戏集合</param>
        /// <param name="ReturnGangMSG">返回杠牌集合信息</param>
        /// <param name="Ruturnjsmj">返回打出叫牌的集合</param>
        /// <param name="session">ss请求</param>
        /// <param name="roomID">房间ID</param>
        /// <param name="mj">当前玩家</param>
        /// <param name="number">请求次数</param>
        /// <param name="openid"></param>
        public void GetMyCards(ProtobufRequestInfo requestInfo, ReturnStartGame.Builder sendmj, ReturnGang.Builder ReturnGangMSG,
                               List <model.ServerMaJiang> Ruturnjsmj, GameSession session, int roomID, mjuser mj, string openid, ref int number)
        {
            ReturnGangMSG = ReturnGang.CreateBuilder();
            Ruturnjsmj    = new List <model.ServerMaJiang>();
            ///房间牌堆
            List <model.ServerMaJiang> listmj = new List <model.ServerMaJiang>();
            CreateMj C = new CreateMj();

            mj.MopaiNumber = 0;

            ///房间牌堆赋值
            Room    R   = new Room();
            Room_JX rjx = new Room_JX();

            rjx = Gongyong.room_JX.Find(u => u.room_id == roomID);
            if (rjx != null)
            {
                rjx.room_peo = 0;
            }

            R = Gongyong.roomlist.Find(u => u.RoomID == roomID);
            R.MPS++;

            if (Gongyong.roomlist.Find(u => u.RoomID == roomID).RoomPai.Count == 0)
            {
                listmj = C.CreateMJ(R.IsYuanQue);
            }
            else
            {
                listmj = R.RoomPai;
            }
#if DEBUG
            /*    listmj.Insert(0, new ServerMaJiang { PaiHs = 2, PaiId = 201 });
             * listmj.Insert(0, new ServerMaJiang { PaiHs = 2, PaiId = 202 });
             * listmj.Insert(0, new ServerMaJiang { PaiHs = 2, PaiId = 203 });
             * listmj.Insert(0, new ServerMaJiang { PaiHs = 2, PaiId = 204 });
             * listmj.Insert(0, new ServerMaJiang { PaiHs = 1, PaiId = 205 });
             * listmj.Insert(0, new ServerMaJiang { PaiHs = 1, PaiId = 206 });
             * listmj.Insert(0, new ServerMaJiang { PaiHs = 1, PaiId = 207 });
             * listmj.Insert(0, new ServerMaJiang { PaiHs = 1, PaiId = 208 });
             * listmj.Insert(0, new ServerMaJiang { PaiHs = 5, PaiId = 209 });
             * listmj.Insert(0, new ServerMaJiang { PaiHs = 5, PaiId = 210 });
             * listmj.Insert(0, new ServerMaJiang { PaiHs = 6, PaiId = 211 });
             * listmj.Insert(0, new ServerMaJiang { PaiHs = 6, PaiId = 212 });
             * listmj.Insert(0, new ServerMaJiang { PaiHs = 7, PaiId = 213 });
             * listmj.Insert(0, new ServerMaJiang { PaiHs = 7, PaiId = 214 });  */
#endif
            R.startgame = 1;
            CardUser cu = Gongyong.FKUser.Find(u => u.roomid == roomID);
            if (cu == null)
            {
                cu            = new CardUser();
                cu.roomid     = roomID;
                cu.win        = 1;
                cu.dong       = 0;
                cu.xi         = 0;
                cu.nan        = 0;
                cu.bei        = 0;
                cu.jushu      = 0;
                cu.dongM      = 0;
                cu.xiM        = 0;
                cu.nan        = 0;
                cu.beiM       = 0;
                cu.lianzCount = 1;
                Gongyong.FKUser.Add(cu);
            }
            else
            {
                cu.dongM = 0;
                cu.xiM   = 0;

                cu.beiM = 0;
            }

            //  int x = 0;
            int y = 0;

            #region 根据玩家方位判断玩家手牌

            string logs = "";
            for (int i = 0; i < listmj.Count; i++)
            {
                logs += listmj[i].PaiHs + ",";
            }

            session.Logger.Debug("牌堆" + logs);

            //int x = 0;
            //int y = 0;

            if (mj.ZS_Fw == cu.win)
            {
                //  x = 0;
                y = 14;
            }
            else
            {
                // x = 0;
                y = 13;
            }
            #endregion


            ///组装下发数据
            foreach (var item in listmj.Take(y))
            {
                MaJiang fanmj = MaJiang.CreateBuilder().SetPaiHS(item.PaiHs).SetPaiID(item.PaiId).Build();
                mj.majiangs.Add(item);
                int count = mj.majiangs.Count;
                sendmj.AddMj(fanmj);
            }

            // number += y;
            listmj.RemoveRange(0, y);
            R.RoomPai = listmj;
            mj.majiangs.Sort((a, b) => - b.PaiHs.CompareTo(a.PaiHs));
            Gongyong.mulist.Add(mj);
            Ting t = new Ting();
            List <model.ServerMaJiang> listT = new List <model.ServerMaJiang>();
            listT.AddRange(mj.majiangs.ToArray());

            UserInfo userSendJ = Gongyong.userlist.Find(u => u.openid == openid);
            int      PaiHS     = 0;
            if (R.room_peo == 4 || R.IsYuanQue)
            {
                if (cu.win == mj.ZS_Fw)
                {
                    foreach (var item in listT)
                    {
                        List <model.ServerMaJiang> listchuan = listT.FindAll(u => u.PaiHs == item.PaiHs);
                        if (listchuan.Count == 4)
                        {
                            if (PaiHS != item.PaiHs)
                            {
                                var PGH = ReturnAll.CreateBuilder();
                                var mjG = MaJiang.CreateBuilder();
                                mjG.SetPaiHS(item.PaiHs);
                                mjG.SetPaiID(item.PaiId);

                                ReturnGangMSG.AddGang(GangMSG.CreateBuilder().SetFw(cu.win).SetMj(mjG).SetType(3));
                            }
                            PaiHS = item.PaiHs;
                        }
                    }


                    if (ReturnGangMSG.GangCount > 0)
                    {
                        byte[] bytegang = ReturnGangMSG.Build().ToByteArray();
                        userSendJ.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5022, bytegang.Length, requestInfo.MessageNum, bytegang)));
                    }
                }
            }
            var ttAthState = ReturnTTATH.CreateBuilder();

            if (cu.win == mj.ZS_Fw)
            {
                if (t.GetTing(listT) == "H")
                {
                    if (R.room_peo < 4)
                    {
                        switch (mj.QYM)
                        {
                        case 1:
                            if (mj.majiangs.FindAll(u => u.PaiHs < 10).Count <= 0)
                            {
                                // mj.Is_tiantX = -1;
                                ttAthState.SetState(214);
                                mj.Is_tianHu = true;
                            }
                            break;

                        case 2:
                            if (mj.majiangs.FindAll(u => u.PaiHs > 10 && u.PaiHs < 20).Count <= 0)
                            {
                                // mj.Is_tiantX = -1;
                                ttAthState.SetState(214);
                                mj.Is_tianHu = true;
                            }
                            break;

                        case 3:
                            if (mj.majiangs.FindAll(u => u.PaiHs > 20).Count <= 0)
                            {
                                //mj.Is_tiantX = -1;
                                ttAthState.SetState(214);
                                mj.Is_tianHu = true;
                            }
                            break;

                        default:
                            break;
                        }
                    }
                    else
                    {
                        ttAthState.SetState(214);
                        // mj.Is_tiantX = -1;
                        mj.Is_tianHu = true;
                    }
                }
                else
                {
                    if (R.room_peo < 4)
                    {
                        switch (mj.QYM)
                        {
                        case 1:
                            if (mj.majiangs.FindAll(u => u.PaiHs < 10).Count <= 0)
                            {
                                ///庄家报听判断
                                List <model.ServerMaJiang> JPMJ = new List <model.ServerMaJiang>();
                                JPMJ.AddRange(mj.majiangs.ToArray());

                                Ruturnjsmj = t.ReturnJMJ(JPMJ);
                            }

                            break;

                        case 2:
                            if (mj.majiangs.FindAll(u => u.PaiHs > 10 && u.PaiHs < 20).Count <= 0)
                            {
                                ///庄家报听判断
                                List <model.ServerMaJiang> JPMJ = new List <model.ServerMaJiang>();
                                JPMJ.AddRange(mj.majiangs.ToArray());
                                Ruturnjsmj = t.ReturnJMJ(JPMJ);
                            }
                            break;

                        case 3:
                            if (mj.majiangs.FindAll(u => u.PaiHs > 20).Count <= 0)
                            {
                                ///庄家报听判断
                                List <model.ServerMaJiang> JPMJ = new List <model.ServerMaJiang>();
                                JPMJ.AddRange(mj.majiangs.ToArray());
                                Ruturnjsmj = t.ReturnJMJ(JPMJ);
                            }
                            break;

                        default:
                            break;
                        }
                    }
                    else
                    {
                        ///庄家报听判断
                        List <model.ServerMaJiang> JPMJ = new List <model.ServerMaJiang>();
                        JPMJ.AddRange(mj.majiangs.ToArray());
                        Ruturnjsmj = t.ReturnJMJ(JPMJ);
                    }
                }
            }
            else
            {    ///判断天听
                if (t.GetTing(listT) != "MJ")
                {
                    if (R.room_peo < 4)
                    {
                        switch (mj.QYM)
                        {
                        case 1:
                            if (mj.majiangs.FindAll(u => u.PaiHs < 10).Count <= 0)
                            {
                                ttAthState.SetState(213);

                                mj.Is_tiantX = -1;
                                mj.Is_tiant  = true;
                            }
                            break;

                        case 2:
                            if (mj.majiangs.FindAll(u => u.PaiHs > 10 && u.PaiHs < 20).Count <= 0)
                            {
                                ttAthState.SetState(213);


                                mj.Is_tiantX = -1;
                                mj.Is_tiant  = true;
                            }
                            break;

                        case 3:
                            if (mj.majiangs.FindAll(u => u.PaiHs > 20).Count <= 0)
                            {
                                ttAthState.SetState(213);

                                mj.Is_tiantX = -1;
                                mj.Is_tiant  = true;
                            }
                            break;

                        default:
                            break;
                        }
                    }
                    else
                    {
                        ttAthState.SetState(213);

                        mj.Is_tiantX = -1;
                        mj.Is_tiant  = true;
                    }
                }
            }

            if (Ruturnjsmj.Count > 0)
            {
                var returntp = ReturnTP.CreateBuilder();
                var tmj      = MaJiang.CreateBuilder();
                foreach (var mjItem in Ruturnjsmj)
                {
                    tmj.SetPaiHS(mjItem.PaiHs);
                    tmj.SetPaiID(mjItem.PaiId);
                    returntp.AddMj(tmj);
                }
                byte[] tmjsr = returntp.Build().ToByteArray();
                userSendJ.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 2009, tmjsr.Length, requestInfo.MessageNum, tmjsr)));
            }
            sendmj.SetChuuser(cu.win);
            sendmj.SetGamenumber(number);

            //牌局回放 发牌
            R.gameOperationProcess.AddGameOperationInfo(GameOperationInfo.CreateBuilder()
                                                        .SetOperationFW(mj.ZS_Fw)
                                                        .AddRangeMJ(sendmj.MjList)
                                                        .SetSerialNumber(R.gameOperationProcess.GameOperationInfoCount)
                                                        .SetOperationType(0)
                                                        .SetChuUser(cu.win)
                                                        );
            byte[] sendbyte = sendmj.Build().ToByteArray();
            userSendJ.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 2006, sendbyte.Length, requestInfo.MessageNum, sendbyte)));

            if (ttAthState.HasState)
            {
                byte[] sendbytes = ttAthState.Build().ToByteArray();
                userSendJ.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 2010, sendbytes.Length, requestInfo.MessageNum, sendbytes)));
            }
            ///判断房间人数满足 并且没有天听用户才发生活跃用户
            if (R.MPS == R.room_peo)
            {
                List <mjuser> listmjuserstart = Gongyong.mulist.FindAll(u => u.RoomID == mj.RoomID);
                var           userbool        = Gongyong.mulist.FindAll(u => u.RoomID == R.RoomID && u.Is_tiant == true);
                if (userbool.Count == 0 && (R.room_peo == 4 || R.IsYuanQue))//当原缺或者四人桌,没有人天听的时候 为庄家挂上倒计时出牌
                {
                    byte[] startHY = ReturnHyUser.CreateBuilder().SetCz("3001").SetFw(cu.win).Build().ToByteArray();
                    R.DQHY = cu.win;
                    R.DQcz = "3001";
                    foreach (var item in listmjuserstart)
                    {
                        UserInfo user = Gongyong.userlist.Find(u => u.openid == item.Openid);
                        user.IsActive = true;
                        user.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7004, startHY.Length, GameInformationBase.BASEAGREEMENTNUMBER + 7093, startHY)));
                    }
                    if (number == 0)
                    {
                        ThreadUtility.StartManagedThread(listmjuserstart.Find(w => w.ZS_Fw == cu.win).Openid, R.RoomID, R.DQcz);
                    }
                }
                else if (userbool.Count > 0)//当有天听时, 为每个天听用户挂上倒计时
                {
                    R.DQHY = 0;
                    R.DQcz = "30071";
                    if (number == 0)
                    {
                        foreach (var item in userbool)
                        {
                            ThreadUtility.StartManagedThread(item.Openid, R.RoomID, R.DQcz);
                        }
                    }
                }
                else//需要选择缺一门时 为每个用户挂上倒计时
                {
                    R.DQHY = 0;
                    R.DQcz = "3002";
                    if (number == 0)
                    {
                        foreach (var item in listmjuserstart)
                        {
                            ThreadUtility.StartManagedThread(item.Openid, R.RoomID, R.DQcz);
                        }
                    }
                }
                foreach (var item in listmjuserstart)
                {
                    UserInfo user         = Gongyong.userlist.Find(u => u.openid == item.Openid);
                    byte[]   returnzhuang = ReturnZhuang.CreateBuilder().SetZhuang(cu.win).SetSeizi(cu.Points).SetZhuangCount(cu.lianzCount).Build().ToByteArray();
                    user.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5020, returnzhuang.Length, GameInformationBase.BASEAGREEMENTNUMBER + 7093, returnzhuang)));
                }
                // ThreadUtility.StartManagedThread(R.RoomID.ToString(), R.RoomID);
                StringBuilder mjrz = new StringBuilder();
                //foreach (var item in mj.majiangs)
                //{

                //    mjrz.Append(item.PaiHs + ",");

                //}
                //session.Logger.Debug("方位------" + mj.ZS_Fw + "----" + mjrz);
                number++;
            }
        }