public void Register(User user) { Dictionary <byte, object> parameters = new Dictionary <byte, object>(); ParameterTool.AddSubcode(parameters, SubCode.AccRegister); ParameterTool.AddParameter <User>(parameters, ParameterCode.User, user); SocketEngine.Instance.SendRequest(OpCode, parameters); }
public override void OnHandleMessage(OperationRequest request, OperationResponse response, MasterClientPeer peer, SendParameters sendParameters) { var user = ParameterTool.GetParameter <User>(request.Parameters, ParameterCode.User); var userDB = manager.GetUserByAccesstoken(user.Accesstoken); SubCode subCode = ParameterTool.GetSubcode(request.Parameters); ParameterTool.AddSubcode(response.Parameters, subCode); switch (subCode) { case SubCode.AccLogin: { if (userDB != null && userDB.Password == MD5Tool.GetMD5(user.Password)) { ParameterTool.AddParameter <User>(response.Parameters, ParameterCode.User, userDB); //用户名和密码正确,登陆成功 response.ReturnCode = (short)ReturnCode.Success; peer.User = userDB; //if (MasterApplication.Instance.TeamCtrl.ContansUser(userDB.ID))//如果之前正在游戏中 //{ // peer.Team = MasterApplication.Instance.TeamCtrl.GetTeamByUser(userDB.ID); //} } else { response.ReturnCode = (short)ReturnCode.Fail; response.DebugMessage = "用户名或密码错误"; } //string username = ParameterTool.GetParameter<string>(request.Parameters, ParameterCode.Username, false); // password = ParameterTool.GetParameter<string>(request.Parameters, ParameterCode.Password, false); Log("Login:acesstoken=" + user.Accesstoken + ",password="******"用户已存在"; } //string username = ParameterTool.GetParameter<string>(request.Parameters, ParameterCode.Username, false); //string password = ParameterTool.GetParameter<string>(request.Parameters, ParameterCode.Password, false); Log("Register:acesstoken=" + user.Accesstoken + ",password=" + user.Password); } break; } }
public void Login(User user) { Dictionary <byte, object> parameters = new Dictionary <byte, object>(); ParameterTool.AddSubcode(parameters, SubCode.AccLogin); ParameterTool.AddParameter <User>(parameters, ParameterCode.User, user); foreach (var v in parameters) { Debug.Log("key=" + v.Key + ",value=" + v.Value); } SocketEngine.Instance.SendRequest(OpCode, parameters); }
void SendEventByPeer(ClientPeer peer, OperationCode opCode, SubCode subCode, List <Role> rolelList, int masterRoleId) { //OperationResponse response=new OperationResponse(); //response.Parameters=new Dictionary<byte, object>(); //ParameterTool.AddSubcode(response.Parameters,subCode); //ParameterTool.AddParmeter(response.Parameters,ParameterCode.RoleList,rolelList); //response.ReturnCode = (short) ReturnCode.GetTeam; //peer.SendOperationResponse(response, sendParameters); EventData eventData = new EventData(); eventData.Parameters = new Dictionary <byte, object>(); ParameterTool.AddParmeter(eventData.Parameters, ParameterCode.OperationCode, opCode, false); ParameterTool.AddSubcode(eventData.Parameters, subCode); ParameterTool.AddParmeter(eventData.Parameters, ParameterCode.RoleList, rolelList); ParameterTool.AddParmeter(eventData.Parameters, ParameterCode.MasterRoleId, masterRoleId, false); peer.SendEvent(eventData, new SendParameters()); }
public override void OnHandlerMessage(OperationRequest request, OperationResponse response, ClientPeer peer, SendParameters sendParameters) { SubCode subcode = ParameterTool.GetSubcode(request.Parameters); ParameterTool.AddSubcode(response.Parameters, subcode); switch (subcode) { case SubCode.Add: SkillDB skillDB = ParameterTool.GetParameter <SkillDB>(request.Parameters, ParameterCode.SkillDB); skillDB.Role = peer.LoginRole; skillDBManager.Add(skillDB); skillDB.Role = null; ParameterTool.AddParameter(response.Parameters, ParameterCode.SkillDB, skillDB); break; case SubCode.Get: List <SkillDB> list = skillDBManager.Get(peer.LoginRole); foreach (var temp in list) { temp.Role = null; } ParameterTool.AddParameter(response.Parameters, ParameterCode.SkillDBList, list); break; case SubCode.Update: SkillDB skillDB2 = ParameterTool.GetParameter <SkillDB>(request.Parameters, ParameterCode.SkillDB); skillDB2.Role = peer.LoginRole; skillDBManager.Update(skillDB2); break; case SubCode.Upgrade: SkillDB skillDB3 = ParameterTool.GetParameter <SkillDB>(request.Parameters, ParameterCode.SkillDB); Role role = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role); role.User = peer.LoginUser; skillDB3.Role = role; skillDBManager.Upgrade(skillDB3, role); skillDB3.Role = null; ParameterTool.AddParameter(response.Parameters, ParameterCode.SkillDB, skillDB3); break; } }
public override void OnHandlerMessage(OperationRequest request, OperationResponse response, ClientPeer peer, SendParameters sendParameters) { SubCode subCode = ParameterTool.GetSubcode(request.Parameters); ParameterTool.AddSubcode(response.Parameters, subCode); switch (subCode) { case SubCode.SendTeam: if (TumoApplication.Instance.clientPeerListFotTeam.Count >= 2) { //取得list中的前二个peer 跟当前的peer进行组队 toto ClientPeer peer1 = TumoApplication.Instance.clientPeerListFotTeam[0]; ClientPeer peer2 = TumoApplication.Instance.clientPeerListFotTeam[1]; Team t = new Team(peer1, peer2, peer); TumoApplication.Instance.clientPeerListFotTeam.RemoveRange(0, 2); List <Role> roleList = new List <Role>(); foreach (var clientPeer in t.clientPeers) { roleList.Add(clientPeer.LoginRole); } ParameterTool.AddParmeter(response.Parameters, ParameterCode.RoleList, roleList); ParameterTool.AddParmeter(response.Parameters, ParameterCode.MasterRoleId, t.masterRoleId, false); response.ReturnCode = (short)ReturnCode.GetTeam; SendEventByPeer(peer1, (OperationCode)response.OperationCode, SubCode.GetTeam, roleList, t.masterRoleId); //不知道对不对? SendEventByPeer(peer2, (OperationCode)response.OperationCode, SubCode.GetTeam, roleList, t.masterRoleId); //不知道对不对? } else { //当当前的服器可供组队的客户端不足的时候,把自身加到集合中等 等组队 TumoApplication.Instance.clientPeerListFotTeam.Add(peer); response.ReturnCode = (short)ReturnCode.WartingTeam; } break; case SubCode.CancelTeam: TumoApplication.Instance.clientPeerListFotTeam.Remove(peer); response.ReturnCode = (short)ReturnCode.Success; break; case SubCode.SyncPositionAndRotation: object posObj = null; request.Parameters.TryGetValue((byte)ParameterCode.Position, out posObj); object eulerAnglesObj = null; request.Parameters.TryGetValue((byte)ParameterCode.EulerAngles, out eulerAnglesObj); foreach (ClientPeer temp in peer.Team.clientPeers) { if (temp != peer) { SendEventByPeer(temp, OpCode, SubCode.SyncPositionAndRotation, peer.LoginRole.Id, posObj, eulerAnglesObj); } } break; case SubCode.SyncMoveAnimation: foreach (ClientPeer temp in peer.Team.clientPeers) { if (temp != peer) { SendMoveAnimationEvent(temp, OpCode, SubCode.SyncMoveAnimation, peer.LoginRole.Id, request.Parameters); } } break; case SubCode.SyncAnimation: request.Parameters.Add((byte)ParameterCode.RoleId, peer.LoginRole.Id); RequestTool.TransmitRequst(peer, request, OpCode); break; case SubCode.SendGameState: RequestTool.TransmitRequst(peer, request, OpCode); peer.Team.Dismiss(); //解散队伍 break; } }