Пример #1
0
        public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo)
        {
            if (!Gongyong.userlist.Any(w => w.session.SessionID.Equals(session.SessionID)))
            {
                session.Logger.Debug("AddRoom : 非法连接");
                session.Close();
                return;
            }
            ///定义返回状态码
            string          staut    = "10000";
            var             nowsend  = ReturnAddRoom.CreateBuilder();
            List <Userinfo> listuser = new List <Userinfo>();
            ///当前返回信息
            var getdata = SendAddRoom.ParseFrom(requestInfo.Body);
            ///根据上传信息查找房间
            Room rm      = Gongyong.roomlist.Find(u => u.RoomID == getdata.RoomID);
            var  roommsg = ReturnRoomMsg.CreateBuilder();
            //储存IP
            List <UserInfo> ListUserIP = new List <UserInfo>();

            if (rm != null)
            {
                List <mjuser> mulist = Gongyong.mulist.FindAll(u => u.RoomID == getdata.RoomID);
                mjuser        mjuser = Gongyong.mulist.Find(u => u.RoomID == getdata.RoomID && u.Openid == getdata.Openid);

                if (mulist.Count == rm.room_peo)
                {
                    staut = "10002";
                }
                else
                {
                    List <int> shuzhu = new List <int>()
                    {
                        1, 2, 3, 4
                    };
                    ///移除以坐的方位,并添加以有玩家信息
                    var senddata = ReturnUserInfo.CreateBuilder();

                    //for(int i=0;i< mulist.Count();i++)
                    foreach (mjuser item in mulist)
                    {
                        UserInfo gamer = Gongyong.userlist.Find(u => u.openid == item.Openid);
                        Userinfo users = Userinfo.CreateBuilder().SetHeadimg(gamer.headimg).SetNickname(gamer.nickname).SetOpenid(gamer.openid).SetSex(int.Parse(gamer.sex)).SetUserFW(item.ZS_Fw).SetUserBean(0).SetUserGold(0).SetUserID(gamer.UserID).SetUserIP(gamer.UserIP).Build();
                        listuser.Add(users);
                        shuzhu.Remove(item.ZS_Fw);
                        senddata.AddUserinfo(users);
                        nowsend.AddUserinfo(users);
                    }
                    if (mjuser != null)
                    {
                        return;
                    }
                    else
                    {
                        ///添加新加入玩家信息
                        mjuser mj = new mjuser()
                        {
                            Openid             = getdata.Openid,
                            ZS_Fw              = shuzhu[0],
                            RoomID             = getdata.RoomID,
                            ConfirmationStarts = true,
                            SendData           = new List <ArraySegment <byte> >(),
                            IsGuoHu            = false
                        };
                        Gongyong.mulist.Add(mj);
                    }


                    ///将当前的用户信息添加到下发文件包
                    UserInfo gameuser = Gongyong.userlist.Find(u => u.openid == getdata.Openid);
                    gameuser.Lat = getdata.Latitude;
                    Userinfo newuser = Userinfo.CreateBuilder().SetHeadimg(gameuser.headimg).SetNickname(gameuser.nickname).SetOpenid(gameuser.openid).SetSex(int.Parse(gameuser.sex)).SetUserFW(shuzhu[0]).SetUserGold(0).SetUserBean(0).SetUserID(gameuser.UserID).SetUserIP(gameuser.UserIP).Build();
                    listuser.Add(newuser);
                    senddata.AddUserinfo(newuser);
                    nowsend.AddUserinfo(newuser);
                    List <mjuser> mu       = Gongyong.mulist.FindAll(u => u.RoomID == getdata.RoomID);
                    var           dis      = ReturnDis.CreateBuilder();
                    var           closeGPS = ReturnCloseGPS.CreateBuilder();

                    ///向已有玩家下发信息
                    foreach (mjuser items in mu)
                    {
                        UserInfo gamersend = Gongyong.userlist.Find(u => u.openid == items.Openid);
                        if (gamersend.Lat.Equals("0,0") || string.IsNullOrEmpty(gamersend.Lat))
                        {
                            //Console.WriteLine("AddRoom : " + gamersend.session.Config.Ip + " lat 为 0");
                            //Console.WriteLine(" : " + mjuser.)
                            closeGPS.AddFW(items.ZS_Fw);
                            //gamersend.session.Send(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7091, dataGPS.Length, requestInfo.MessageNum, dataGPS)));
                        }
                        else if (gameuser.Lat.Equals("0,0") || string.IsNullOrEmpty(gameuser.Lat))
                        {
                            if (items.Openid.Equals(gameuser.openid))
                            {
                                //Console.WriteLine("AddRoom : " + gamersend.session.Config.Ip + " lat 为 0");
                                if (!closeGPS.FWList.Any(w => w == items.ZS_Fw))
                                {
                                    closeGPS.AddFW(items.ZS_Fw);
                                }
                            }
                        }
                        else
                        {
                            var userdis = ReturnDis.CreateBuilder();


                            //double jl = Erth.GetDistance(gamersend.Lat, gameuser.Lat);
                            double jl = 1;  //  测试修改
                            if (shuzhu[0] != items.ZS_Fw)
                            {
                                //if (jl < GameInformationBase.DISTANCE)
                                if (jl < 0.001f) //任光粤测试修改
                                {
                                    Console.WriteLine("距离为 : " + jl + gamersend.nickname + ":" + gamersend.Lat + " , " + gameuser.nickname + " : " + gameuser.Lat);
                                    rm.Is_Jin = true;

                                    rm.Juser1 = shuzhu[0];
                                    rm.Juser2 = items.ZS_Fw;
                                }
                            }
                            dis.SetDis(jl.ToString());
                            dis.SetFW(items.ZS_Fw);
                            userdis.SetFW(shuzhu[0]);
                            userdis.SetDis(jl.ToString());
                            ListUserIP.Add(gamersend);


                            byte[]    dataMJ     = userdis.Build().ToByteArray();
                            byte[]    datauser   = dis.Build().ToByteArray();
                            AppServer userserver = new AppServer();
                            gamersend.session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7091, dataMJ.Length, requestInfo.MessageNum, dataMJ)));
                            gameuser.session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7091, datauser.Length, requestInfo.MessageNum, datauser)));
                        }
                        System.Threading.Thread.Sleep(100);
                        byte[] data = senddata.Build().ToByteArray();
                        gamersend.session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 2005, data.Length, requestInfo.MessageNum, data)));
                        ///如果人数满足,下发游戏开始信息
                        if (mu.Count == rm.room_peo)
                        {
                            //牌局回放保存用户信息
                            rm.gameOperationProcess.SetUserInfo(senddata);
                            foreach (var item in Gongyong.mulist.FindAll(u => u.RoomID == rm.RoomID))
                            {
                                if (!item.ConfirmationStarts)
                                {
                                    rm.startgame = 2;
                                }
                            }
                            rm.startgame = rm.startgame == 2 ? 0 : 1;

                            //ReturnStart startgame = ReturnStart.CreateBuilder().SetStart(1).Build();
                            //byte[] bstart = startgame.ToByteArray();
                            //gamersend.session.TrySend(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 2008, bstart.Length, requestInfo.MessageNum, bstart)));
                        }
                    }

                    if (closeGPS.FWCount > 0)
                    {
                        foreach (mjuser items in mu)
                        {
                            var      dataGPS   = closeGPS.Build().ToByteArray();
                            UserInfo gamersend = Gongyong.userlist.Find(u => u.openid == items.Openid);
                            gamersend.session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7097, dataGPS.Length, requestInfo.MessageNum, dataGPS)));
                        }
                    }
                }
            }
            else
            {
                staut = "10001";
            }
            ///判断房间不为空 发生房间信息
            if (rm != null)
            {
                roommsg.SetCount(rm.count)
                .SetIsBenji(rm.is_benji == true ? 1 : 0)
                .SetIsShangxiaji(rm.is_shangxiaji == true ? 1 : 0)
                .SetIsWgj(rm.is_wgj == true ? 1 : 0)
                .SetIsXinqiji(rm.is_xinqiji == true ? 1 : 0)
                .SetIsYikousan(rm.is_yikousan == true ? 1 : 0)
                .SetRoomPeo(rm.room_peo)
                .SetIsLianzhuang(rm.is_lianz == true ? 1 : 0)
                .SetIsYuanque(rm.IsYuanQue ? 1 : 0)
                .SetQuickCard(rm.QuickCard?1:0);
                byte[] roommsgb = roommsg.Build().ToByteArray();


                session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7003, roommsgb.Length, requestInfo.MessageNum, roommsgb)));
            }



            System.Threading.Thread.Sleep(100);
            nowsend.SetState(int.Parse(staut));

            byte[] datanew = nowsend.Build().ToByteArray();
            session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 2004, datanew.Length, requestInfo.MessageNum, datanew)));

            //如果有玩家距离过近,提醒牌桌所有用户,并接受确认
            if (rm.Is_Jin)
            {
                byte[] jusers = ReturnIsJ.CreateBuilder().SetFWO(rm.Juser1).SetFWW(rm.Juser2).Build().ToByteArray();
                rm.startgame = 0;

                SendRoomAllUser(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7092, jusers.Length, requestInfo.MessageNum, jusers)), getdata.RoomID);
            }
            List <UserInfo> waringList = new List <UserInfo>();

            //如果有玩家IP一样
            foreach (var item in ListUserIP)
            {
                if (ListUserIP.Where(w => w.UserIP.Equals(item.UserIP)).Count() > 1)
                {
                    waringList.Add(item);
                }
            }
            if (waringList.Count > 1)
            {
                var ipSame = ReturnIPSame.CreateBuilder();
                foreach (var item in ListUserIP)
                {
                    var userInfo = Gongyong.mulist.First(w => w.Openid.Equals(item.openid));
                    if (userInfo != null)
                    {
                        ipSame.AddFW(userInfo.ZS_Fw);
                    }
                }
                var jusers = ipSame.Build().ToByteArray();
                rm.startgame = 0;
                SendRoomAllUser(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7093, jusers.Length, requestInfo.MessageNum, jusers)), getdata.RoomID);
            }
            rm.gameOperationProcess.SetMessage(roommsg);//牌局回放保存房间信息
            session.Logger.Debug("用户请求加入房间:" + getdata.RoomID + ",openid:" + getdata.Openid + "----------" + DateTime.Now);
            if (rm.startgame == 1)
            {
                //将牌桌信息保存
                RedisUtility.Set <RedisGameRoomInfo>(RedisUtility.GetKey(GameInformationBase.COMMUNITYROOMINFO, rm.RoomID.ToString(), ""),
                                                     new RedisGameRoomInfo {
                    room = rm, ServerName = GameInformationBase.serverName
                });
                foreach (var item in Gongyong.mulist.FindAll(u => u.RoomID == rm.RoomID))
                {
                    if (!item.ConfirmationStarts)
                    {
                        return;
                    }
                }
                session.Logger.Debug("发牌");
                ///查找当前玩家集合
                List <mjuser> mjList = Gongyong.mulist.FindAll(u => u.RoomID == rm.RoomID);

                CardsLogic logic  = new CardsLogic();
                int        number = 0;//发牌次数,从0开始计数

                //根据
                ///获取房主信息
                ///


                string homeownerOpenid = "";
                foreach (var item in mjList)
                {
                    if (item.IsHomeowner)
                    {
                        //如果是房主,记录该房主的openid
                        homeownerOpenid = item.Openid;
                    }
                }


                var roominfodal  = new RoomInfoDAL();
                var createuserid = roominfodal.GetCreateUserIdByRoomId(rm.RoomID);
                //var groupid = roominfodal.GetGroupInfoByGroupID(createuserid);
                var groupid = rm.GroupID;

                //不是圈子用户,直接进行扣费
                if (groupid == 0)
                {
                    RoomCardUtility.ReduceRoomCard(createuserid, (rm.count / 4) * 1);
                }
                else
                {
                    GroupInfoDAL groupInfoDAL      = new GroupInfoDAL();
                    var          creategroupuderid = groupInfoDAL.GetUserIDByGuoupID(groupid);
                    var          reducecount       = (rm.count / 8) * 1;
                    RoomCardUtility.ReduceRoomCard(creategroupuderid, reducecount);

                    ////向日志里面添加朋友圈耗卡信息
                    groupInfoDAL.AddCreateRoomRecord(creategroupuderid, groupid, rm.RoomID, reducecount);
                }

                var dcount = rm.Dcount;
                foreach (var item in mjList)
                {
                    ReturnStartGame.Builder    sendmj        = ReturnStartGame.CreateBuilder();
                    ReturnGang.Builder         ReturnGangMSG = ReturnGang.CreateBuilder();
                    List <model.ServerMaJiang> Ruturnjsmj    = new List <model.ServerMaJiang>();
                    item.paixinfs = 5;
                    Gongyong.mulist.Remove(item);
                    if (rm.IsYuanQue)
                    {
                        item.QYM = 3;
                    }
                    logic.GetMyCards(requestInfo, sendmj, ReturnGangMSG, Ruturnjsmj, session, rm.RoomID, item, item.Openid, ref dcount);
                }
            }
        }
Пример #2
0
        public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo)
        {
            if (!Gongyong.userlist.Any(w => w.session.SessionID.Equals(session.SessionID)))
            {
                session.Logger.Debug("ConnData : 非法连接");
                session.Close();
                return;
            }
            var getinfo = SendConnData.ParseFrom(requestInfo.Body);

            var userInfo = Gongyong.userlist.Find(u => u.openid == getinfo.Openid);

            if (userInfo == null)
            {
                session.Close();
            }
            userInfo.session = session;

            mjuser mj = Gongyong.mulist.Find(u => u.Openid == getinfo.Openid);

            if (mj == null)
            {
                return;
            }
            List <mjuser> mjlist  = Gongyong.mulist.FindAll(u => u.RoomID == mj.RoomID);
            var           roommsg = ReturnRoomMsg.CreateBuilder();

            Room rm = Gongyong.roomlist.Find(u => u.RoomID == mj.RoomID);

            if (rm == null)
            {
                return;
            }
            var userinfo = Userinfo.CreateBuilder();
            ///返回重连状态
            //  var ifconn = ReturnRecon.CreateBuilder().SetState(1).Build();
            ///返回房间用户信息
            var userinfobyroom = ReturnUserInfo.CreateBuilder();
            var mjhy           = MaJiang.CreateBuilder();
            var hyyh           = ReturnHyUser.CreateBuilder();

            if (!string.IsNullOrEmpty(rm.DQHY.ToString()))
            {
                hyyh.SetFw(rm.DQHY);
            }
            else
            {
                hyyh.SetFw(0);
            }


            if (!string.IsNullOrEmpty(rm.DQcz))
            {
                hyyh.SetCz(rm.DQcz);
            }
            else
            {
                hyyh.SetCz("");
            }

            if (rm.PaiHSCZ != null)
            {
                mjhy.SetPaiID(rm.PaiHSCZ.PaiId);
                mjhy.SetPaiHS(rm.PaiHSCZ.PaiHs);
            }
            else
            {
                mjhy.SetPaiID(0);
                mjhy.SetPaiHS(0);
            }
            hyyh.SetMj(mjhy);

            var         returndata   = ReturnConnData.CreateBuilder();
            List <byte> returnzhuang = new List <byte>();
            List <model.ServerMaJiang> Ruturnjsmj = new List <model.ServerMaJiang>();
            int myFW = 0;

            foreach (mjuser mjuseritem in mjlist)
            {
                var MJ = MaJiang.CreateBuilder();
                ///手牌集合
                var shoupai = UserShou.CreateBuilder();
                //碰牌集合
                var pengpai = UserPeng.CreateBuilder();
                ///出牌集合
                var chupai = UserChu.CreateBuilder();
                ///杠
                var gangpai = UserGang.CreateBuilder();


                var userzrj = JpConn.CreateBuilder();
                userzrj.SetFW(mjuseritem.ZS_Fw);
                if (mjuseritem.Is_cfj == true)
                {
                    userzrj.SetCFJ(1);
                }

                if (mjuseritem.Is_zrj == -1)
                {
                    userzrj.SetCFJ(2);
                }


                if (mjuseritem.is_cfwg == true)
                {
                    userzrj.SetWGJ(1);
                }

                if (mjuseritem.is_zrwg == -1)
                {
                    userzrj.SetWGJ(2);
                }

                /**********************返回房间用户信息************************************************/
                UserInfo user = Gongyong.userlist.Find(u => u.openid == mjuseritem.Openid);
                userinfo.SetOpenid(user.openid);
                userinfo.SetNickname(user.nickname);
                userinfo.SetHeadimg(user.headimg);
                userinfo.SetSex(int.Parse(user.sex));
                userinfo.SetUserBean(0);
                userinfo.SetUserGold(0);
                userinfo.SetUserFW(mjuseritem.ZS_Fw);
                userinfo.SetUserID(user.UserID);
                CardUser card = Gongyong.FKUser.Find(u => u.roomid == mjuseritem.RoomID);
                if (card != null)
                {
                    userinfo.SetCumulativeScore(card.GetScoreByPosition(mjuseritem.ZS_Fw));
                    //if (returnzhuang.Count == 0)
                    //    returnzhuang.AddRange(ReturnZhuang.CreateBuilder().SetZhuang(card.win).Build().ToByteArray());
                    if (!returndata.HasZhuang)
                    {
                        returndata.SetZhuang(ReturnZhuang.CreateBuilder().SetZhuang(card.win).SetSeizi(card.Points).SetZhuangCount(card.lianzCount));
                    }
                    shoupai.SetScare(card.GetScoreByPosition(mjuseritem.ZS_Fw));
                }
                else
                {
                    shoupai.SetScare(0);
                }
                userinfobyroom.AddUserinfo(userinfo);
                /***********************返回手牌集合***************************************/
                // int paicount = 0;
                if (mjuseritem.Openid == getinfo.Openid)
                {
                    //foreach (var item in mjuseritem.majiangs)
                    //{
                    //    paicount++;
                    //    MJ.SetPaiHS(item.PaiHs);
                    //    MJ.SetPaiID(item.PaiId);
                    //    shoupai.AddMj(MJ);
                    //}
                    myFW = mjuseritem.ZS_Fw;
                    shoupai.AddRangeMj(mjuseritem.majiangs.Select(w => MaJiang.CreateBuilder().SetPaiHS(w.PaiHs).SetPaiID(w.PaiId).Build()));
                    List <model.ServerMaJiang> majongList = new List <model.ServerMaJiang>();
                    majongList.AddRange(mjuseritem.majiangs.ToArray());
                    if (mjuseritem.majiangs.Count == 14 && mjuseritem.MopaiNumber <= 1 && mjuseritem.Peng.Count == 0 && string.IsNullOrEmpty(mjuseritem.Gong))
                    {
                        Ruturnjsmj = new Ting().ReturnJMJ(majongList);
                    }
                }
                else
                {
                    //foreach (var item in mjuseritem.majiangs)
                    //{
                    //    paicount++;
                    //    MJ.SetPaiHS(0);
                    //    MJ.SetPaiID(0);
                    //    shoupai.AddMj(MJ);
                    //}
                    shoupai.AddRangeMj(mjuseritem.majiangs.Select(w => MaJiang.CreateBuilder().SetPaiHS(0).SetPaiID(0).Build()));
                }
                shoupai.SetFW(mjuseritem.ZS_Fw);
                shoupai.SetPcount(mjuseritem.majiangs.Count);
                shoupai.SetQYM(mjuseritem.QYM);
                shoupai.SetTianting(mjuseritem.Is_tiantX);
                shoupai.SetBaoting(mjuseritem.Is_baotin ? 1 : 0);
                /*****碰牌集合*****************************/
                foreach (var itemP in mjuseritem.Peng)
                {
                    MJ.SetPaiHS(itemP.PaiHs);
                    MJ.SetPaiID(itemP.PaiId);
                    pengpai.AddMj(MJ);
                }
                pengpai.SetFW(mjuseritem.ZS_Fw);

                /****************出牌集合*********************************/
                foreach (var itemC in mjuseritem.chuda)
                {
                    MJ.SetPaiHS(itemC.PaiHs);
                    MJ.SetPaiID(itemC.PaiId);
                    chupai.AddMj(MJ);
                }
                chupai.SetFW(mjuseritem.ZS_Fw);

                gangpai.SetFW(mjuseritem.ZS_Fw);
                if (!string.IsNullOrEmpty(mjuseritem.Gong))
                {
                    gangpai.SetGang(mjuseritem.Gong);
                }
                else
                {
                    gangpai.SetGang("");
                }
                returndata.AddChu(chupai);
                returndata.AddPeng(pengpai);
                returndata.AddGang(gangpai);
                returndata.AddShoupai(shoupai);
                returndata.AddJp(userzrj);


                //chupai.Clear();
                //pengpai.Clear();
                //gangpai.Clear();
                //shoupai.Clear();
            }
            roommsg.SetCount(rm.count).SetIsBenji(rm.is_benji == true ? 1 : 0).SetIsShangxiaji(rm.is_shangxiaji == true ? 1 : 0).SetIsWgj(rm.is_wgj == true ? 1 : 0).SetIsXinqiji(rm.is_xinqiji == true ? 1 : 0).SetIsYikousan(rm.is_yikousan == true ? 1 : 0).SetRoomPeo(rm.room_peo).SetIsLianzhuang(rm.is_lianz == true ? 1 : 0).SetIsYuanque(rm.IsYuanQue?1:0);
            returndata.SetRoomID(mj.RoomID);

            returndata.SetHyUser(hyyh);
            returndata.SetMessage(roommsg);
            returndata.SetUserInfo(userinfobyroom);
            //byte[] hyczall = hyyh.Build().ToByteArray();
            //session.TrySend(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7004, hyczall.Length, requestInfo.MessageNum, hyczall)));
            //byte[] roommsgb = roommsg.Build().ToByteArray();
            //session.TrySend(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7003, roommsgb.Length, requestInfo.MessageNum, roommsgb)));


            //byte[] cState = ifconn.ToByteArray();
            //session.TrySend(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 6001, cState.Length, requestInfo.MessageNum, cState)));

            //byte[] uData = userinfobyroom.Build().ToByteArray();
            //session.TrySend(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 2005, uData.Length, requestInfo.MessageNum, uData)));
            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);
                }
                returndata.SetTp(returntp);
                //byte[] tmjsr = returntp.Build().ToByteArray();
                //session.TrySend(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 2009, tmjsr.Length, requestInfo.MessageNum, tmjsr)));
            }

            // session.TrySend(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5020, returnzhuang.Count, GameInformationBase.BASEAGREEMENTNUMBER + 7093, returnzhuang.ToArray())));
            //if (mj.SendData != null)
            //    session.TrySend(mj.SendData);
            if (mj.SendData != null)
            {
                returndata.AddRangeSendData(mj.SendData.Select(w => ByteString.CopyFrom(w.ToArray())));
            }
            if (rm.LastMoMJ != null)
            {
                returndata.SetLastMomj(MaJiang.CreateBuilder().SetPaiHS(rm.LastMoMJ.PaiHs).SetPaiID(rm.LastMoMJ.PaiId));
            }
            if (rm.LastChuMJ != null)
            {
                returndata.SetLastChumj(MaJiang.CreateBuilder().SetPaiHS(rm.LastChuMJ.PaiHs).SetPaiID(rm.LastChuMJ.PaiId));
            }
            returndata.SetGameNumber(rm.Dcount);
            var jxRoom = Gongyong.room_JX.Find(u => u.room_id == returndata.RoomID);

            if (jxRoom == null)
            {
                returndata.SetJiXuYouXi(0);
            }
            else
            {
                returndata.SetJiXuYouXi(jxRoom.UsersFW.Any(w => w == myFW) ? 1 : 0);
            }
            returndata.SetPaiCount(rm.RoomPai.Count);
            if (!returndata.HasZhuang)
            {
                returndata.SetZhuang(ReturnZhuang.CreateBuilder().SetZhuang(1).SetSeizi("").SetZhuangCount(1));
            }
            byte[] rData = returndata.Build().ToByteArray();
            session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7001, rData.Length, requestInfo.MessageNum, rData)));
            Gongyong.msg.RemoveAll(w => w.openid.Equals(userInfo.openid));
            session.Logger.Debug("断线重连结束" + userInfo.openid);
        }