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));
            }
        }
Example #2
0
        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;
            }
        }