Пример #1
0
    void AddServer()
    {
        SendAddServer sendAddServer = new SendAddServer();

        sendAddServer.openid  = GameInfo.OpenID;
        sendAddServer.unionid = GameInfo.unionid;
        byte[] body = ProtobufUtility.GetByteFromProtoBuf(sendAddServer);
        byte[] data = CreateHead.CreateMessage(CreateHead.CSXYNUM + 1011, body.Length, 0, body);
        GameInfo.cs.Send(data);
    }
Пример #2
0
    public void ReconServer()
    {
        GameInfo.cs.Closed();
        SendAddServer sendAddServer = new SendAddServer();

        sendAddServer.openid  = GameInfo.OpenID;
        sendAddServer.unionid = GameInfo.unionid;
        byte[] body = ProtobufUtility.GetByteFromProtoBuf(sendAddServer);
        byte[] data = CreateHead.CreateMessage(CreateHead.CSXYNUM + 1011, body.Length, 0, body);
        GameInfo.cs.Send(data);
        ficSGame.isRecon = true;
    }
Пример #3
0
        /// <summary>
        /// 加入服务器
        /// </summary>
        /// <param name="session"></param>
        /// <param name="requestInfo"></param>
        public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo)
        {
            SendAddServer sendInfo = SendAddServer.ParseFrom(requestInfo.Body);
            var           key      = RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, sendInfo.Openid, sendInfo.Unionid);

            var userInfo = RedisUtility.Get <RedisUserInfoModel>(key);

            var returnAddServer = ReturnAddServer.CreateBuilder();

            if (userInfo == null)
            {
                returnAddServer.SetStatus(2);
            }
            else
            {
                returnAddServer.SetStatus(1);
                var info = Gongyong.userlist.Find(w => w.openid.Equals(userInfo.Openid));
                if (info == null)
                {
                    var user = new UserInfo(userInfo);
                    user.session = session;
                    Gongyong.userlist.Add(user);
                    session.Logger.Debug("加入游戏服务器成功----" + sendInfo.Openid + "------" + DateTime.Now);
                }
                else
                {
                    info.nickname = userInfo.Nickname;
                    info.sex      = userInfo.Sex;
                    info.headimg  = userInfo.Headimg;
                    if (info.session != null)
                    {
                        info.session.Close();
                    }
                    info.session = session;
                    mjuser mju = Gongyong.mulist.Find(u => u.Openid == info.openid);

                    if (mju != null)
                    {
                        mju.ConnectionStatus = 1;
                        // SendCL(session, info.openid, requestInfo);
                    }
                }
            }
            var data = returnAddServer.Build().ToByteArray();

            session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1012, data.Length, requestInfo.MessageNum, data)));
        }
Пример #4
0
        private void CreatNewSocket(ReturnServerIP returnServerIP, Socket sc, string openID)
        {
            sc.Close();
            IPAddress ipaddress;
            EndPoint  point;

            sc        = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            ipaddress = IPAddress.Parse(returnServerIP.Ip);
            point     = new IPEndPoint(ipaddress, int.Parse(returnServerIP.Port));
            sc.Connect(point);
            SendAddServer sendAddServer = SendAddServer.CreateBuilder()
                                          .SetOpenid(openID)
                                          .SetUnionid(openID)
                                          .Build();

            byte[] body = sendAddServer.ToByteArray();
            byte[] data = CreateHead.CreateMessage(CreateHead.CSXYNUM + 1011, body.Length, 0, body);
            sc.Send(data);
        }
Пример #5
0
    // Update is called once per frame
    void Update()
    {
        //如果房卡不为0,将房卡数量和服务器的同步
        if (GameInfo.returnGetRoomCard != null)
        {
            GameInfo.userRoomCard      = GameInfo.returnGetRoomCard.UserRoomCard;
            RoomCardNum.text           = GameInfo.userRoomCard + "";
            GameInfo.returnGetRoomCard = null;
        }
        //从服务器获取公告信息
        if (GameInfo.returnAnnouncement != null)
        {
            GameInfo.announcementInfo   = GameInfo.returnAnnouncement.announcement;
            GameInfo.returnAnnouncement = null;
        }
        if (GameInfo.returnServerIP != null)
        {
            GameInfo.ip   = GameInfo.returnServerIP.ip;
            GameInfo.port = GameInfo.returnServerIP.port;
            //状态 1为正常跳转, 2为有未结束的游戏,需要重新连接
            GameInfo.status = GameInfo.returnServerIP.Status;


            GameInfo.cs.Closed();
            SendAddServer sendAddServer = new SendAddServer();//..CreateBuilder()
            sendAddServer.openid  = GameInfo.OpenID;
            sendAddServer.unionid = GameInfo.unionid;

            Debug.Log(GameInfo.OpenID);

            byte[] body = ProtobufUtility.GetByteFromProtoBuf(sendAddServer);
            byte[] data = CreateHead.CreateMessage(CreateHead.CSXYNUM + 1011, body.Length, 0, body);
            GameInfo.cs.serverType = ServerType.GameServer;


            GameInfo.cs.Send(data);


            //重连提示
            if (GameInfo.status == 2)
            {
                GameInfo.room_id = int.Parse(GameInfo.returnServerIP.RoomID);
                Recon_Pel.SetActive(true);
                //应该重连
                GameInfo.recon = true;
                isClosed       = true;
                print("断线重连");
                //提示用户有断线重联的情况, 跳转场景
                reconTip.SetActive(true);
                //3秒后跳转至游戏场景
                Invoke("ReEnterRoom", 3);
            }
            GameInfo.returnServerIP = null;
        }
        //获取服务器状态
        if (GameInfo.returnAddServer != null)
        {
            GameInfo.addStatus       = GameInfo.returnAddServer.status;
            GameInfo.returnAddServer = null;
        }
        //监听退出键
        if (Input.GetKeyUp(KeyCode.Escape))
        {
            FICWaringPanel._instance.ShowQuit();
            FICWaringPanel._instance.WarnningMethods = delegate { Application.Quit(); };
        }
        if (GameInfo.returnGameOperation != null)
        {
            ShowOperationStatus();
        }
    }