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); }
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); }