Пример #1
0
        private static List <Item> GetAvailableItemsRecursive(ref List <Item> inventoryState, ItemRecipe recipe)
        {
            var result    = new List <Item>();
            var tmpRecipe = recipe.GetItems();

            foreach (var component in tmpRecipe)
            {
                if (component == null)
                {
                    continue;
                }
                var idx = inventoryState.FindIndex(i => i != null && i.ItemType == component);
                if (idx == -1)
                {
                    result = result.Concat(GetAvailableItemsRecursive(ref inventoryState, component.Recipe)).ToList();
                }
                else
                {
                    result.Add(inventoryState[idx]);
                    // remove entry in case that the recipe has the same item more than once in it
                    inventoryState[idx] = null;
                }
            }
            return(result);
        }
Пример #2
0
 private void CreateRecipe(ItemManager manager)
 {
     Recipe = ItemRecipe.FromItemType(this, manager);
 }
Пример #3
0
        public List <Item> GetAvailableItems(ItemRecipe recipe)
        {
            var tempInv = new List <Item>(_inventory.GetBaseItems());

            return(GetAvailableItemsRecursive(ref tempInv, recipe));
        }