public override void OnOpereationRequest(OperationRequest operationRequest, SendParameters sendParameters, ClientPeer peer) { float x = (float)DictTool.GetDictValue <byte, object>(operationRequest.Parameters, (byte)ParameterCode.X); float y = (float)DictTool.GetDictValue <byte, object>(operationRequest.Parameters, (byte)ParameterCode.Y); float z = (float)DictTool.GetDictValue <byte, object>(operationRequest.Parameters, (byte)ParameterCode.Z); peer.x = x; peer.y = y; peer.z = z; }
public void OnSyncPlayerPosition(List <PlayerData> playerDatas) { foreach (var item in playerDatas) { var go = DictTool.GetDictValue <string, GameObject>(gameObjectDict, item.Username); if (go != null) { go.transform.position = new Vector3(item.Position.X, item.Position.Y, item.Position.Z); } } }
public override void OnEvent(EventData eventData) { string playerDataListString = (string)DictTool.GetDictValue <byte, object>(eventData.Parameters, (byte)ParameterCode.PlayerDataList); using (StringReader sr = new StringReader(playerDataListString)) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(List <PlayerData>)); List <PlayerData> playerDataList = (List <PlayerData>)xmlSerializer.Deserialize(sr); PlayerController.Instance.OnSyncPlayerPosition(playerDataList); } }
public override void OnOperationResponse(OperationResponse operationResponse) { string xmlString = (string)DictTool.GetDictValue <byte, object>(operationResponse.Parameters, (byte)ParameterCode.UsernameList); #region 反序列化 using (StringReader sr = new StringReader(xmlString)) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(List <string>)); List <string> usernameList = (List <string>)xmlSerializer.Deserialize(sr); PlayerController.Instance.OnSyncPlayerResponse(usernameList); } #endregion }
public override void OnOpereationRequest(OperationRequest operationRequest, SendParameters sendParameters, ClientPeer peer) { string username = DictTool.GetDictValue<byte, object>(operationRequest.Parameters, (byte)ParameterCode.Username) as string; string password = DictTool.GetDictValue<byte, object>(operationRequest.Parameters, (byte)ParameterCode.Password) as string; OperationResponse operationResponse = new OperationResponse(operationRequest.OperationCode); bool simpleJudge = UserManager.Instance.VerifyUserAccount(username, password); if (simpleJudge) { operationResponse.ReturnCode = (short)ReturnCode.Success; peer.username = username; } else { operationResponse.ReturnCode = (short)ReturnCode.Failed; } peer.SendOperationResponse(operationResponse, sendParameters); }
public override void OnOpereationRequest(OperationRequest operationRequest, SendParameters sendParameters, ClientPeer peer) { string username = DictTool.GetDictValue <byte, object>(operationRequest.Parameters, (byte)ParameterCode.Username) as string; string password = DictTool.GetDictValue <byte, object>(operationRequest.Parameters, (byte)ParameterCode.Password) as string; OperationResponse operationResponse = new OperationResponse(operationRequest.OperationCode); //Verify is db exist this account if (UserManager.Instance.IsDBExistSameUsername(username)) { operationResponse.ReturnCode = (short)ReturnCode.AccountExist; } else { UserManager.Instance.Add(username, password); operationResponse.ReturnCode = (short)ReturnCode.RegisterSuccess; } peer.SendOperationResponse(operationResponse, sendParameters); }
//处理客户端的请求 protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters) { BaseHandler handler = DictTool.GetDictValue <OperationCode, BaseHandler>(MyGameServer.Instance.handlerSet, (OperationCode)operationRequest.OperationCode); if (handler == null) { handler = DictTool.GetDictValue <OperationCode, BaseHandler>(MyGameServer.Instance.handlerSet, OperationCode.DefaultOperation); } handler.OnOpereationRequest(operationRequest, sendParameters, this); #region 测试 /* * //通过OpCode区分不同的请求,类似于枚举 * switch (operationRequest.OperationCode) * { * case 1: * MyGameServer.log.Info("Receive a request from client."); * * object clientValue; * operationRequest.Parameters.TryGetValue(1, out clientValue); * MyGameServer.log.Info("data from client equals to: "+clientValue.ToString()); * * Dictionary<byte, object> data = new Dictionary<byte, object>(); * string serverValue = "this data is sent from server."; * data.Add(1, serverValue); * string eventValue = "this is for testing sentEvent."; * data.Add(2, eventValue); * OperationResponse operationResponse = new OperationResponse(1,data); * //operationResponse.SetParameters(data); * * EventData ed = new EventData(1, data); * SendEvent(ed, sendParameters); * //给客户端发起响应 * SendOperationResponse(operationResponse, sendParameters); * break; * default: * break; * } */ #endregion }
//服务器端向客户端发消息时就会响应 public void OnEvent(EventData eventData) { //这种方法称之为分发 EventCode eventCode = (EventCode)eventData.Code; BaseEvent e = DictTool.GetDictValue <EventCode, BaseEvent>(eventSet, eventCode); e.OnEvent(eventData); #region 测试 /*switch(eventData.Code) * { * case 1: * object eventValue; * eventData.Parameters.TryGetValue(2, out eventValue); * Debug.Log("Receive a event,its value is: "+eventValue.ToString()); * break; * default: * break; * }*/ #endregion }
public override void OnEvent(EventData eventData) { string username = (string)DictTool.GetDictValue <byte, object>(eventData.Parameters, (byte)ParameterCode.Username); PlayerController.Instance.OnNewPlayerEvent(username); }