/// <summary> /// 返回了登录的结果 /// </summary> /// <param name="obj"></param> private void HandleUserLoginS2C(BufferEntity p) { UserLoginS2C s2cMSG = ProtobufHelper.FromBytes <UserLoginS2C>(p.proto); switch (s2cMSG.Result) { case 0: Debug.Log("登录成功!"); //保存数据 if (s2cMSG.RolesInfo != null) { //保存数据 LoginCtrl.Instance.SaveRolesInfo(s2cMSG.RolesInfo); //打开大厅界面 WindowManager.Instance.OpenWindow(WindowType.LobbyWindow); } else { //跳转到角色界面 WindowManager.Instance.OpenWindow(WindowType.RolesWindow); } Close(); //关闭自己 break; case 2: Debug.Log("帐号密码不匹配!"); WindowManager.Instance.ShowTips("帐号密码不匹配!"); //打开提示窗体 break; default: break; } }
/// <summary> /// 登录功能 /// </summary> /// <param name="request"></param> private void HandleUserLoginC2S(BufferEntity request) { //反序列化 得到客户端 发送的数据 UserLoginC2S c2sMSG = ProtobufHelper.FromBytes <UserLoginC2S>(request.proto); //主要是看反序列化的功能 是否正常 //Debug.Log("登录:"+ JsonHelper.SerializeObject(c2sMSG)); //匹配记录:相同的账号 相同的密码 string sqlCMD = MySqlCMD.Where("Account", c2sMSG.UserInfo.Account) + MySqlCMD.And("Password", c2sMSG.UserInfo.Password); UserLoginS2C s2cMSG = new UserLoginS2C(); UserInfo userInfo = DBUserInfo.Instance.Select(sqlCMD); if (userInfo != null) { s2cMSG.UserInfo = userInfo; s2cMSG.Result = 0;//登录成功 //保存角色信息到服务器本地 PlayerManager.Add(request.session, s2cMSG.UserInfo.ID, new PlayerEntity() { userInfo = s2cMSG.UserInfo, session = request.session, }); RolesInfo rolesInfo = DBRolesInfo.Instance.Select(MySqlCMD.Where("ID", s2cMSG.UserInfo.ID)); if (rolesInfo != null) { s2cMSG.RolesInfo = rolesInfo; //获取到了角色信息 缓存起来 PlayerEntity playerEntity = PlayerManager.GetPlayerEntityFromSession(request.session); playerEntity.rolesInfo = rolesInfo; } } else { s2cMSG.Result = 2;//帐号和密码不匹配 } //返回结果 BufferFactory.CreqateAndSendPackage(request, s2cMSG); }