private void LoginReceive(Protocol protocol) { if (protocol.GetType() == typeof(LoginFailedProtocol)) { LoginFailedProtocol loginFailedProtocol = protocol as LoginFailedProtocol; ClientManager.instance.receiveCallBack -= LoginReceive; idInput.interactable = true; passwordInput.interactable = true; if (loginFailedProtocol.State == LoginFailedState.WrongID) { messageText.text = "登录失败,错误的ID"; } else if (loginFailedProtocol.State == LoginFailedState.WrongPassword) { messageText.text = "登录失败,错误的密码"; } else { messageText.text = "登录失败,我也不知道为啥"; } } else if (protocol.GetType() == typeof(LoginSuccessProtocol)) { ClientManager.instance.receiveCallBack -= LoginReceive; messageText.text = "登录成功"; } }
public override void Execute(Protocol protocol, ClientToken client) { if (protocol.GetType() != typeof(LoginProtocol)) { return; } LoginProtocol loginProtocol = protocol as LoginProtocol; Console.WriteLine("登录服务运行,账号为:" + loginProtocol.userId + ",密码为:" + loginProtocol.userPassword + ";"); AccountDatabase accountDatabase = server.databases[typeof(AccountDatabase)] as AccountDatabase; //查询是否有用户名密码相符的用户 if (accountDatabase.Find(x => (x.Id == loginProtocol.userId && x.Password == loginProtocol.userPassword)) != null) { //登录成功 LoginSuccessProtocol loginSuccessProtocol = new LoginSuccessProtocol(); //生成令牌 loginSuccessProtocol.PassBadge = 0; Byte[] serializedProtocol = ProtocolHelper.ConvertProtocolToBytes(loginSuccessProtocol); Byte[] encodingData = GameProtocol.Encoder.Encode(serializedProtocol); client.WriteSendData(encodingData); } else { //登录失败 LoginFailedProtocol loginFailedProtocol = new LoginFailedProtocol(); if (accountDatabase.Find(x => (x.Id == loginProtocol.userId)) != null) { loginFailedProtocol.State = LoginFailedState.WrongPassword; } else { loginFailedProtocol.State = LoginFailedState.WrongID; } Byte[] serializedProtocol = ProtocolHelper.ConvertProtocolToBytes(loginFailedProtocol); Byte[] encodingData = GameProtocol.Encoder.Encode(serializedProtocol); client.WriteSendData(encodingData); } }