Ejemplo n.º 1
0
        /// <summary>
        /// Finds first item of a given type belonging to a player (including their bank storage).
        /// </summary>
        /// <param name="player"></param>
        /// <param name="itemType"></param>
        /// <param name="skipArmors"></param>
        /// <param name="skipBanks"></param>
        /// <returns></returns>
        public static Item FindFirstPlayerItemOfType(Player player, int itemType, bool skipArmors = false, bool skipBanks = false)
        {
            int itemIdx;
            var itemTypeSet = new HashSet <int> {
                itemType
            };

            itemIdx = ItemFinderHelpers.FindIndexOfFirstOfItemInCollection(player.inventory, itemTypeSet);
            if (itemIdx != -1)
            {
                return(player.inventory[itemIdx]);
            }

            if (!skipArmors)
            {
                itemIdx = ItemFinderHelpers.FindIndexOfFirstOfItemInCollection(player.armor, itemTypeSet);
                if (itemIdx != -1)
                {
                    return(player.armor[itemIdx]);
                }
            }

            if (!skipBanks)
            {
                if (player.chest >= 0)                      // Player's current chest
                {
                    itemIdx = ItemFinderHelpers.FindIndexOfFirstOfItemInCollection(Main.chest[player.chest].item, itemTypeSet);
                    if (itemIdx != -1)
                    {
                        return(Main.chest[player.chest].item[itemIdx]);
                    }
                }
                if (player.chest == -2)                     // Piggy bank
                {
                    itemIdx = ItemFinderHelpers.FindIndexOfFirstOfItemInCollection(player.bank.item, itemTypeSet);
                    if (itemIdx != -1)
                    {
                        return(player.bank.item[itemIdx]);
                    }
                }
                if (player.chest == -3)                     // Safe
                {
                    itemIdx = ItemFinderHelpers.FindIndexOfFirstOfItemInCollection(player.bank2.item, itemTypeSet);
                    if (itemIdx != -1)
                    {
                        return(player.bank2.item[itemIdx]);
                    }
                }
                if (player.chest == -4)                     // ..whatever this is
                {
                    itemIdx = ItemFinderHelpers.FindIndexOfFirstOfItemInCollection(player.bank3.item, itemTypeSet);
                    if (itemIdx != -1)
                    {
                        return(player.bank3.item[itemIdx]);
                    }
                }
            }

            return(null);
        }
Ejemplo n.º 2
0
        }               // <- Used to be 'FindChangesAt'

        /// <summary>
        /// Counts total valid items of a set of item types within a given collection.
        /// </summary>
        /// <param name="collection"></param>
        /// <param name="itemTypes"></param>
        /// <returns></returns>
        public static int CountTotalOfEach(Item[] collection, ISet <int> itemTypes)
        {
            var set   = ItemFinderHelpers.FindIndexOfEach(collection, itemTypes);
            int total = 0;

            foreach (int idx in set)
            {
                total += collection[idx].stack;
            }
            return(total);
        }