Exemplo n.º 1
0
        /// <summary>
        /// Searches for vehicles by the vehicle asset name.
        /// </summary>
        /// <param name="directory">The item directory service.</param>
        /// <param name="vehicleName">The name of the vehicle asset.</param>
        /// <param name="exact">If true, only exact name matches will be used.</param>
        /// <returns><b>The <see cref="IVehicleAsset"/></b> if found; otherwise, <b>null</b>.</returns>
        public static async Task <IVehicleAsset?> FindByNameAsync(this IVehicleDirectory directory, string vehicleName, bool exact = true)
        {
            if (exact)
            {
                return((await directory.GetVehicleAssetsAsync()).FirstOrDefault(d =>
                                                                                d.VehicleName.Equals(vehicleName, StringComparison.OrdinalIgnoreCase)));
            }

            var matches = (await directory.GetVehicleAssetsAsync())
                          .Where(x => x.VehicleName.IndexOf(vehicleName, StringComparison.OrdinalIgnoreCase) >= 0)
                          .ToArray();

            var           minDist = int.MaxValue;
            IVehicleAsset?match   = null;

            foreach (var asset in matches)
            {
                var distance = StringHelper.LevenshteinDistance(vehicleName, asset.VehicleName);

                // There's no lower distance
                if (distance == 0)
                {
                    return(asset);
                }

                if (match == null || distance < minDist)
                {
                    match   = asset;
                    minDist = distance;
                }
            }

            return(match);
        }
Exemplo n.º 2
0
 public CommandKitCreate(IServiceProvider serviceProvider, IKitDatabaseManager kitStore,
                         IStringLocalizer stringLocalizer, IVehicleDirectory vehicleDirectory) : base(serviceProvider)
 {
     m_KitStore         = kitStore;
     m_StringLocalizer  = stringLocalizer;
     m_VehicleDirectory = vehicleDirectory;
 }
Exemplo n.º 3
0
 protected ShopCommand(
     IServiceProvider serviceProvider) : base(serviceProvider)
 {
     Configuration    = serviceProvider.GetRequiredService <IConfiguration>();
     StringLocalizer  = serviceProvider.GetRequiredService <IStringLocalizer>();
     ItemDirectory    = serviceProvider.GetRequiredService <IItemDirectory>();
     VehicleDirectory = serviceProvider.GetRequiredService <IVehicleDirectory>();
     ShopManager      = serviceProvider.GetRequiredService <IShopManager>();
     EconomyProvider  = serviceProvider.GetRequiredService <IEconomyProvider>();
 }
Exemplo n.º 4
0
        /// <summary>
        /// Searches for vehicles by the vehicle asset name.
        /// </summary>
        /// <param name="directory">The item directory service.</param>
        /// <param name="vehicleName">The name of the vehicle asset.</param>
        /// <param name="exact">If true, only exact name matches will be used.</param>
        /// <returns><b>The <see cref="IVehicleAsset"/></b> if found; otherwise, <b>null</b>.</returns>
        public static async Task <IVehicleAsset?> FindByNameAsync(this IVehicleDirectory directory, string vehicleName, bool exact = true)
        {
            if (exact)
            {
                return((await directory.GetVehicleAssetsAsync()).FirstOrDefault(d =>
                                                                                d.VehicleName.Equals(vehicleName, StringComparison.OrdinalIgnoreCase)));
            }

            return((await directory.GetVehicleAssetsAsync())
                   .Where(x => x.VehicleName.IndexOf(vehicleName, StringComparison.OrdinalIgnoreCase) >= 0)
                   .MinBy(asset => StringHelper.LevenshteinDistance(vehicleName, asset.VehicleName))
                   .FirstOrDefault());
        }
Exemplo n.º 5
0
        public VehicleShop(IEconomyProvider economyProvider,
                           IVehicleDirectory vehicleDirectory,
                           IVehicleSpawner vehicleSpawner,
                           IStringLocalizer stringLocalizer,
                           VehicleShopModel vehicleShopModel)
        {
            _economyProvider  = economyProvider;
            _vehicleDirectory = vehicleDirectory;
            _vehicleSpawner   = vehicleSpawner;
            _stringLocalizer  = stringLocalizer;

            ShopData = vehicleShopModel;
        }
Exemplo n.º 6
0
 /// <summary>
 /// Searches for vehicles by the vehicle asset id.
 /// </summary>
 /// <param name="directory">The vehicle directory service.</param>
 /// <param name="vehicleAssetId">The vehicle asset id to search for.</param>
 /// <returns><b>The <see cref="IVehicleAsset"/></b> if found; otherwise, <b>null</b>.</returns>
 public static async Task <IVehicleAsset?> FindByIdAsync(this IVehicleDirectory directory, string vehicleAssetId)
 {
     return((await directory.GetVehicleAssetsAsync())
            .FirstOrDefault(d => d.VehicleAssetId.Equals(vehicleAssetId, StringComparison.OrdinalIgnoreCase)));
 }