/// <summary> /// Searches all loaded stashes including transfer stash. /// </summary> /// <param name="predicate">Predicate that the items should match</param> /// <param name="results">List holding the search results.</param> private void SearchStashes(IItemPredicate predicate, List <Result> results) { if (this.UserContext.Stashes == null || this.UserContext.Stashes.Count == 0) { return; } foreach (KeyValuePair <string, Stash> kvp in this.UserContext.Stashes) { string stashFile = kvp.Key; Stash stash = kvp.Value; // Make sure we have a valid name and stash. if (stash == null) { Log.WarnFormat(CultureInfo.InvariantCulture, "stashFile={0} returned null stash.", stashFile); continue; } string stashName = GetNameFromFile(stashFile); if (stashName == null) { Log.WarnFormat(CultureInfo.InvariantCulture, "stashFile={0} returned null stashName.", stashFile); continue; } SackCollection sack = stash.Sack; if (sack == null) { Log.WarnFormat(CultureInfo.InvariantCulture, "stashFile={0} returned null sack.", stashFile); continue; } int sackNumber = 2; SackType sackType = SackType.Stash; if (stashName == Resources.GlobalTransferStash) { sackNumber = 1; sackType = SackType.TransferStash; } else if (stashName == Resources.GlobalRelicVaultStash) { sackNumber = 3; sackType = SackType.RelicVaultStash; } foreach (var fnames in QuerySack(predicate, sack)) { results.Add(new Result( stashFile, stashName, sackNumber, sackType, fnames )); } } }
/// <summary> /// Queries the passed sack for items which contain the search string. /// </summary> /// <param name="predicate">Predicate that the items should match</param> /// <param name="sack">Sack that we are searching</param> /// <returns>List of items which contain the search string.</returns> private List <ToFriendlyNameResult> QuerySack(IItemPredicate predicate, SackCollection sack) { // Query the sack for the items containing the search string. var queryResult = ( from item in sack.Cast <Item>() let fnames = this.ItemProvider.GetFriendlyNames(item, FriendlyNamesExtraScopes.ItemFullDisplay) where predicate.Apply(fnames) select fnames ).ToList(); return(queryResult); }
/// <summary> /// Queries the passed sack for items which contain the search string. /// </summary> /// <param name="predicate">Predicate that the items should match</param> /// <param name="sack">Sack that we are searching</param> /// <returns>List of items which contain the search string.</returns> private static List <Item> QuerySack(IItemPredicate predicate, SackCollection sack) { // Query the sack for the items containing the search string. var vaultQuery = from Item item in sack where predicate.Apply(item) select item; List <Item> tmpList = new List <Item>(); foreach (Item item in vaultQuery) { tmpList.Add(item); } return(tmpList); }
/// <summary> /// Searches all loaded vault files /// </summary> /// <param name="predicate">Predicate that the items should match</param> /// <param name="quality">Quality filter</param> /// <param name="searchByType">flag for whether we are searching by type or name</param> /// <param name="results">List holding the search results.</param> private void SearchVaults(IItemPredicate predicate, List <Result> results) { if (this.UserContext.Vaults == null || this.UserContext.Vaults.Count == 0) { return; } foreach (KeyValuePair <string, PlayerCollection> kvp in this.UserContext.Vaults) { string vaultFile = kvp.Key; PlayerCollection vault = kvp.Value; if (vault == null) { Log.DebugFormat(CultureInfo.InvariantCulture, "vaultFile={0} returned null vault.", vaultFile); continue; } int vaultNumber = -1; foreach (SackCollection sack in vault) { vaultNumber++; if (sack == null) { Log.DebugFormat(CultureInfo.InvariantCulture, "vaultFile={0}", vaultFile); Log.DebugFormat(CultureInfo.InvariantCulture, "sack({0}) returned null.", vaultNumber); continue; } // Query the sack for the items containing the search string. foreach (var fnames in QuerySack(predicate, sack)) { results.Add(new Result( vaultFile, Path.GetFileNameWithoutExtension(vaultFile), vaultNumber, SackType.Vault, fnames )); } } } }
/// <summary> /// Searches all loaded files /// </summary> /// <param name="predicate">Predicate that the items should match</param> /// <param name="results">List holding the search results.</param> private void SearchFiles(IItemPredicate predicate, List <Result> results) { this.SearchVaults(predicate, results); this.SearchPlayers(predicate, results); this.SearchStashes(predicate, results); }
/// <summary> /// Searches all loaded player files /// </summary> /// <param name="predicate">Predicate that the items should match</param> /// <param name="quality">Quality filter</param> /// <param name="searchByType">flag for whether we are searching by type or name</param> /// <param name="results">List holding the search results.</param> private void SearchPlayers(IItemPredicate predicate, List <Result> results) { if (this.UserContext.Players == null || this.UserContext.Players.Count == 0) { return; } foreach (KeyValuePair <string, PlayerCollection> kvp in this.UserContext.Players) { string playerFile = kvp.Key; PlayerCollection player = kvp.Value; if (player == null) { // Make sure the name is valid and we have a player. Log.DebugFormat(CultureInfo.InvariantCulture, "playerFile={0} returned null player.", playerFile); continue; } string playerName = GetNameFromFile(playerFile); if (playerName == null) { Log.DebugFormat(CultureInfo.InvariantCulture, "playerFile={0} returned null playerName.", playerFile); continue; } int sackNumber = -1; foreach (SackCollection sack in player) { sackNumber++; if (sack == null) { Log.DebugFormat(CultureInfo.InvariantCulture, "playerFile={0}", playerFile); Log.DebugFormat(CultureInfo.InvariantCulture, "sack({0}) returned null.", sackNumber); continue; } // Query the sack for the items containing the search string. foreach (var fnames in QuerySack(predicate, sack)) { results.Add(new Result( playerFile, playerName, sackNumber, SackType.Player, fnames )); } } // Now search the Equipment panel SackCollection equipmentSack = player.EquipmentSack; if (equipmentSack == null) { Log.DebugFormat(CultureInfo.InvariantCulture, "playerFile={0} Equipment Sack returned null.", playerFile); continue; } foreach (var fnames in QuerySack(predicate, equipmentSack)) { results.Add(new Result( playerFile, playerName, 0, SackType.Equipment, fnames )); } } }