public bool RegisterPlayer(string username, string password, PlayerConnection connection)
        {
            password = SecurePasswordHasher.Hash(password);

            if (_playerDataManager.Exists(new PlayerDataLoaderArguments(username)))
            {
                var packet = new Packet(PacketType.LOGIN_FAIL, ChannelType.UNASSIGNED);
                packet.Message.Write("Account already exists!");
                connection.SendPacket(packet, NetDeliveryMethod.Unreliable);
                connection.Disconnect("byeFelicia");

                return(false);
            }

            // Create their player.
            var descriptor = PlayerDescriptor.Create(username, password);

            descriptor.MapID = Settings.StartingMap;
            descriptor.Role  = Settings.DefaultRole;
            var player = new Player(descriptor, connection);

            _playerDataManager.Save(player.Descriptor);

            this.AddPlayer(player);

            // Notify them that they successfully registered.
            var successPacket = new Packet(PacketType.REGISTER_SUCCESS, ChannelType.UNASSIGNED);

            player.SendPacket(successPacket, NetDeliveryMethod.Unreliable);

            return(true);
        }
Exemple #2
0
        public bool RegisterPlayer(string username, string password, PlayerConnection connection)
        {
            // Make sure this player isn't already registered.
            if (File.Exists(Constants.FILEPATH_ACCOUNTS + username + ".acc"))
            {
                // Notify the requester that the specified username is already registered.
                var packet = new Packet(PacketType.REGISTRATION_FAIL, ChannelType.UNASSIGNED);
                packet.Message.Write("Account already registered!");
                connection.SendPacket(packet, NetDeliveryMethod.Unreliable);
                connection.Disconnect("byeFelicia");

                this.EventOccured?.Invoke(this, new SubjectEventArgs("playerRegister", new object[] { false }));

                return(false);
            }

            // Create their player.
            var descriptor = PlayerDescriptor.Create(username, password);

            descriptor.MapID = Settings.StartingMap;
            descriptor.Role  = Settings.DefaultRole;
            var player = new Player(descriptor, connection);

            player.Save();

            _players.Add(player.UniqueID, player);

            // Notify them that they successfully registered.
            var successPacket = new Packet(PacketType.REGISTER_SUCCESS, ChannelType.UNASSIGNED);

            player.SendPacket(successPacket, NetDeliveryMethod.Unreliable);

            return(true);
        }