Exemplo n.º 1
0
        /// <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
                                    ));
                }
            }
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        /// <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
                                        ));
                    }
                }
            }
        }
Exemplo n.º 5
0
 /// <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);
 }
Exemplo n.º 6
0
        /// <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
                                    ));
                }
            }
        }