Esempio n. 1
0
        /// <summary>
        /// 解散牌桌
        /// </summary>
        /// <param name="r"></param>
        /// <param name="messageNum">返回消息号</param>
        /// <param name="type">解散类型</param>
        public void DissolutionRoom(Room r, int messageNum, int type)
        {
            List <mjuser> listuser = Gongyong.mulist.FindAll(u => u.RoomID == r.RoomID);
            var           Returnjs = ReturnAllIdea.CreateBuilder().SetState(1).SetMessgaeType(type);

            byte[] Sdata = Returnjs.Build().ToByteArray();
            //if (Gongyong.userlist.Count == 0)
            //    return;
            foreach (var item in listuser)
            {
                UserInfo user = Gongyong.userlist.Find(u => u.openid == item.Openid);
                if (user != null)
                {
                    //RedisUtility.Get<RedisLoginModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERLIST, gameOperation.Openid, gameOperation.Unionid));
                    //将用户游戏信息更新
                    RedisUtility.Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERGAME, user.openid, user.unionid));
                    //RedisUtility.Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERLIST, user.openid, user.unionid));
                    user.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5007, Sdata.Length, messageNum, Sdata)));
                }
            }

            Gongyong.roomlist.Remove(r);
            Gongyong.mulist.RemoveAll(u => u.RoomID == r.RoomID);
            RedisUtility.Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYROOMINFO, r.RoomID.ToString(), ""));
            new RoomInfoDAL().UpdateEndRoomInfoByRoomInfoID(new RoomInfo {
                RoomInfoID = r.RoomInfoID, EndTime = DateTime.Now, EndStatus = type
            });
        }
Esempio n. 2
0
        /// <summary>
        /// 解散牌桌
        /// </summary>
        /// <param name="roomId"></param>
        /// <param name="MessageNum"></param>
        public void DisbandTable(object state)
        {
            var countdownInfo = state as CountdownInfo;

            RoomClear r = Gongyong.roomclear.Find(u => u.RoomID == countdownInfo.roomID);

            if (r == null)
            {
                return;
            }
            ThreadUtility.RemoveManagedThreadByRoomID(countdownInfo.roomID);//取消托管
            List <mjuser> listmj      = Gongyong.mulist.FindAll(u => u.RoomID == countdownInfo.roomID);
            var           senddjs     = ReturnDJS.CreateBuilder();
            CardUser      card        = Gongyong.FKUser.Find(u => u.roomid == countdownInfo.roomID);
            string        userWinLose = string.Empty;

            foreach (var item in listmj)
            {
                UserInfo gamer = Gongyong.userlist.Find(u => u.openid == item.Openid);
                if (gamer == null)
                {
                    continue;
                }
                var 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).Build();
                var jsddr = UserAJS.CreateBuilder();
                jsddr.SetUser(users);
                jsddr.SetZdou(item.zwd_count);
                jsddr.SetZimo(item.zm_count);
                jsddr.SetAndou(item.ad_count);
                jsddr.SetMdou(item.MD_count);
                jsddr.SetDianpao(item.dp_count);

                switch (item.ZS_Fw)
                {
                case 1:
                    jsddr.SetScare(card == null ? 0 : card.dong);
                    break;

                case 2:
                    jsddr.SetScare(card == null ? 0 : card.nan);
                    break;

                case 3:
                    jsddr.SetScare(card == null ? 0 : card.xi);
                    break;

                case 4:
                    jsddr.SetScare(card == null ? 0 : card.bei);
                    break;

                default:
                    break;
                }
                senddjs.AddUserjs(jsddr);
                senddjs.SetState(2);
                if (!string.IsNullOrEmpty(userWinLose))
                {
                    userWinLose += "|";
                }
                userWinLose += gamer.UserID + "," + jsddr.Scare;
            }
            senddjs.SetState(2);
            Gongyong.mulist.RemoveAll(u => u.RoomID == countdownInfo.roomID);
            var roomInfo = Gongyong.roomlist.Find(w => w.RoomID == countdownInfo.roomID);

            Gongyong.roomlist.RemoveAll(u => u.RoomID == countdownInfo.roomID);
            var alldata = ReturnAllIdea.CreateBuilder().SetState(1).SetMessgaeType(3).Build();

            byte[] bytesss  = alldata.ToByteArray();
            byte[] bsenddjs = senddjs.Build().ToByteArray();
            foreach (var item in listmj)
            {
                UserInfo user = Gongyong.userlist.Find(u => u.openid == item.Openid);
                if (user != null)
                {
                    user.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5007, bytesss.Length, countdownInfo.MessageNum, bytesss)));//yi
                    user.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5014, bsenddjs.Length, countdownInfo.MessageNum, bsenddjs)));
                    RedisUtility.Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERGAME, user.openid, user.unionid));
                }
            }
            foreach (var item in Gongyong.msg.FindAll(w => w.RoomID == r.RoomID))
            {
                Gongyong.msg.Remove(item);
            }

            RedisUtility.Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYROOMINFO, r.RoomID.ToString(), ""));

            new RoomInfoDAL().UpdateEndRoomInfoByRoomInfoID(new RoomInfo {
                RoomInfoID = roomInfo.RoomInfoID, EndTime = DateTime.Now, EndStatus = 3, UserWinLose = userWinLose
            });
            foreach (var item in listmj)
            {
                UserInfo user = Gongyong.userlist.Find(u => u.openid == item.Openid);
                new userRecordLOGDAL().Add(new userRecordlogLOG {
                    UserID = user.UserID, RoomInfoID = roomInfo.RoomInfoID, UserWinLose = userWinLose, EndTime = DateTime.Now, CreateDate = roomInfo.CreateDate, RoomID = r.RoomID
                });
            }
        }
Esempio n. 3
0
        public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo)
        {
            if (!Gongyong.userlist.Any(w => w.session.SessionID.Equals(session.SessionID)))
            {
                session.Logger.Debug("ClearByUser : 非法连接");
                session.Close();
                return;
            }
            var getdata = SendJSIdea.ParseFrom(requestInfo.Body);

            session.Logger.Debug(getdata.ToString());
            RoomClear r = Gongyong.roomclear.Find(u => u.RoomID == getdata.Roomid);

            if (r == null)
            {
                return;
            }
            else
            {
                if (getdata.State == 1)
                {
                    r.RoomPeo.RemoveAll(u => u == getdata.Openid);
                    if (ThreadUtility.IsExist(r.RoomID.ToString()))
                    {
                        ThreadUtility.StartCountdownRemoveRoomThread(r.RoomID.ToString());
                    }
                }
                else
                {
                    r.Status = 0;
                    r.RoomPeo.RemoveAll(u => u == getdata.Openid);
                    ThreadUtility.StartCountdownRemoveRoomThread(r.RoomID.ToString());
                }
                List <mjuser> listmj = Gongyong.mulist.FindAll(u => u.RoomID == getdata.Roomid);
                if (listmj.Count == 0)
                {
                    return;
                }
                int    fw         = listmj.Find(w => w.Openid.Equals(getdata.Openid)).ZS_Fw;
                var    rdatabyone = ReturnJSByOnew.CreateBuilder().SetNickName(Gongyong.userlist.Find(u => u.openid == getdata.Openid).nickname).SetState(getdata.State).SetFw(fw).Build();
                byte[] rd         = rdatabyone.ToByteArray();
                foreach (var item in listmj)
                {
                    UserInfo user = Gongyong.userlist.Find(u => u.openid == item.Openid);

                    user.session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5006, rd.Length, requestInfo.MessageNum, rd)));
                }
                if (r.RoomPeo.Count == 0)
                {
                    #region 旧代码

                    /*
                     * //var senddjs = ReturnDJS.CreateBuilder();
                     * //CardUser card = Gongyong.FKUser.Find(u => u.roomid == getdata.Roomid);
                     * //foreach (var item in Gongyong.mulist.FindAll(u => u.RoomID == getdata.Roomid))
                     * //{
                     * //    UserInfo gamer = Gongyong.userlist.Find(u => u.openid == item.Openid);
                     * //    var 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).Build();
                     * //    var jsddr = UserAJS.CreateBuilder();
                     * //    jsddr.SetUser(users);
                     * //    jsddr.SetZdou(item.zwd_count);
                     * //    jsddr.SetZimo(item.zm_count);
                     * //    jsddr.SetAndou(item.ad_count);
                     * //    jsddr.SetMdou(item.MD_count);
                     * //    jsddr.SetDianpao(item.dp_count);
                     *
                     * //    switch (item.ZS_Fw)
                     * //    {
                     * //        case 1:
                     * //            jsddr.SetScare(card.dong);
                     * //            break;
                     * //        case 2:
                     * //            jsddr.SetScare(card.nan);
                     * //            break;
                     * //        case 3:
                     * //            jsddr.SetScare(card.xi);
                     * //            break;
                     * //        case 4:
                     * //            jsddr.SetScare(card.bei);
                     * //            break;
                     * //        default:
                     * //            break;
                     * //    }
                     * //    senddjs.AddUserjs(jsddr);
                     * //    senddjs.SetState(2);
                     *
                     * //}
                     *
                     *
                     *
                     *
                     * //Gongyong.mulist.RemoveAll(u => u.RoomID == getdata.Roomid);
                     * //Gongyong.roomlist.RemoveAll(u => u.RoomID == getdata.Roomid);
                     * //var alldata = ReturnAllIdea.CreateBuilder().SetState(1).Build();
                     * //byte[] bytesss = alldata.ToByteArray();
                     * //byte[] bsenddjs = senddjs.Build().ToByteArray();
                     * //foreach (var item in listmj)
                     * //{
                     * //    UserInfo user = Gongyong.userlist.Find(u => u.openid == item.Openid);
                     *
                     * //    user.session.TrySend(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5007, bytesss.Length, requestInfo.MessageNum, bytesss)));
                     * //    user.session.TrySend(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5014, bsenddjs.Length, requestInfo.MessageNum, bsenddjs)));
                     * //    RedisUtility.GetClient().Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERGAME, user.openid, user.unionid));
                     * //}
                     * //RedisUtility.GetClient().Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYROOMINFO, r.RoomID.ToString(), ""));
                     */
                    #endregion
                    if (r.Status == 1)
                    {
                        ThreadUtility.RemoveCountdownRemoveRoomThread(r.RoomID.ToString());
                        CountdownLogic countdownLogic = new CountdownLogic();
                        countdownLogic.DisbandTable(new CountdownInfo {
                            roomID = r.RoomID, MessageNum = requestInfo.MessageNum
                        });
                    }
                    else
                    {
                        ThreadUtility.RemoveCountdownRemoveRoomThread(r.RoomID.ToString());
                        var    alldata = ReturnAllIdea.CreateBuilder().SetState(0).SetMessgaeType(0).Build();
                        byte[] bytesss = alldata.ToByteArray();
                        foreach (var item in listmj)
                        {
                            UserInfo user = Gongyong.userlist.Find(u => u.openid == item.Openid);
                            user.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5007, bytesss.Length, requestInfo.MessageNum, bytesss)));
                        }
                    }
                    Gongyong.roomclear.Remove(r);
                }
            }
        }