Пример #1
0
        /// <summary>
        /// 每当新用户链接至服务器时调用并创建一个peer实例用于与客户端进行数据交换
        /// </summary>
        /// <param name="_initRequest"></param>
        /// <returns></returns>
        protected override PeerBase CreatePeer(InitRequest _initRequest)
        {
            log.Info("Client peer has been created!");
            Clientpeer peer = new Clientpeer(_initRequest.Protocol, _initRequest.PhotonPeer);

            return(peer);
        }
Пример #2
0
        /// <summary>
        /// 加入房间
        /// </summary>
        /// <param name="_request">如上</param>
        /// <param name="response">如上</param>
        /// <param name="_clientpeer">如上</param>
        private void Joinroom(OperationRequest _request, OperationResponse response, Clientpeer _clientpeer)
        {
            //解析客户端发送的请求
            object roomidobj, roompsdobj;

            _request.Parameters.TryGetValue((byte)Parametercode.ROOMID, out roomidobj);
            _request.Parameters.TryGetValue((byte)Parametercode.ROOMPSD, out roompsdobj);

            if (roomidobj == null)
            {
                return;
            }
            int    roomid  = int.Parse(roomidobj.ToString());
            string roompsd = roompsdobj.ToString();

            if (!FIGHTserverapplication.Getfightserverapplication().rooms.ContainsKey(roomid))
            {
                return;
            }
            Room roomitem = FIGHTserverapplication.Getfightserverapplication().rooms[roomid];

            roomitem.Joinroom(_clientpeer, roompsd);


            //服务器端回馈客户端的操作码-加入房间的操作码
            response.ReturnCode = (byte)Returncode.JOINEDROOM;

            //服务器端回馈客户端的数据
            response.Parameters = new Dictionary <byte, object>();
            ParameterTool.AddParameter(response.Parameters, Parametercode.ROOMDATA, roomitem.roomdata);
        }
Пример #3
0
 public override void OnHandlerMessage(OperationRequest _request, OperationResponse _response, Clientpeer _peer,
                                       SendParameters _sendparameters)
 {
     throw new NotImplementedException();
 }
Пример #4
0
        public override void OnHandlerMessage(OperationRequest _request, OperationResponse _response, Clientpeer _peer,
                                              SendParameters _sendparameters)
        {
            //提取当前发起登入客户端所发送的数据
            object playerobj = null;

            _request.Parameters.TryGetValue((byte)Parametercode.CHARACTERNAME, out playerobj);
            if (playerobj == null)
            {
                return;
            }
            string playername = (string)playerobj;

            //检查服务器中是否已经存在当前发起登入的客户端用户名称
            if (FIGHTserverapplication.Getfightserverapplication().clientpeers.ContainsKey(playername))
            {
                log.Info("Character name is already exists");
                _response.ReturnCode = (byte)Returncode.CHARACTERNAMEISEXIST;
                return;
            }

            //添加当前登入的客户端到服务器用户标内
            FIGHTserverapplication.Getfightserverapplication().clientpeers.Add(playername, _peer);
            log.Info("Character name: " + playername + " is Successful signin");

            //创建用户数据
            Playerdata playerdata = new Playerdata();

            playerdata.playername = playername;
            playerdata.playerid   = playerdata.GetHashCode();

            //链接用户数据到当前登入的客户端
            _peer.playerdata = playerdata;

            //反馈客户端登入操作完成并且成功
            _response.ReturnCode = (byte)Returncode.CHARACTERCREATED;
        }
Пример #5
0
        /// <summary>
        /// 离开房间操作
        /// </summary>
        /// <param name="_request">客户端发起的请求</param>
        /// <param name="_response">服务器回馈客户端的请求</param>
        /// <param name="_clientpeer">客户端</param>
        private void Leaveroom(OperationRequest _request, OperationResponse _response, Clientpeer _clientpeer)
        {
            //解析客户端发送的请求操作
            object roomobj;

            _request.Parameters.TryGetValue((byte)Parametercode.ROOMID, out roomobj);
            if (roomobj == null)
            {
                return;
            }
            Room roomitem = FIGHTserverapplication.Getfightserverapplication().rooms[int.Parse(roomobj.ToString())];

            roomitem.Exitintheroom(_clientpeer);

            //服务器端回馈客户端操作码-离开房间的操作码
            _response.ReturnCode = (byte)Returncode.LEFTROOM;

            //服务器端回馈客户端的数据
            _response.Parameters = new Dictionary <byte, object>();
            ParameterTool.AddParameter(_response.Parameters, Parametercode.PLAYERDATA, roomitem, true);
        }
Пример #6
0
        /// <summary>
        /// 用于响应客户端提供的操作
        /// </summary>
        /// <param name="_request"></param>
        /// <param name="_response"></param>
        /// <param name="_peer"></param>
        /// <param name="_sendparameters"></param>
        public override void OnHandlerMessage(OperationRequest _request, OperationResponse _response, Clientpeer _peer,
                                              SendParameters _sendparameters)
        {
            Suboperationcode suboperationcode = ParameterTool.Getsuboperateioncode(_request.Parameters);

            ParameterTool.Addsuboperationcode(_response.Parameters, suboperationcode);
            switch (suboperationcode)
            {
            case Suboperationcode.CREATEROOM:
                Createroom(_request, _response, _peer);
                break;

            case Suboperationcode.JOINROOM:
                Joinroom(_request, _response, _peer);
                break;

            case Suboperationcode.GETROOM:
                Getroom(_response);
                break;

            case Suboperationcode.LEAVEROOM:
                Leaveroom(_request, _response, _peer);
                break;
            }
        }
Пример #7
0
        /// <summary>
        /// 创建房间
        /// </summary>
        /// <param name="_request">如上</param>
        /// <param name="_response">如上</param>
        /// <param name="_peer">如上</param>
        private void Createroom(OperationRequest _request, OperationResponse _response, Clientpeer _peer)
        {
            object roomobject;

            _request.Parameters.TryGetValue((byte)Parametercode.ROOMPARMETERS, out roomobject);
            if (roomobject == null)
            {
                return;
            }
            Roomdata roomdata = JsonMapper.ToObject <Roomdata>(roomobject.ToString());
        }
Пример #8
0
 public abstract void OnHandlerMessage(OperationRequest _request, OperationResponse _response, Clientpeer _peer,
                                       SendParameters _sendparameters);