示例#1
0
        private void SaveBt_Click(object sender, EventArgs e)
        {
            CardsLogic cardsLogic = new CardsLogic(manager);

            if (mode == "new")
            {
                int cardsQuantity = Convert.ToInt32(CardsQuantityNUD.Value);
                int charsQuantity = Convert.ToInt32(CharsQuantityNUD.Value);
                //покищо коди лише числові
                int intCode = Convert.ToInt32(CodeTB.Text);

                for (int i = 0; i < cardsQuantity; i++)
                {
                    string code = intCode.ToString().PadLeft(charsQuantity, '0');
                    cardsLogic.Create(code, Convert.ToInt32(CardTypesCB.SelectedValue), ActiveCB.Checked, IssuedDateDTP.Value);
                    intCode = intCode + 1;
                }
            }
            if (mode == "edit")
            {
                cardsLogic.Update(Convert.ToInt32(id), CodeTB.Text, Convert.ToInt32(CardTypesCB.SelectedValue), ActiveCB.Checked, IssuedDateDTP.Value);
            }
            manager.Save();

            this.Close();
        }
示例#2
0
        private void Fill()
        {
            CardsLogic     cardsLogic     = new CardsLogic(manager);
            CardTypesLogic cardTypesLogic = new CardTypesLogic(manager);

            CardTypesCB.DisplayMember = "Name";
            CardTypesCB.ValueMember   = "ID";
            CardTypesCB.DataSource    = cardTypesLogic.GetAll();

            if (mode == "edit")
            {
                WareCard card = cardsLogic.Get(Convert.ToInt32(id));
                if (card != null)
                {
                    CodeTB.Text = card.Code;
                    foreach (object a in CardTypesCB.Items)
                    {
                        if (((WareCardType)a).ID == card.CardTypeID)
                        {
                            CardTypesCB.SelectedItem = a;
                        }
                    }
                }
                ActiveCB.Checked = card.Active;
                if (card.IssuedDate != null)
                {
                    IssuedDateDTP.Value = Convert.ToDateTime(card.IssuedDate);
                }
            }
        }
示例#3
0
        private void DeleteSB_Click(object sender, EventArgs e)
        {
            CardsLogic cards = new CardsLogic(manager);

            cards.Delete(Convert.ToInt32(DataGV.SelectedRows[0].Cells["ID"].Value));
            manager.Save();
            Fill();
        }
示例#4
0
 private void Start()
 {
     if (Instance != null && Instance != this)
     {
         Destroy(gameObject);
     }
     else
     {
         Instance = this;
     }
 }
示例#5
0
        public void AddCard(Contractor _Contractor, string CardCode)
        {
            CardsLogic cardsLogic = new CardsLogic(manager);
            WareCard   card       = cardsLogic.GetByCode(CardCode);

            if (card != null)
            {
                ContractorCard contractorCard = new ContractorCard();
                contractorCard.CardID = card.ID;
                _Contractor.ContractorCards.Add(contractorCard);
                context.AddToContractorCards(contractorCard);
            }
        }
示例#6
0
        /// <summary>
        /// методи запосвнення полів
        /// </summary>
        #region FillMethods

        /// <summary>
        /// Заповнення даних по картці клієнта
        /// </summary>
        private void FillCard()
        {
            string     code       = CodeTB.Text;
            CardsLogic cardsLogic = new CardsLogic(manager);
            WareCard   card       = cardsLogic.GetByCode(code);

            if (card == null)
            {
                MessageBox.Show("Картку не знайдено");
            }
            else
            {
                cardId = card.ID;
            }
        }
示例#7
0
        private void Fill()
        {
            CardsLogic cardsLogic = new CardsLogic(manager);

            DataGV.AutoGenerateColumns = false;


            List <CardView> view            = cardsLogic.GetAll().Select(a => new CardView(a)).ToList();
            ListToDataTable listToDataTable = new ListToDataTable();

            DataGV.DataSource = listToDataTable.ToDataTable <CardView>(view);
            DgvFilterManager filterManager = new DgvFilterManager(DataGV);

            DataGV.Update();
        }
示例#8
0
        private void SaveBt_Click(object sender, EventArgs e)
        {
            //виводимо квитанцію на фіскальний принтер
            List <WareDocumentDetail> details = (from a in document.WareDocumentDetails
                                                 select a).ToList();

            if (cashRegister != null)
            {
                cashRegister.StartCheck();
                foreach (var detail in details)
                {
                    cashRegister.AddCheckPosition(detail.WareID, Convert.ToDecimal(detail.PriceForUnit), detail.UnitQuantity, detail.Ware.Name);
                }

                cashRegister.AddPayment(Convert.ToDecimal(PaySumaL.Text));
                cashRegister.EndCheck();
            }
            else
            {
                MessageBox.Show("Фіскальний принтер не підключено");
            }

            //зберігаємо дані про оплату в БД
            int?cardId = null;

            if (CardTB.Text.Length > 0)
            {
                CardsLogic cardsLogic = new CardsLogic(manager);
                WareCard   card       = cardsLogic.GetByCode(CardTB.Text);
                if (card != null)
                {
                    cardId = card.ID;
                }
            }

            DocumentPaymentsLogic paymentsLogic = new DocumentPaymentsLogic(manager);

            paymentsLogic.Create(DateTime.Now,
                                 Convert.ToDecimal(PaySumaL.Text),
                                 true, documentId,
                                 Convert.ToInt32(document.CurrencyID),
                                 Convert.ToInt32(StructureObjectsLUE.EditValue),
                                 Convert.ToInt32(PaymentTypesLUE.EditValue),
                                 cardId,
                                 CheckNumberTB.Text);
            manager.Save();
            this.Close();
        }
示例#9
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);
                }
            }
        }
示例#10
0
        // public string Name => "CreateRoom";

        public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo)
        {
            if (!Gongyong.userlist.Any(w => w.session.SessionID.Equals(session.SessionID)))
            {
                session.Logger.Debug("CreateRoom : 非法连接");
                session.Close();
                return;
            }
            session.Logger.Debug("创建sssionID--------" + session.SessionID);

            var info = SendCreateRoom.ParseFrom(requestInfo.Body);
            ///当前用户信息
            UserInfo user = Gongyong.userlist.Find(u => u.openid.Equals(info.Openid));

            if (user == null)
            {
                session.Logger.Debug("CREATEROOM user == nulll");
                session.Close();
                return;
            }
            if (Gongyong.mulist.Any(w => w.Openid.Equals(info.Openid)))
            {
                var muInfo = Gongyong.mulist.Find(w => w.Openid.Equals(info.Openid));
                if (Gongyong.roomlist.Any(w => w.RoomID == muInfo.RoomID))
                {
                    // ReturnServerIP.CreateBuilder().SetIp
                }
                else
                {
                    Gongyong.mulist.Remove(muInfo);
                }
            }
            ///更具房间信息创建房间
            int roomid = GetRoomID();

            if (info.Count != 8 && info.Count != 16 && info.Count != 32)
            {
                return;
            }
            Room room = new Room()
            {
                count = info.Count,
                //count = 1,
                is_benji      = info.IsBenji == 1 ? true : false,
                is_wgj        = info.IsWgj == 1 ? true : false,
                is_xinqiji    = info.IsXinqiji == 1 ? true : false,
                is_yikousan   = info.IsYikousan == 1 ? true : false,
                is_shangxiaji = info.IsShangxiaji == 1 ? true : false,
                room_peo      = info.RoomPeo,
                Dcount        = 1,
                RoomID        = roomid,
                GroupID       = info.GroupID,
                startgame     = 0,
                is_lianz      = info.IsYikousan == 3 ? true : false,
                CreateDate    = DateTime.Now,
                IsYuanQue     = info.HasRoomPeo ? (info.RoomPeo == 4 ? false : (info.HasIsYuanque ? info.IsYuanque == 1 : false)) : false, //如果是4人桌 不能是原缺。
                QuickCard     = info.HasQuickCard ? (info.QuickCard == 1) : false                                                          //十秒快速出牌
                                                                                                                                           // RoomPai = new CreateMj().CreateMJ()
            };

            //Console.WriteLine("roomid : " + roomid);
            try
            {
                new RoomInfoDAL().Add(CardsLogic.SetRoomInfoTb(room, user.UserID), info.GroupID);
            }
            catch (Exception ex)
            {
                session.Logger.Error(ex);
            }
            Gongyong.roomlist.Add(room);

            user.Lat = info.Latitude;

            //将用户游戏信息更新
            RedisUtility.Set <RedisGameModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERGAME, user.openid, user.unionid),
                                              new RedisGameModel {
                Openid = user.openid, RoomID = roomid, ServerName = GameInformationBase.serverName, Unionid = user.unionid
            });
            //将牌桌信息保存
            RedisUtility.Set <RedisGameRoomInfo>(RedisUtility.GetKey(GameInformationBase.COMMUNITYROOMINFO, roomid.ToString(), ""),
                                                 new RedisGameRoomInfo {
                room = room, ServerName = GameInformationBase.serverName
            });


            ///麻将玩家操作类
            mjuser mu = new mjuser()
            {
                ZS_Fw              = 1,
                Openid             = user.openid,
                RoomID             = roomid,
                SendData           = new List <ArraySegment <byte> >(),
                ConfirmationStarts = true,
                IsGuoHu            = false
            };

            Gongyong.mulist.Add(mu);


            if (mu.ByteData == requestInfo.Key)
            {
                return;
            }
            else
            {
                mu.ByteData = requestInfo.Key;
            }
            mu.IsHomeowner = true;
            ///当前返回用户信息
            Userinfo uinfo = Userinfo.CreateBuilder().SetHeadimg(user.headimg).SetNickname(user.nickname).SetOpenid(user.openid).SetSex(int.Parse(user.sex)).SetUserFW(1).SetUserBean(0).SetUserGold(0).SetUserID(user.UserID).SetUserIP(user.UserIP).Build();
            ///返回数值
            ReturnCreateRoom cr = ReturnCreateRoom.CreateBuilder().SetRoomID(roomid).SetUserinfo(uinfo).Build();

            byte[] data = cr.ToByteArray();
            session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 2002, data.Length, requestInfo.MessageNum, data)));

            var roommsg = ReturnRoomMsg.CreateBuilder();

            roommsg.SetCount(room.count).SetIsBenji(room.is_benji ? 1 : 0)
            .SetIsShangxiaji(room.is_shangxiaji ? 1 : 0)
            .SetIsWgj(room.is_wgj ? 1 : 0)
            .SetIsXinqiji(room.is_xinqiji ? 1 : 0)
            .SetIsYikousan(room.is_yikousan ? 1 : 0).SetRoomPeo(room.room_peo)
            .SetIsLianzhuang(room.is_lianz ? 1 : 0)
            .SetIsYuanque(room.IsYuanQue ? 1 : 0)
            .SetQuickCard(room.QuickCard ? 1 : 0)
            ;
            byte[] roommsgb = roommsg.Build().ToByteArray();
            session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7003, roommsgb.Length, requestInfo.MessageNum, roommsgb)));
            session.Logger.Debug("参数data" + cr + "----------" + DateTime.Now);
            session.Logger.Debug("当前用户创建房间----" + roomid + "------" + DateTime.Now);
        }
示例#11
0
        public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo)
        {
            string userWinLose = string.Empty;//玩家输赢记录。房间信息表


            if (!Gongyong.userlist.Any(w => w.session.SessionID.Equals(session.SessionID)))
            {
                session.Logger.Debug("GetH : 非法连接");
                session.Close();
                return;
            }
            var getdata = SendHu.ParseFrom(requestInfo.Body);

            Room r = Gongyong.roomlist.Find(u => u.RoomID == getdata.Roomid);

            if (r == null)
            {
                return;
            }
            if (!r.Is_Hu)
            {
                session.Logger.Debug("房间并无胡牌");
                return;
            }
            ThreadUtility.RemoveManagedThreadByRoomID(r.RoomID);
            CardUser card = Gongyong.FKUser.Find(u => u.roomid == getdata.Roomid);

            model.ServerMaJiang mjfh = new model.ServerMaJiang();
            var jp     = ReturnFJ.CreateBuilder();
            var muuser = Gongyong.mulist.Find(u => u.Openid.Equals(getdata.Openid) && u.RoomID == getdata.Roomid);

            if (muuser == null)
            {
                return;
            }
            muuser.Is_jiao = true;
            if (muuser.ByteData == requestInfo.Key)
            {
                return;
            }
            else
            {
                muuser.ByteData = requestInfo.Key;
            }

            var huType = ReturnHType.CreateBuilder().SetFWZ(getdata.FWZ).SetFWB(getdata.FWB).SetMJ(getdata.MJ).SetType(getdata.Type);

            if (getdata.DXInfoCount > 1)
            {
                huType.AddRangeDXInfo(getdata.DXInfoList);
            }
            byte[] HType = huType.Build().ToByteArray();
            if (getdata.Type != 1 && getdata.Type != 5)
            {
                model.ServerMaJiang mjh = new model.ServerMaJiang()
                {
                    PaiHs = getdata.MJ.PaiHS,
                    PaiId = getdata.MJ.PaiID
                };

                var roomUsers = Gongyong.mulist.FindAll(u => u.RoomID == getdata.Roomid);
                if (getdata.DXInfoCount > 1)
                {
                    for (int i = 0; i < getdata.DXInfoList.Count; i++)
                    {
                        foreach (var item in roomUsers)
                        {
                            if (item.ZS_Fw == getdata.DXInfoList[i].DXFW)//如果当期玩家为一炮多响的玩家之一,则在手牌中加上 放炮的牌
                            {
                                item.majiangs.Add(mjh);
                            }
                        }
                    }
                }
                else
                {
                    roomUsers.Find(u => u.ZS_Fw == getdata.FWZ).majiangs.Add(mjh);
                }
            }

            if (getdata.Type == 1 || getdata.Type == 5)
            {
                Gongyong.mulist.Find(u => u.ZS_Fw == getdata.FWZ && u.RoomID == getdata.Roomid).zm_count += 1;
            }
            else
            {
                var mjInfo = Gongyong.mulist.Find(u => u.ZS_Fw == getdata.FWB && u.RoomID == getdata.Roomid);
                mjInfo.dp_count += 1;
                mjInfo.chuda.RemoveAll(w => w.PaiHs == getdata.MJ.PaiHS && w.PaiId == getdata.MJ.PaiID);
            }


            ///没有翻鸡牌
            if (r.RoomPai.Count == 0)
            {
                mjfh.PaiHs = -1;
                mjfh.PaiId = 0;
            }
            else
            {
                mjfh = r.RoomPai[0];
            }



            jp.SetHS(mjfh.PaiHs);
            ///清除牌
            r.RoomPai.Clear();

            List <mjuser>     mjlist      = Gongyong.mulist.FindAll(u => u.RoomID == getdata.Roomid);
            var               settle      = ReturnJS.CreateBuilder();
            var               returnallmj = ReturnUserSPai.CreateBuilder();
            List <UserSettle> listjs      = new List <UserSettle>();

            listjs = new Ting().Settle(r.RoomID, mjfh, getdata);
            var senddjs = ReturnDJS.CreateBuilder();

            if (getdata.DXInfoCount <= 1)
            {
                if (getdata.FWZ != card.win)
                {
                    card.win        = getdata.FWZ;
                    card.lianzCount = 1;
                }
                else// (getdata.FWZ == card.win)
                {
                    card.lianzCount += 1;
                }
            }
            else
            {//连庄情况 ,庄家放炮,胡牌的庄, 一炮多响情况 就是 胡牌的最近的人是庄
             //一炮多响非连庄,  谁放炮 谁是庄
                if (r.is_lianz)
                {
                    int zhuang = 0;
                    if (getdata.FWB == card.win)
                    {
                        if (getdata.FWB == 4)
                        {
                            zhuang = 1;
                        }
                        else
                        {
                            zhuang = getdata.FWB + 1;
                        }
                        for (int i = 1; i <= 4; i++)
                        {
                            if (getdata.FWB == 4)
                            {
                                zhuang = 1;
                            }
                            if (getdata.DXInfoList.Any(w => w.DXFW == zhuang))
                            {
                                card.win = zhuang;
                                break;
                            }
                            zhuang++;
                        }
                    }
                    else
                    {
                        card.lianzCount += 1;
                    }
                }
                else
                {
                    card.win = getdata.FWB;
                }                               //非连庄谁放炮谁 是庄
            }

            foreach (var item in mjlist)
            {
                var jsddr = UserAJS.CreateBuilder();
                #region 旧代码
                //if (item.ZS_Fw == getdata.FWZ)
                //{
                //    ///判断清一色
                //    //if (item.majiangs[item.majiangs.Count - 1].PaiHs - item.majiangs[0].PaiHs < 8)
                //    //{
                //    //    int paihs = item.majiangs[0].PaiHs;
                //    //    int qyshs = 0;
                //    //    int qy = 0;
                //    //    if (paihs < 10)
                //    //    {
                //    //        qyshs = 1;
                //    //    }
                //    //    else if (paihs > 10 && paihs < 20)
                //    //    {
                //    //        qyshs = 2;
                //    //    }
                //    //    else
                //    //    {
                //    //        qyshs = 3;
                //    //    }

                //    //    switch (qyshs)
                //    //    {

                //    //        case 1:
                //    //            int count = item.Peng.FindAll(u => u.PaiHs > 10).Count;
                //    //            if (count > 0)
                //    //            {
                //    //                qy++;
                //    //            }
                //    //            if (!string.IsNullOrEmpty(item.Gong))
                //    //            {
                //    //                string gong = string.Copy(item.Gong);
                //    //                string[] arr = gong.Remove(gong.Length - 1, 1).Split(',');
                //    //                foreach (var itemgong in arr)
                //    //                {
                //    //                    if (int.Parse(itemgong[0].ToString()) > 10)
                //    //                    {
                //    //                        qy++;
                //    //                    }
                //    //                }
                //    //            }

                //    //            break;
                //    //        case 2:

                //    //            int countt = item.Peng.FindAll(u => u.PaiHs < 10 || u.PaiHs > 20).Count;
                //    //            if (countt > 0)
                //    //            {
                //    //                qy++;
                //    //            }
                //    //            if (!string.IsNullOrEmpty(item.Gong))
                //    //            {
                //    //                string gong = string.Copy(item.Gong);
                //    //                string[] arr = gong.Remove(gong.Length - 1, 1).Split(',');
                //    //                foreach (var itemgong in arr)
                //    //                {
                //    //                    if (int.Parse(itemgong[0].ToString()) < 10 || int.Parse(itemgong[0].ToString()) > 20)
                //    //                    {
                //    //                        qy++;
                //    //                    }
                //    //                }
                //    //            }

                //    //            break;
                //    //        case 3:

                //    //            int countw = item.Peng.FindAll(u => u.PaiHs < 20).Count;
                //    //            if (countw > 0)
                //    //            {
                //    //                qy++;
                //    //            }
                //    //            if (!string.IsNullOrEmpty(item.Gong))
                //    //            {
                //    //                string gong = string.Copy(item.Gong);
                //    //                string[] arr = gong.Remove(gong.Length - 1, 1).Split(',');
                //    //                foreach (var itemgong in arr)
                //    //                {
                //    //                    if (int.Parse(itemgong[0].ToString()) < 20)
                //    //                    {
                //    //                        qy++;
                //    //                    }
                //    //                }
                //    //            }

                //    //            break;
                //    //        default:
                //    //            break;
                //    //    }
                //    //    if (qy == 0)
                //    //    {
                //    //        item.paixinfs = 10;
                //    //    }

                //    //}
                //}
                #endregion


                UserInfo user    = Gongyong.userlist.Find(u => u.openid == item.Openid);
                var      usermjs = UserSPai.CreateBuilder();
                usermjs.SetFw(item.ZS_Fw);
                var returnmj = MaJiang.CreateBuilder();
                foreach (var itemmj in item.majiangs)
                {
                    returnmj.SetPaiHS(itemmj.PaiHs);
                    returnmj.SetPaiID(itemmj.PaiId);
                    usermjs.AddMj(returnmj);
                }
                returnallmj.AddUsp(usermjs);
                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).SetUserID(gamer.UserID).Build();
                ///分数加减
                foreach (var items in listjs)
                {
                    if (items.openid == item.Openid)
                    {
                        var usersone = UserJS.CreateBuilder();

                        foreach (var itrmj in items.jp)
                        {
                            var jpone = JiPaiF.CreateBuilder().SetPaiHS(itrmj.PaiHS).SetType(itrmj.type).SetCount(itrmj.PaiScare);
                            usersone.AddJp(jpone);
                        }
                        foreach (var itemD in items.gang)
                        {
                            var jpdou = Dou.CreateBuilder().SetCount(itemD.DScare).SetType(itemD.DType);
                            usersone.AddDc(jpdou);
                        }
                        if (getdata.HasFWB)
                        {
                            var info = mjlist.Find(w => w.ZS_Fw == getdata.FWB && w.Openid.Equals(items.openid));
                            if (info != null)
                            {
                                if (items.pai_type != 11)
                                {
                                    items.pai_type = 11;
                                }
                            }
                        }
                        usersone.SetIsPao(items.pai_type);
                        usersone.SetIsJiao(items.is_jiao);
                        usersone.SetFS(items.scare);
                        usersone.SetUserinfo(users);
                        usersone.SetDyFs(items.dy_fs);
                        var HuLeiXin = getdata.DXInfoList.FirstOrDefault(w => w.DXFW == item.ZS_Fw);
                        if (HuLeiXin != null)
                        {
                            usersone.SetHuType(HuLeiXin.DXType);
                        }

                        settle.AddJs(usersone);


                        switch (item.ZS_Fw)
                        {
                        case 1:
                            card.dong += items.scare;
                            break;

                        case 2:
                            card.nan += items.scare;
                            break;

                        case 3:
                            card.xi += items.scare;
                            break;

                        case 4:
                            card.bei += items.scare;
                            break;

                        default:
                            break;
                        }
                    }
                }



                ///牌局结束,返回大结算
                if (r.Dcount == r.count)
                {
                    new CardsLogic().Clear(item, r);
                    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;
                    //}
                    jsddr.SetScare(card.GetScoreByPosition(item.ZS_Fw));
                    senddjs.AddUserjs(jsddr);
                    senddjs.SetState(1);

                    RedisUtility.Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERGAME, gamer.openid, gamer.unionid));

                    if (!string.IsNullOrEmpty(userWinLose))
                    {
                        userWinLose += "|";
                    }
                    userWinLose += user.UserID + "," + jsddr.Scare;
                }
            }
            //牌局回放 翻鸡
            var gameOperationInfoFJ = GameOperationInfo.CreateBuilder().AddMJ(MaJiang.CreateBuilder().SetPaiHS(jp.HS).SetPaiID(0)).SetOperationType(9);

            StringBuilder logtxt = new StringBuilder();

            logtxt.Append("胡牌" + getdata.ToString());
            foreach (var item in mjlist)
            {
                item.SendData.Clear();
                logtxt.Append(string.Join(",", item.majiangs.Select(w => w.PaiHs)));
                UserInfo user         = Gongyong.userlist.Find(u => u.openid == item.Openid);
                var      sendData5021 = new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5021, HType.Length, requestInfo.MessageNum, HType));
                item.SendData.Add(sendData5021);

                byte[] allsp = returnallmj.Build().ToByteArray();

                byte[] jpr = jp.Build().ToByteArray();
                //7005 返回翻鸡牌
                var sendData7005 = new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7005, jpr.Length, requestInfo.MessageNum, jpr));
                item.SendData.Add(sendData7005);

                //7008 : 玩家手牌集合
                var sendData7008 = new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7008, allsp.Length, requestInfo.MessageNum, allsp));
                item.SendData.Add(sendData7008);

                byte[] settlebyte = settle.Build().ToByteArray();
                r.gameOperationProcess.SetJieSuanInfo(ByteString.CopyFrom(settlebyte));
                //7009 : 返回结算信息(全体)
                var sendData = new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7009, settlebyte.Length, requestInfo.MessageNum, settlebyte));
                item.SendData.Add(sendData);

                if (r.Dcount == r.count)
                {
                    byte[] senddjsbyte = senddjs.Build().ToByteArray();
                    //5014 : 大结算信息
                    var sendData5014 = new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5014, senddjsbyte.Length, requestInfo.MessageNum, senddjsbyte));
                    item.SendData.Add(sendData5014);
                }
                foreach (var senddata in item.SendData)
                {
                    user.session.TrySend(senddata);
                }
            }
            session.Logger.Debug(logtxt);
            //牌局回放 胡牌
            var gameOperationInfo = GameOperationInfo.CreateBuilder()
                                    .SetSerialNumber(r.gameOperationProcess.GameOperationInfoCount)
                                    .SetOperationFW(huType.FWZ)
                                    .SetOperationType(5)
                                    .SetTingHuType(muuser.Is_tianHu ? 1 : 0)
                                    .SetPaoFW(huType.FWB);

            if (getdata.DXInfoCount > 1)
            {
                gameOperationInfo.AddRangeDXInfo(getdata.DXInfoList);
            }
            r.gameOperationProcess.AddGameOperationInfo(gameOperationInfo);
            gameOperationInfoFJ.SetSerialNumber(r.gameOperationProcess.GameOperationInfoCount).SetOperationFW(0);
            r.gameOperationProcess.AddGameOperationInfo(gameOperationInfoFJ);
            try
            {
                CardsLogic.AddboarddetailsTB(r);
            }
            catch (Exception ex)
            {
                session.Logger.Error(ex);
            }
            ///对局结束 清空所有信息
            if (r.Dcount == r.count)
            {
                Gongyong.mulist.RemoveAll(u => u.RoomID == r.RoomID);
                Gongyong.FKUser.RemoveAll(u => u.roomid == r.RoomID);
                Gongyong.roomlist.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 = 0, UserWinLose = userWinLose
                });
                foreach (var item in mjlist)
                {
                    UserInfo user = Gongyong.userlist.Find(u => u.openid == item.Openid);
                    new userRecordLOGDAL().Add(new userRecordlogLOG {
                        UserID = user.UserID, RoomInfoID = r.RoomInfoID, UserWinLose = userWinLose, EndTime = DateTime.Now, CreateDate = r.CreateDate, RoomID = r.RoomID
                    });
                }
                r.startgame = 0;
            }
            else
            {
                if (r != null)
                {
                    r.RoomPai   = new CreateMj().CreateMJ(r.IsYuanQue);
                    r.Dcount   += 1;
                    r.startgame = 2;
                }
            }
        }
示例#12
0
 /// <summary>
 /// Заповнення даних по картці клієнта
 /// </summary>
 private void FillCard()
 {
     string code = CodeTB.Text;
     CardsLogic cardsLogic = new CardsLogic(manager);
     WareCard card = cardsLogic.GetByCode(code);
     if (card == null)
     {
         MessageBox.Show("Картку не знайдено");
     }
     else
     {
         cardId = card.ID;
     }
 }
示例#13
0
        /// <summary>
        /// 继续游戏
        /// </summary>
        /// <param name="session"></param>
        /// <param name="requestInfo"></param>
        public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo)
        {
            if (!Gongyong.userlist.Any(w => w.session.SessionID.Equals(session.SessionID)))
            {
                session.Logger.Debug("JX_Game : 非法连接");
                session.Close();
                return;
            }
            var getdata = SendGetGame.ParseFrom(requestInfo.Body);


            Room r = Gongyong.roomlist.Find(u => u.RoomID == getdata.RoomID);



            if (r == null)
            {
                return;
            }
            if (r.startgame != 2)
            {
                return;
            }
            List <mjuser> listuser = Gongyong.mulist.FindAll(u => u.RoomID == getdata.RoomID);
            Room_JX       room     = new Room_JX();

            room = Gongyong.room_JX.Find(u => u.room_id == getdata.RoomID);
            if (room == null)
            {
                room = new Room_JX()
                {
                    room_id  = getdata.RoomID,
                    room_peo = 1,
                    UsersFW  = new List <int>()
                    {
                        getdata.Fw
                    }
                };


                Gongyong.room_JX.Add(room);
            }
            else
            {
                if (!room.UsersFW.Any(w => w == getdata.Fw))//已点击过继续游戏的玩家不能再次进入计算
                {
                    room.room_peo += 1;
                    room.UsersFW.Add(getdata.Fw);
                }
            }

            if (room.room_peo == r.room_peo)
            {
                //发送当前局数的信息
                foreach (var item in listuser)
                {
                    new CardsLogic().Clear(item, r);
                }
                CardsLogic logic = new CardsLogic();
                r.startgame = 1;
                int number = 0;//发牌次数,从0开始计数
                foreach (var item in listuser)
                {
                    //UserInfo user = Gongyong.userlist.Find(u => u.openid == item.Openid);
                    //ReturnStart startgame = ReturnStart.CreateBuilder().SetStart(1).Build();
                    //byte[] bstart = startgame.ToByteArray();
                    //user.session.TrySend(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 2008, bstart.Length, requestInfo.MessageNum, bstart)));

                    item.SendData.Clear();
                    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 (r.IsYuanQue)
                    {
                        item.QYM = 3;
                    }
                    //logic.GetMyCards(requestInfo, sendmj, ReturnGangMSG, Ruturnjsmj, session, getdata.RoomID, item, item.Openid, ref number);
                    var dcount = r.Dcount;
                    logic.GetMyCards(requestInfo, sendmj, ReturnGangMSG, Ruturnjsmj, session, getdata.RoomID, item, item.Openid, ref dcount);
                }
                if (listuser.Any(w => w.Is_tianHu))
                {
                    var user = listuser.Find(w => w.Is_tianHu);

                    var    humj  = user.majiangs.Last();
                    var    hupai = ReturnHByType.CreateBuilder().SetFWZ(user.ZS_Fw).SetMJ(MaJiang.CreateBuilder().SetPaiHS(humj.PaiHs).SetPaiID(humj.PaiId)).SetType(1);
                    byte[] data  = hupai.Build().ToByteArray();
                    if (listuser.Any(w => w.Is_tiant))
                    {
                        RoomMsgWirte msgri = new RoomMsgWirte()
                        {
                            openid      = user.Openid,
                            xiaoxihao   = 5015,
                            ArrList     = data,
                            roomid      = user.RoomID
                            , operating = "30080"
                        };
                        Gongyong.roommsg.Add(msgri);
                    }
                    else
                    {
                        var userSend = Gongyong.userlist.Find(w => w.openid.Equals(user.Openid));
                        userSend.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5015, data.Length, requestInfo.MessageNum, data)));
                    }
                    // userSendJ.session.TrySend(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5015, data.Length, requestInfo.MessageNum, data)));
                }
                Gongyong.room_JX.Remove(Gongyong.room_JX.Find(w => w.room_id == getdata.RoomID));
            }
        }
示例#14
0
        private void SaveBt_Click(object sender, EventArgs e)
        {
            //виводимо квитанцію на фіскальний принтер
            List<WareDocumentDetail> details = (from a in document.WareDocumentDetails
                                               select a).ToList();
            if (cashRegister != null)
            {
                cashRegister.StartCheck();
                foreach (var detail in details)
                {
                    cashRegister.AddCheckPosition(detail.WareID, Convert.ToDecimal(detail.PriceForUnit), detail.UnitQuantity, detail.Ware.Name);
                }

                cashRegister.AddPayment(Convert.ToDecimal(PaySumaL.Text));
                cashRegister.EndCheck();
            }
            else
                MessageBox.Show("Фіскальний принтер не підключено");

            //зберігаємо дані про оплату в БД
            int? cardId = null;
            if (CardTB.Text.Length > 0)
            {
                CardsLogic cardsLogic = new CardsLogic(manager);
                WareCard card = cardsLogic.GetByCode(CardTB.Text);
                if (card != null)
                    cardId = card.ID;
            }

            DocumentPaymentsLogic paymentsLogic = new DocumentPaymentsLogic(manager);
            paymentsLogic.Create(DateTime.Now,
                Convert.ToDecimal(PaySumaL.Text),
                true, documentId,
                Convert.ToInt32(document.CurrencyID),
                Convert.ToInt32(StructureObjectsLUE.EditValue),
                Convert.ToInt32(PaymentTypesLUE.EditValue),
                cardId,
                CheckNumberTB.Text);
            manager.Save();
            this.Close();
        }
示例#15
0
        public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo)
        {
            if (!Gongyong.userlist.Any(w => w.session.SessionID.Equals(session.SessionID)))
            {
                session.Logger.Debug("StartGame : 非法连接");
                session.Close();
                return;
            }
            var result = SendConfirmationStarts.ParseFrom(requestInfo.Body);

            session.Logger.Debug(result);
            var userInfo = Gongyong.mulist.Find(u => u.RoomID == result.RoomID && u.Openid == result.Openid);

            if (userInfo == null)
            {
                return;
            }
            userInfo.ConfirmationStarts = true;
            List <mjuser> mjList = Gongyong.mulist.FindAll(u => u.RoomID == result.RoomID);
            var           r      = Gongyong.roomlist.Find(w => w.RoomID == result.RoomID);

            if (r.startgame == 1)
            {
                return;
            }
            if (mjList.Count != r.room_peo)
            {
                return;
            }


            foreach (var item in mjList)
            {
                if (!item.ConfirmationStarts)
                {
                    return;
                }
            }
            r.startgame = 1;
            ///查找当前玩家集合
            session.Logger.Debug("全部确认,开始游戏发牌" + mjList.Count);

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



            //switch (r.room_peo)
            //{
            //    case "2T":
            //        if (r.RoomPai.Count == 108)
            //        {
            //            r.RoomPai.RemoveRange(0, 27);
            //        }
            //        break;
            //    case "3T":
            //        if (r.RoomPai.Count == 108)
            //        {
            //            r.RoomPai.RemoveRange(0, 40);
            //        }
            //        break;
            //    case "4T":
            //        if (r.RoomPai.Count == 108)
            //        {
            //            r.RoomPai.RemoveRange(0, 53);
            //        }
            //        break;
            //    default:
            //        break;
            //}
            var dcount = r.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 (r.IsYuanQue)
                {
                    item.QYM = 3;
                }
                logic.GetMyCards(requestInfo, sendmj, ReturnGangMSG, Ruturnjsmj, session, result.RoomID, item, item.Openid, ref dcount);
                var user = Gongyong.userlist.Find(w => w.openid.Equals(item.Openid));

                byte[] stringnew = ReturnPaiCount.CreateBuilder().SetPaiCount(r.RoomPai.Count).Build().ToByteArray();
                user.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7006, stringnew.Length, requestInfo.MessageNum, stringnew)));
            }
            if (mjList.Any(w => w.Is_tianHu))
            {
                var user = mjList.Find(w => w.Is_tianHu);

                var    humj  = user.majiangs.Last();
                var    hupai = ReturnHByType.CreateBuilder().SetFWZ(user.ZS_Fw).SetMJ(MaJiang.CreateBuilder().SetPaiHS(humj.PaiHs).SetPaiID(humj.PaiId)).SetType(1);
                byte[] data  = hupai.Build().ToByteArray();
                if (mjList.Any(w => w.Is_tiant))
                {
                    model.RoomMsgWirte msgri = new RoomMsgWirte()
                    {
                        openid    = user.Openid,
                        xiaoxihao = 5015,
                        ArrList   = data,
                        roomid    = user.RoomID,
                        operating = "30070"
                    };
                    Gongyong.roommsg.Add(msgri);
                }
                else
                {
                    var userSend = Gongyong.userlist.Find(w => w.openid.Equals(user.Openid));
                    userSend.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5015, data.Length, requestInfo.MessageNum, data)));
                }
                // userSendJ.session.TrySend(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5015, data.Length, requestInfo.MessageNum, data)));
            }
        }