/// <summary>
 /// add a recipe item which is needed to craft this item
 /// </summary>
 /// <param name="item">the referenc to the item</param>
 /// <param name="quantity">the amount which is needed for the craft</param>
 public void AddRecipeItem(FactorioItem item, int quantity)
 {
     if (!Recipe.ContainsKey(item))
     {
         Recipe.Add(item, quantity);
     }
 }
        /// <summary>
        /// Get copy of this item
        /// </summary>
        /// <returns></returns>
        public FactorioItem GetCopy()
        {
            FactorioItem copyItem = new FactorioItem(this.Id)
            {
                Name                = this.Name,
                CraftingOutput      = this.CraftingOutput,
                CraftingTime        = this.CraftingTime,
                Productivity        = this.Productivity,
                DefaultCraftingType = this.DefaultCraftingType,
                ImagePath           = this.ImagePath
            };

            foreach (var recipeItem in this.Recipe)
            {
                copyItem.AddRecipeItem(recipeItem.Key, recipeItem.Value);
            }

            return(copyItem);
        }
 /// <summary>
 /// Remove an item from the recipe
 /// </summary>
 /// <param name="item"></param>
 public void RemoveRecipeItem(FactorioItem item)
 {
     Recipe.Remove(item);
 }