/// <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); }
/// <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); }
public override void OnHandlerMessage(OperationRequest _request, OperationResponse _response, Clientpeer _peer, SendParameters _sendparameters) { throw new NotImplementedException(); }
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; }
/// <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); }
/// <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; } }
/// <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()); }
public abstract void OnHandlerMessage(OperationRequest _request, OperationResponse _response, Clientpeer _peer, SendParameters _sendparameters);