/// <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); }
public CommandKitCreate(IServiceProvider serviceProvider, IKitDatabaseManager kitStore, IStringLocalizer stringLocalizer, IVehicleDirectory vehicleDirectory) : base(serviceProvider) { m_KitStore = kitStore; m_StringLocalizer = stringLocalizer; m_VehicleDirectory = vehicleDirectory; }
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>(); }
/// <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()); }
public VehicleShop(IEconomyProvider economyProvider, IVehicleDirectory vehicleDirectory, IVehicleSpawner vehicleSpawner, IStringLocalizer stringLocalizer, VehicleShopModel vehicleShopModel) { _economyProvider = economyProvider; _vehicleDirectory = vehicleDirectory; _vehicleSpawner = vehicleSpawner; _stringLocalizer = stringLocalizer; ShopData = vehicleShopModel; }
/// <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))); }