namespace Eco.Mods.TechTree
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using Eco.Gameplay.Blocks;
    using Eco.Gameplay.Components;
    using Eco.Gameplay.Components.Auth;
    using Eco.Gameplay.DynamicValues;
    using Eco.Gameplay.Economy;
    using Eco.Gameplay.Housing;
    using Eco.Gameplay.Interactions;
    using Eco.Gameplay.Items;
    using Eco.Gameplay.Minimap;
    using Eco.Gameplay.Objects;
    using Eco.Gameplay.Players;
    using Eco.Gameplay.Property;
    using Eco.Gameplay.Skills;
    using Eco.Gameplay.Systems.TextLinks;
    using Eco.Gameplay.Pipes.LiquidComponents;
    using Eco.Gameplay.Pipes.Gases;
    using Eco.Gameplay.Systems.Tooltip;
    using Eco.Shared;
    using Eco.Shared.Math;
    using Eco.Shared.Localization;
    using Eco.Shared.Serialization;
    using Eco.Shared.Utils;
    using Eco.Shared.View;
    using Eco.Shared.Items;
    using Eco.Gameplay.Pipes;
    using Eco.World.Blocks;
    
    [Serialized]    
    [RequireComponent(typeof(PropertyAuthComponent))]
    [RequireComponent(typeof(MinimapComponent))]
    public partial class TallBayWindow2Object : 
        WorldObject    
    {
        public override string FriendlyName { get { return "Tall Bay Window 2"; } } 


        protected override void Initialize()
        {
            this.GetComponent<MinimapComponent>().Initialize("Crafting");                                 



        }

		static TallBayWindow2Object()
		{
            WorldObject.AddOccupancy<TallBayWindow2Object>(new List<BlockOccupancy>(){
                new BlockOccupancy(new Vector3i(0, 1, 0), typeof(LargeMetalDoor2ObjectBlock)),
                new BlockOccupancy(new Vector3i(0, 0, 0), typeof(LargeMetalDoor2ObjectBlock)),
                });
        }
		
        public override void Destroy()
        {
            base.Destroy();
        }
       
    }

    [Serialized]
    public partial class TallBayWindow2Item : WorldObjectItem<TallBayWindow2Object>
    {
        public override string FriendlyName { get { return "Tall Bay Window 2"; } } 
        public override string Description  { get { return  "Tall Bay Window 2."; } }

        static TallBayWindow2Item()
        {
            
        }

    }


    [RequiresSkill(typeof(GlassworkingSkill), 1)] 
    public partial class TallBayWindow2Recipe : Recipe
    {
        public TallBayWindow2Recipe()
        {
            this.Products = new CraftingElement[]
            {
                new CraftingElement<TallBayWindow2Item>(),
            };

            this.Ingredients = new CraftingElement[]
            {
                new CraftingElement<SandItem>(typeof(GlassProductionEfficiencySkill), 16, GlassProductionEfficiencySkill.MultiplicativeStrategy),
                new CraftingElement<IronIngotItem>(typeof(BasicSmeltingEfficiencySkill), 20, BasicSmeltingEfficiencySkill.MultiplicativeStrategy), 
                new CraftingElement<TiltedCastsItem>(typeof(CastingEfficiencySkill), 20, CastingEfficiencySkill.MultiplicativeStrategy),   				
            };
            SkillModifiedValue value = new SkillModifiedValue(25, GlassProductionSpeedSkill.MultiplicativeStrategy, typeof(GlassProductionSpeedSkill), Localizer.Do("craft time"));
            SkillModifiedValueManager.AddBenefitForObject(typeof(TallBayWindow2Recipe), Item.Get<TallBayWindow2Item>().UILink(), value);
            SkillModifiedValueManager.AddSkillBenefit(Item.Get<TallBayWindow2Item>().UILink(), value);
            this.CraftMinutes = value;   
            this.Initialize("Tall Bay Window 2", typeof(TallBayWindow2Recipe));
            CraftingComponent.AddRecipe(typeof(KilnObject), this);
        }
    }
}