private void VerifyLogin(Client client, LoginPacket loginPacket) { bool foundMatch = false; foreach (Client c in _clients) { if (c.Username == loginPacket.Username) { foundMatch = true; } } LoginVerificationPacket loginVP = new LoginVerificationPacket(); if (foundMatch) { loginVP.Granted = false; SendPacket(client, loginVP); } else { loginVP.Granted = true; client.Username = loginPacket.Username; client.ClientStatus = ClientStatus.Online; SendPacket(client, loginVP); ClientLoggedIn(client); Console.WriteLine(String.Format("Client({0}) logged in with name: {1}", client.ID, loginPacket.Username)); } }
private void HandlePacket(NetIncomingMessage msg) { PacketType type = (PacketType)msg.ReadByte(); switch (type) { case PacketType.UsernameKeywordCombo: UsernameKeywordComboPacket unkwPacket = new UsernameKeywordComboPacket(); unkwPacket.Unpack(msg); if (gameManager.PlayerSaves.ContainsKey(unkwPacket.username)) { LoginVerificationPacket packet = new LoginVerificationPacket(); packet.message = "You are already logged in."; ServerConsoleMessage(unkwPacket.username + " login error: Already logged in."); SendUnconnectedMessage(packet, msg.SenderEndpoint); //server.Connections.Remove(server.GetConnection(msg.SenderEndpoint)); // try } else { PlayerSave save = FileGrabber.getPlayerSave(isLocalGame, unkwPacket.username, unkwPacket.keyword); if (!unkwPacket.keyword.Equals(save.Keyword)) { LoginVerificationPacket packet = new LoginVerificationPacket(); packet.message = "Keyword does not match."; ServerConsoleMessage(unkwPacket.username + " login error: Bad keyword."); SendUnconnectedMessage(packet, msg.SenderEndpoint); //server.Connections.Remove(server.GetConnection(msg.SenderEndpoint)); // try } else { LoginVerificationPacket packet = new LoginVerificationPacket(); packet.message = "verified"; gameManager.PlayerSaves.Add(unkwPacket.username, save); gameManager.createPlayerEntityFromSave(unkwPacket.username); gameManager.RUIDUsernames.Add(unkwPacket.username, msg.SenderConnection.RemoteUniqueIdentifier); SendUnconnectedMessage(packet, msg.SenderEndpoint); ServerConsoleMessage(unkwPacket.username + " has logged into the game."); if (!isLocalGame) { ChatMessageQueue.Enqueue(new ChatMessage("SERVER", unkwPacket.username + " has connected.")); } } } break; case PacketType.ChatMessage: ChatMessagePacket chatPacket = new ChatMessagePacket(); chatPacket.Unpack(msg); string username = gameManager.RUIDUsernames.GetValue(msg.SenderConnection.RemoteUniqueIdentifier); if (!username.Equals("")) { ChatMessage cmsg = new ChatMessage(username, chatPacket.message); ChatMessageQueue.Enqueue(cmsg); ServerConsoleMessage(cmsg.getChatString()); } break; case PacketType.InputsPacket: InputsPacket inputsPacket = new InputsPacket(); inputsPacket.Unpack(msg); string un = gameManager.RUIDUsernames.GetValue(msg.SenderConnection.RemoteUniqueIdentifier); if (!un.Equals("")) { gameManager.HandlePlayerMoving(un, inputsPacket); } break; } }