示例#1
0
        ////////////////

        public static IList <int> GetAvailableRecipesOfIngredients(Player player, IEnumerable <Item> ingredients)
        {
            int[] _;
            IDictionary <int, int> __;
            IList <int>            addedRecipeIndexes = new List <int>();
            ISet <int>             possibleRecipeIdxs = new HashSet <int>();

            foreach (Item ingredient in ingredients)
            {
                IEnumerable <int> ingredientRecipeIdxs = RecipeIdentityHelpers.GetRecipeIndexesOfItem(ingredient.netID);

                foreach (int recipeIdx in ingredientRecipeIdxs)
                {
                    possibleRecipeIdxs.Add(recipeIdx);
                }
            }

            foreach (int recipeIdx in possibleRecipeIdxs)
            {
                Recipe recipe = Main.recipe[recipeIdx];
                if (recipe.createItem.type == 0)
                {
                    continue;
                }                                                               // Just in case?

                if (RecipeHelpers.GetRecipeFailReasons(player, recipe, out _, out __, ingredients) == 0)
                {
                    addedRecipeIndexes.Add(recipeIdx);
                }
            }

            return(addedRecipeIndexes);
        }
 public static bool ItemHasIngredients(Item item, ISet <int> ingredients, int minStack)
 {
     return(RecipeHelpers.ItemHasIngredients(item.type, ingredients, minStack));
 }